Executive Summary

What the scan proved

Start with the thesis and highlighted findings, then move into the full findings inventory and supporting threat model.

Why this matters

Kuzushi Security's automated scan of Ligolo-ng, a widely-used offensive network tunneling tool, uncovered 27 true positive findings across 10 scanner strategies — including critical race conditions that crash the agent process, absent mutual authentication between proxy and agent enabling session hijacking, and default credentials on the Web API — demonstrating fundamental security gaps in a tool deployed across red team operations worldwide.

27 true positives38% precision22 affected files

Featured findings

Scan parameters

Low-frequency methodology and run configuration details.

Expand
Strategiessemgrep, codeql, threat-hunt, threat-model-randori, agentic, auth-logic-detect, race-condition-detect, supply-chain-detect, taint-iris, security-misconfig-detect
Modelclaude-sonnet-4-6
Severityerror, warning, info
VerifyYes
BranchHEAD

Findings

Primary findings workspace

Keep the inventory visible first. Open a finding for evidence, verification, and remediation detail when it becomes the next question.

Finding inventory (27 of 71)

Severity filtering stays close to the primary list, with deeper analysis tools tucked below.

Showing 120 of 27

Analysis tools

Treemap, severity mix, verdict mix, and strategy heatmap live here when you need deeper pattern analysis.

Expand

Vulnerability Heatmap

22 files · sized by finding count · colored by severity
handler.go11 findingsapp.go9 findingsdaemon.go9 findingscontroller.go9 findingsrelay.go4 findingsagent.go3 findingscertmanager.go3 findingsconfig.go3 findingslisteners.go2 findingsweb.go2 findingschain.go2 findingscertmanager.go2 findingsmain.go2 findingshandlers.go2 findingspinger.go1 findingcodenames.go1 findingproxy.go1 findingmain.go1 findingcli.go1 findingMakefile1 findingapp.go1 findingrelay.go1 finding

By Severity

18
22
31
critical (0)high (18)medium (22)low (31)

By Verdict

27
10
34
● True Positive (27)● Needs Review (10)● False Positive (34)

Strategy x Severity

Click a cell to filter

Threat Model

Threat model workspace

Use the PASTA flow as the primary walkthrough. Supporting inventory and deeper intelligence stay below it so only one major view competes for attention at a time.

7-Step PASTA Threat Model

Process for Attack Simulation and Threat Analysis — a risk-centric methodology mapping business objectives through attack simulation to prioritized remediation.

System decomposition — objectives, components, trust boundaries, and data flows.

Maps business-critical objectives for Ligolo-ng's encrypted tunneling and multi-hop relay operations.

S1 Business Objectives and Security Requirements
Business Objectives
BO-01critical
Reliable encrypted tunnel establishment
BO-02critical
Transparent network-layer pivoting
BO-03high
Operational security (opsec)
BO-04high
Multi-hop relay chaining
BO-05medium
Operator management interface
BO-06high
Automatic agent reconnection and state recovery
BO-07medium
Cross-platform agent deployment
Security Requirements
SR-01general
Mutual authentication between proxy and agent
SR-02general
Agent must authenticate the proxy before executing commands
SR-03general
Web API must enforce strong, non-default credentials
SR-04general
JWT signing secret must be stored securely
SR-05general
TLS minimum version must be TLS 1.2 or higher on all transports
SR-06general
Rate limiting and brute-force protection on authentication endpoints
SR-07general
Agent must not blindly execute AgentKillRequestPacket
SR-08general
Input validation on all protocol packet fields
SR-09general
CORS policy must be restrictive and not allow arbitrary origins
SR-10general
Sensitive private keys must not be written to world-readable files

Supporting inventory

Actors, components, and data flows that back the threat model.

Expand
Architecture Inventory

Supporting Model Data

Raw model entities that support the DFD and decomposition stages.
ActorTypeTrust
Red Team Operatorhumanfully trusted
Ligolo-ng Agentautomated_processtrusted within channel
Internal Network Host (Target)external_systemuntrusted
Downstream Relay Agentautomated_processtrusted within channel
Web API Client (Browser / Script)human_or_automatedtrusted after auth
Unauthenticated Network Attackerthreat_actoruntrusted
Rogue / Hijacked Agentthreat_actoruntrusted

Supporting attack-path network

Open the actor network only when you need the broader relationship map beyond the primary attack graph.

Expand
Actors stay on the left as the primary trust anchorsRelated modeled threats branch to the right by evidence overlap

Compliance

Compliance posture

Review the mapped control gaps after you understand the findings and threat model context.

Ghidra's compliance posture is immature (1.9/5) with 73% of controls assessed. The most critical gap is unsuccessful logon attempts (AC-7) . Additional high-priority findings include privileged access rights (A.8.2) and data masking (A.8.11).
73%COVERAGE
outer coverage|inner maturity
Implemented
Partial
Not Implemented
Not Assessed
N/A
Critical
Controls Assessed
38
Implemented
0%
Coverage
73%
Avg Maturity
1.9/ 5
Critical Gaps
1
Total Findings
19

Control Coverage by Family

A.8Technological Controls
0/11M1.7
A.5Organizational Controls
0/1M3.0

Priority Gaps

criticalAC-7
Unsuccessful Logon Attempts

Why: No rate limiting, lockout, or attempt tracking. The 500 status code for auth failure also leaks implementation detail.
Fix:
highA.8.2
Privileged access rights

No RBAC implementation; No privilege separation between read and write operations; No per-agent access restrictions

Why: Single auth middleware with no role checks. JWT claims contain only 'username' and 'exp' — no role field.
Fix: Implement role-based access control with operator/viewer roles; Add role claims to JWT tokens; Gate destructive operations behind admin role
highA.8.11
Data masking

No data masking on API responses; Secrets in plaintext config file; No field-level access control on sensitive data

Why: Full agent data structure serialized to JSON without filtering. Includes sensitive network topology information.
Fix: Implement response DTOs with field filtering; Move secrets to environment variables or keyring; Restrict config file permissions
highA.8.12
Data leakage prevention

CLI history records target network information; No DLP controls on log output; Agent info packets expose full network topology

Why: Command history persisted to disk in plaintext. Contains operational intelligence about target networks.
Fix: Add configurable history file permissions and disable option; Implement log sanitization for sensitive fields; Consider redacting network topology details in logs
highA.8.10
Information deletion

No secure deletion of private keys after session end; No data retention policy for logs or history; No cleanup mechanism for cached certificates

Fix: Implement secure deletion of private key cache on shutdown; Add configurable log rotation and retention; Provide a 'cleanup' command to securely erase operational artifacts
highA.8.16
Monitoring activities

No unauthenticated health check endpoint; No metrics collection (Prometheus, StatsD, etc.); No anomaly detection for agent patterns; No alerting framework

Fix: Add /health or /readyz endpoint without auth for monitoring; Implement basic metrics (connection counts, tunnel throughput); Add watchdog alerting for unexpected agent disconnections
highAC-6
Least Privilege

No privilege levels; No read-only access mode; No per-agent access scoping

Fix: Implement role-based privilege levels; Add read-only API user role; Scope agent access per user/team
highAU-9
Protection of Audit Information

Log files with default permissions; No log integrity verification; No tamper detection

Why: os.Create uses mode 0666 (masked by umask). No explicit restrictive permissions set.
Fix: Set restrictive permissions on log files (0600); Implement log file integrity checksums; Consider append-only log storage
highSI-4
System Monitoring

No health check endpoint; No metrics collection; No anomaly detection; No alerting

Fix: Add unauthenticated /health endpoint; Implement Prometheus metrics; Add basic alerting for agent disconnections
highRA-5
Vulnerability Monitoring and Scanning

No SAST in CI; No dependency scanning; No dependabot/renovate

Why: CI pipeline limited to build/release. No security scanning step.
Fix: Add govulncheck to CI; Add gosec SAST; Enable dependabot for Go modules

Control Assessment Matrix

ControlTitleStandardStatusMaturityFindings
A.8.5
Secure authentication
ISOPartial
3/5
3
A.8.2
Privileged access rights
ISONot Implemented
1/5
1
A.8.3
Information access restriction
ISOPartial
2/5
A.8.24
Use of cryptography
ISOPartial
3/5
3
A.8.21
Security of network services
ISOPartial
2/5
4
A.8.11
Data masking
ISONot Implemented
1/5
2
A.8.12
Data leakage prevention
ISONot Implemented
1/5
1
A.8.10
Information deletion
ISONot Implemented
1/5
A.5.14
Information transfer
ISOPartial
3/5
1
A.8.15
Logging
ISOPartial
2/5
2
A.8.16
Monitoring activities
ISONot Implemented
1/5
A.8.28
Secure coding
ISOPartial
2/5
2

Cross-Standard Mappings

ISO 27001NIST 800-53Relationship
A.8.5IA-2equivalent
A.8.2AC-6equivalent
A.8.3AC-3equivalent
A.8.24SC-13equivalent
A.8.21SC-7equivalent
A.8.15AU-2equivalent
A.8.11SC-28equivalent
A.8.12SC-28equivalent
A.8.28SI-10equivalent
A.8.16SI-4equivalent
A.8.10MP-6equivalent
A.5.14SC-8equivalent