Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain Ech0 admin credentials
-
DeliveryAuthenticate to admin panel
-
ExploitUpload SVG with embedded JavaScript payload
-
InstallFile persisted at public /api/files/images/<key>.svg
-
C2Distribute or embed file URL targeting victim users
-
ExecuteVictim browser loads SVG in application origin
-
ImpactJavaScript executes and exfiltrates session cookies
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File type validation, storage isolation
MITRE ATT&CK
2 techniques across 2 tactics: Command and Control, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated session with Ech0 administrative privileges (PR:H confirmed by CVSS 4.0 vector). For the primary SVG variant, no non-default configuration is required - image/svg+xml is included in the default AllowedTypes list, making any unpatched default Ech0 deployment before 4.4.3 vulnerable without any configuration change by the operator. For the secondary Content-Type spoofing variant, the attacker need only control the multipart header value in the upload request, which requires no special server configuration. Once a malicious file is uploaded, no authentication is required for victim-side execution - the static file route /api/files/ is served outside authentication middleware, meaning any user (authenticated or anonymous) who accesses the file URL triggers the payload. Exploitation is bounded by the admin credential prerequisite on the upload side and passive user interaction (UI:P) on the victim side; the absence of CSP headers removes a key browser-side limiting factor. |
| Impact | The CVSS 4.0 score of 4.8 accurately reflects the elevated privilege prerequisite (PR:H): exploitation requires a compromised or malicious administrator account, positioning this as an insider threat or post-compromise lateral-impact scenario rather than an opportunistic external attack. The scope change captured in the subsequent-system metrics (SC:L/SI:L) is the most operationally significant risk factor - a single admin upload produces a persistent payload that affects every user who accesses the URL, with no authentication required to trigger execution. EPSS data was not included in the provided intelligence, so probabilistic exploitation likelihood cannot be quantified; no CISA KEV listing and no confirmed public exploit code are present, further supporting a lower urgency posture for most organizations. The absence of CSP headers eliminates a common browser-side defense layer, meaning impact is not mitigated at the client. The conflict between the admin-privilege requirement and the broad downstream user impact means risk assessment must be scoped by trust model: organizations that grant admin access broadly or have shared credentials should treat this with greater urgency than those with tightly controlled admin roles. Overall, this is a real vulnerability with bounded exploitability but meaningful cross-user blast radius once triggered. |
| Exploit ScenarioDerived | An attacker who has obtained administrator credentials - through phishing, credential stuffing, or insider access - logs into Ech0 and uploads a crafted SVG file containing an embedded script element that exfiltrates the document.cookie value to an attacker-controlled endpoint; since image/svg+xml is permitted by default, no Content-Type manipulation is required. The file is stored with its original .svg extension and immediately accessible to all users at /api/files/images/<key>.svg via the unauthenticated static route. The attacker distributes the URL to target users (or embeds it in application content), and any user who navigates to the file has their session cookie silently transmitted to the attacker, enabling full session takeover. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 25, 2026
Stored cross-site scripting in Ech0 before 4.4.3 allows authenticated administrators to upload SVG or HTML files containing arbitrary JavaScript that executes in the application origin when accessed by any user, enabling session hijacking and credential exfiltration. The file upload handler at internal/service/file/file.go trusts the client-supplied multipart Content-Type header without server-side magic byte detection or extension validation, and SVG uploads are permitted in the default AllowedTypes configuration without any bypass required. Uploaded files are served publicly without authentication via a gin.Static route, meaning any user - authenticated or not - who visits the file URL triggers execution. Vendor-released patch 4.4.3 is available; no public exploit has been identified at time of analysis.
RemediationAI
Upgrade Ech0 to version 4.4.3 or later; this is the vendor-confirmed fixed release per package metadata and the security advisory at https://github.com/lin-snow/Ech0/security/advisories/GHSA-69hx-63pv-f8f4. If immediate upgrade is not feasible, remove image/svg+xml from the AllowedTypes configuration list in internal/config/config.go to block the primary no-spoofing SVG variant; note this will disable all SVG hosting in the application. As a supplementary control, deploy a reverse proxy (nginx, Caddy, or similar) that injects Content-Security-Policy: default-src 'self' and X-Content-Type-Options: nosniff response headers on all /api/files/* responses; this limits JavaScript execution even if a malicious file is uploaded, though it does not address the root-cause unrestricted upload issue. Restrict Ech0 administrator account access to the minimum necessary personnel and enforce strong, unique credentials to reduce the likelihood of the PR:H prerequisite being satisfied by a third party.
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 (cpe:2.3:a:lin-snow:ech0) is a Go-based self-hosted application built on the Gin framework. The root cause is CWE-434 (Unrestricted Upload of File with Dangerous Type): the upload handler at internal/service/file/file.go lines 85-87 reads Content-Type exclusively from the multipart header field, which is fully attacker-controlled. The isAllowedType function (file.go:836-843) performs only exact string matching with no fallback to content inspection or MIME sniffing. The RandomKeyGenerator at internal/storage/keygen.go:41 preserves the original file extension in the storage key, meaning .svg and .html extensions are retained on disk. Files are then served via ctx.Engine.Static('api/files', root) at internal/router/modules.go:51, which is registered directly on the Gin engine outside any authentication middleware group. Go's http.ServeFile - used internally by gin.Static - derives the response Content-Type from the file extension via mime.TypeByExtension, so .svg files are served as image/svg+xml and .html files as text/html, both of which browsers execute as active content. No Content-Security-Policy or X-Content-Type-Options: nosniff headers are set, as verified in internal/router/middleware.go, removing all browser-side mitigation. Two exploitation variants exist: Variant 1 requires no spoofing because image/svg+xml is in the default AllowedTypes at internal/config/config.go:241; Variant 2 uses Content-Type header spoofing to upload HTML disguised as an image type.
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:H/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
Admin credentials required for upload (PR:H); scope changes (S:C) because any user accessing the stored file is impacted; no availability impact applies.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Ech0 before 4.4.3 contains a stored cross-site scripting vulnerability in the file upload endpoint that validates Content-Type using only client-supplied headers without server-side inspection. Attackers with admin privileges can upload SVG or HTML files containing JavaScript that executes in the application origin when accessed by any user, enabling session hijacking and data exfiltration.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.
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-65444
GHSA-mj42-9vh2-f8v3
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB