Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister or obtain non-admin account
-
DeliveryAuthenticate and retrieve valid JWT
-
ExploitSend GET /api/system/logs or connect WS /ws/system/logs
-
ExecutionReceive structured log stream with internal paths and stack traces
-
ImpactUse reconnaissance data to plan targeted follow-on attack
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a valid authenticated session on the target Ech0 instance - any account, including one created via the public registration endpoint, satisfies this requirement since non-admin users are provisioned with IsAdmin: false and IsOwner: false. No special configuration, non-default deployment mode, or elevated privilege is needed beyond basic authentication. The WebSocket endpoint (WS /ws/system/logs) has a marginally lower bar than the HTTP endpoints because WSRouterGroup carries no middleware; only ParseToken validation inside the handler is applied. What limits exploitation is the requirement for a valid JWT: unauthenticated external actors cannot reach the endpoints. Instances with user registration disabled and no compromised credentials are not reachable by external attackers through this specific vector. |
| Impact | The CVSS 4.0 score of 5.3 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L) accurately captures the real-world risk profile: network-reachable, low complexity, but requiring a valid authenticated session, with only partial confidentiality impact. The vulnerability is not in CISA KEV and no public exploit code is known, limiting immediate opportunistic exploitation. The primary risk is reconnaissance: exposed stack traces, internal file paths, and module names lower the barrier for targeted follow-on attacks against the same instance. No EPSS score was provided in the input data - exploitation probability cannot be quantified from available signals. The WebSocket endpoint (WSRouterGroup) is notably broader in exposure than the HTTP endpoints because it has no middleware at all, relying solely on ParseToken called inside the handler; this means the authorization gap is technically wider for the WS path. Overall, this is a real and easily triggered vulnerability for any registered non-admin user, but its impact ceiling is information disclosure rather than direct system compromise. |
| Exploit ScenarioDerived | An attacker who registers a non-admin account on an Ech0 instance - or who compromises any low-privilege credential - authenticates to obtain a valid JWT, then issues a GET request to /api/system/logs or connects to the WebSocket endpoint WS /ws/system/logs. The server returns a stream of structured log entries containing internal Go file paths (caller field), module names, error messages, and application state, which the attacker uses to map the internal codebase structure and identify error-prone modules for targeted follow-on exploitation. No public proof-of-concept code is required; the attack is straightforward HTTP/WebSocket interaction with a valid session token. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 25, 2026
Log endpoint access control in Ech0 before 4.4.3 is broken for any authenticated non-admin user, exposing real-time and historical server logs via three unguarded API endpoints. The router registers GET /api/system/logs, GET /api/system/logs/stream, and WS /ws/system/logs under middleware that validates JWT signatures but never checks role or scope - a pattern inconsistent with every other admin-restricted route in the codebase. Disclosed log data includes internal file paths, error stack traces, Go module names, and structured application state fields that facilitate reconnaissance for follow-on attacks; no public exploit is identified at time of analysis.
RemediationAI
Upgrade Ech0 to version 4.4.3 or later, which is the vendor-released patch as confirmed by the GitHub Security Advisory GHSA-w8jj-cwmc-wgq2 (https://github.com/lin-snow/Ech0/security/advisories/GHSA-w8jj-cwmc-wgq2) and package fix metadata. If an immediate upgrade is not possible, restrict access to the three affected endpoints (GET /api/system/logs, GET /api/system/logs/stream, WS /ws/system/logs) at the reverse-proxy or firewall layer so only trusted admin-sourced IPs can reach them - this trades operational convenience for access control enforcement. As an application-layer workaround, adding RequireScopes(authModel.ScopeAdminSettings) middleware to the dashboard route registrations in internal/router/dashboard.go mirrors the pattern used in settings.go, but this requires a code change and redeployment. Disabling user self-registration (if not required) reduces the pool of potential non-admin attackers, though it does not eliminate the vulnerability for existing non-admin accounts.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Ech0 is a Go web application (CPE: cpe:2.3:a:lin-snow:ech0) whose router organizes endpoints into AuthRouterGroup (JWT-validated) and WSRouterGroup (no middleware). JWTAuthMiddleware confirms token validity and sets viewer context but does not enforce any privilege level. Admin-gated routes in settings.go and other modules consistently apply RequireScopes(authModel.ScopeAdminSettings) as an additional middleware layer; the dashboard route file (internal/router/dashboard.go:7-8) omits this for all three log endpoints. The handler (internal/handler/dashboard/dashboard.go:29-62) and service layer (internal/service/dashboard/dashboard.go:21-27) contain zero authorization checks, contrasting with other services that call ensureAdmin() or requireAdmin(). The LogEntry struct (internal/util/log/log.go:78-87) serializes caller file paths, module names, log levels, and arbitrary structured fields directly into JSON responses. CWE-862 (Missing Authorization) is the precise root cause - authentication is present, but the authorization decision is entirely absent for this resource class.
Know when Ech0 gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable endpoint requires only a valid low-privilege JWT; no integrity or availability impact, only partial log confidentiality disclosure.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Ech0 before 4.4.3 lacks authorization checks on system log endpoints allowing any authenticated non-admin user to read and stream all server logs. Attackers can access historical logs and real-time log streams via GET /api/system/logs, GET /api/system/logs/stream, and WS /ws/system/logs to gather reconnaissance data including internal file paths, error stack traces, and application state.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Persistent authentication bypass in Ech0 (lin-snow's self-hosted lightweight publishing/memo app) before 4.7.3 lets an a
OAuth redirect URI validation in Ech0 through 4.5.6 allows session hijacking via exchange-code theft by exploiting incom
Authorization bypass in Ech0 before 4.5.1 allows any authenticated non-admin user to invoke privileged admin endpoints b
Denial of service in Ech0 before 5.0.1 allows unauthenticated remote attackers to saturate server CPU by exploiting a qu
Privilege escalation in Ech0 before 4.4.3 allows an attacker holding an admin's profile:read access token to change the
Server-side request forgery in Ech0 before version 4.7.3 allows authenticated users to pivot through the application ser
Scope enforcement in Ech0 4.3.4 and earlier is opt-in at the route level, meaning privileged admin routes that omit the
Missing administrator authorization on dashboard log endpoints in Ech0 before 4.4.3 allows any authenticated low-privile
Scope enforcement bypass in Ech0's comment panel admin API allows any holder of a valid admin-issued access token - rega
Unauthenticated metric inflation in Ech0 before 4.7.3 allows any remote attacker to arbitrarily increment the fav_count
Unauthenticated remote attackers can increment the fav_count of any echo - including private ones - in Ech0 through 4.5.
Ech0 before version 4.7.3 exposes guest commenter email addresses to unauthenticated remote callers via public comment-l
EUVD-2026-65445
GHSA-vw9j-c9ff-mwf8
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB