Skip to main content

Ech0 EUVDEUVD-2026-65450

| CVE-2026-79664 CRITICAL
Insufficient Session Expiration (CWE-613)
2026-08-25 VulnCheck GHSA-3r5q-vfpj-wprr
9.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Steal or harvest never-expire access token
  2. Delivery
    Replay token to Ech0 API
  3. Exploit
    Middleware accepts JWT lacking exp claim
  4. Execution
    Victim logout/admin-delete fails to revoke
  5. Impact
    Maintain perpetual authenticated access

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session expiration enforcement
Exploitation Conditions

The specific precondition is that a token was created with Ech0's 'never expire' (NEVER_EXPIRY / expiry=0) option AND that token has been leaked to or stolen by the attacker - this is the AT:P attack requirement in the CVSS vector. The attacker needs no credentials of their own (PR:N) and no user interaction (UI:N), and the token works remotely over the network (AV:N). What LIMITS exploitation: only never-expire tokens are vulnerable (default/normal tokens with an exp claim are properly revoked), and the attacker must first obtain such a token out-of-band, which raises complexity (AC:H). Neither logout, admin token deletion, nor RevokeToken will stop a valid stolen never-expire token; the only condition that ends access is rotation of the JWT signing secret.

Impact

Signals are mixed and require judgment. The published CVSS 4.0 base score is 9.1 (critical) with VC:H/VI:H, reflecting the severe confidentiality and integrity consequence of perpetual authenticated access, but the vector itself tempers likelihood with AC:H and AT:P - exploitation is not turnkey. Crucially, the vulnerability is a post-compromise persistence/failure-to-revoke issue: an attacker must FIRST obtain a valid never-expire token (theft, logging, backup exposure, or a separate leak), which is the real gating condition rather than a network-reachable memory-corruption bug. There is no CISA KEV entry and no POC in the supplied data, and no EPSS score was provided, so exploitation-probability signals are absent - this reads as a serious latent-risk/hardening issue rather than a mass-exploited remote flaw. The defensive priority is nonetheless high for any operator who has issued never-expire tokens, because the impact is total and long-lived and normal revocation gives a false sense of safety (logout appears to fail with a 500, and admin deletion silently leaves the token usable). Missing data to flag: the description states 'Ech0 before 4.7.3' while the Go package metadata lists the fix as pseudo-version 1.4.8-0.20260503041146-eab62379c795 - verify the correct release tag with the vendor advisory before remediating.

Exploit ScenarioDerived

An attacker obtains a valid Ech0 access token that was created with the 'never expire' option - for example harvested from browser storage, a proxy log, a leaked backup, or a compromised client. Because the token has no exp claim and every revocation path fails, the victim's logout and even the admin's 'Delete token' action do not stop it, so the attacker replays the token against the API and retains full authenticated access indefinitely. No public POC is referenced, but the failure modes are precisely documented in the GHSA advisory with exact file and line references.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 25, 2026

Persistent authentication bypass in Ech0 (lin-snow's self-hosted lightweight publishing/memo app) before 4.7.3 lets an attacker who has stolen a 'never-expire' access token retain valid authenticated access indefinitely. Because such tokens carry no JWT 'exp' claim, all three revocation paths fail - logout panics on the nil ExpiresAt field, RevokeToken short-circuits when remaining TTL is zero, and admin 'Delete token' never blacklists the JTI - so a leaked token stays cryptographically valid until the operator rotates the signing key. No public exploit identified at time of analysis; there is no CISA KEV listing and no POC referenced in the provided intelligence.

RemediationAI

Upgrade Ech0 to 4.7.3 (Go module fixed version 1.4.8-0.20260503041146-eab62379c795, commit eab62379c795c3f4850a9ca938ae3f27d7171541); confirm the exact release tag via the GHSA advisory at https://github.com/lin-snow/Ech0/security/advisories/GHSA-fpw6-hrg5-q5x5. Patching alone does NOT invalidate already-issued never-expire tokens, so also rotate the JWT signing secret across the instance to cryptographically invalidate every existing token (side effect: this forces all users and integrations to re-authenticate and breaks any legitimately-configured never-expire API tokens, which must be reissued). As an immediate compensating control before/if you cannot patch, audit and delete all never-expire access tokens and stop issuing them (prefer bounded-lifetime tokens so the blacklist mechanism actually functions), and monitor for HTTP 500 responses on the logout endpoint as an indicator of the nil-panic path being hit. If the JWT secret is stored in configuration, restrict read access to it, since secret rotation is the only reliable kill-switch until the fix is deployed.

Affected VersionsENISA

Ech0 0 <4.7.3

Affected Packages

go github.com/lin-snow/ech0 fix: 1.4.8-0.20260503041146-eab62379c795
euvd ech0 fix: 4.7.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

The flaw lives in Ech0's JWT session layer (github.com/lin-snow/Ech0). At internal/util/jwt/jwt.go:103-105 an access token created with the NEVER_EXPIRY option (expiry=0) skips setting claims.ExpiresAt, producing a JWT with no 'exp' claim; the jwt/v5 parser does not require 'exp' by default, so the middleware at internal/middleware/auth.go accepts it. Revocation is implemented as a JTI blacklist cache keyed to the token's remaining TTL, which structurally cannot represent an unbounded token. This is a textbook CWE-613 (Insufficient Session Expiration): the session/token cannot be reliably invalidated once issued. The three concrete failure sites are logout at internal/handler/auth/auth.go:154/:163 (dereferences claims.ExpiresAt.Time → nil panic → Gin Recovery returns HTTP 500 before blacklisting), RevokeToken at internal/repository/auth/auth.go:45-50 (returns early when remainTTL <= 0), and the admin delete at internal/service/setting/access_token_service.go:183-185 (removes the DB row but never calls RevokeToken). CPE identifies the single affected product as cpe:2.3:a:lin-snow:ech0.

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 9.1 CRITICAL
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 7.4 HIGH

Attacker needs no own credentials (PR:N) but must first obtain a leaked never-expire token, a real prerequisite (AC:H); stolen session yields full read/write, no availability impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

Lifecycle Timeline

2
Patch available
Aug 25, 2026 - 13:02 EUVD
CVE Published
Aug 25, 2026 - 11:33 cve.org
CRITICAL 9.1

DescriptionCVE.org

Ech0 before 4.7.3 fails to properly revoke access tokens created with never-expire option, allowing attackers to maintain perpetual authenticated access after token theft. Three independent revocation mechanisms fail: logout panics on nil ExpiresAt field, RevokeToken skips when remainTTL is zero, and admin delete does not blacklist the JTI, leaving stolen tokens cryptographically valid until JWT secret rotation.

Executive ViewAI

Why It Matters

Ech0 versions before 4.7.3 contain a critical authentication bypass where stolen access tokens with no expiration date remain permanently valid, as all token revocation mechanisms fail due to missing JWT expiration claims. Organizations using Ech0 face indefinite unauthorized access to their publishing and memo systems if any access token is compromised, creating persistent data theft and integrity risks. This vulnerability is particularly severe for deployments storing sensitive organizational communications or confidential content.

Business Impact: Severe
Compensating Controls

Force immediate re-authentication of all Ech0 users to invalidate sessions. Implement strict network segmentation with IP whitelisting for Ech0 access. Enable comprehensive access logging and monitoring for suspicious token activity. Rotate all administrative signing keys immediately. Disable new token issuance until version 4.7.3 or later is available and deployed. If Ech0 stores sensitive data, disable the service entirely until patched. No vendor-released patch identified at time of analysis.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Low
niche self-hosted open-source memo/publishing app, minimal enterprise footprint
Social Media
1
Sightings
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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Total

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Ech0

View all
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

CVE-2026-77151 MEDIUM
6.3 Aug 20

Unsalted MD5 password hashing in Ech0's `MD5Encrypt` function (`internal/util/crypto/crypto.go`) stores credentials in a

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