Skip to main content

Ech0 EUVDEUVD-2026-65444

| CVE-2026-79670 MEDIUM
Unrestricted Upload of File with Dangerous Type (CWE-434)
2026-08-25 VulnCheck GHSA-mj42-9vh2-f8v3
4.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Obtain Ech0 admin credentials
  2. Delivery
    Authenticate to admin panel
  3. Exploit
    Upload SVG with embedded JavaScript payload
  4. Install
    File persisted at public /api/files/images/<key>.svg
  5. C2
    Distribute or embed file URL targeting victim users
  6. Execute
    Victim browser loads SVG in application origin
  7. Impact
    JavaScript 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Ech0 0 <4.4.3

Affected Packages

go github.com/lin-snow/ech0 fix: 4.4.3
euvd ech0 fix: 4.4.3

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

Vendor (VulnCheck) PRIMARY 4.8 MEDIUM
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
vuln.today AI 4.8 MEDIUM

Admin credentials required for upload (PR:H); scope changes (S:C) because any user accessing the stored file is impacted; no availability impact applies.

3.1 AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:H/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
High
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Aug 25, 2026 - 13:02 EUVD

DescriptionCVE.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

EPSS Score
0.1%
Top 96% exploitable
Prevalence
Low
small open-source self-hosted project, limited enterprise footprint
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

24
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +24
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

More in Ech0

View all
CVE-2026-79664 CRITICAL
9.1 Aug 25

Persistent authentication bypass in Ech0 (lin-snow's self-hosted lightweight publishing/memo app) before 4.7.3 lets an a

CVE-2026-79662 HIGH
8.8 Aug 25

OAuth redirect URI validation in Ech0 through 4.5.6 allows session hijacking via exchange-code theft by exploiting incom

CVE-2026-79665 HIGH
8.7 Aug 25

Authorization bypass in Ech0 before 4.5.1 allows any authenticated non-admin user to invoke privileged admin endpoints b

CVE-2026-79658 HIGH
8.7 Aug 25

Denial of service in Ech0 before 5.0.1 allows unauthenticated remote attackers to saturate server CPU by exploiting a qu

CVE-2026-79673 HIGH
8.5 Aug 25

Privilege escalation in Ech0 before 4.4.3 allows an attacker holding an admin's profile:read access token to change the

CVE-2026-79659 HIGH
8.3 Aug 25

Server-side request forgery in Ech0 before version 4.7.3 allows authenticated users to pivot through the application ser

CVE-2026-79667 HIGH
7.2 Aug 25

Scope enforcement in Ech0 4.3.4 and earlier is opt-in at the route level, meaning privileged admin routes that omit the

CVE-2026-79666 HIGH
7.1 Aug 25

Missing administrator authorization on dashboard log endpoints in Ech0 before 4.4.3 allows any authenticated low-privile

CVE-2026-79672 HIGH
7.0 Aug 25

Scope enforcement bypass in Ech0's comment panel admin API allows any holder of a valid admin-issued access token - rega

CVE-2026-79668 MEDIUM
6.9 Aug 25

Unauthenticated metric inflation in Ech0 before 4.7.3 allows any remote attacker to arbitrarily increment the fav_count

CVE-2026-79661 MEDIUM
6.9 Aug 25

Unauthenticated remote attackers can increment the fav_count of any echo - including private ones - in Ech0 through 4.5.

CVE-2026-79660 MEDIUM
6.9 Aug 25

Ech0 before version 4.7.3 exposes guest commenter email addresses to unauthenticated remote callers via public comment-l

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy