Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain JI onion address, auth access, API token
-
DeliveryReplay API session token against web UI
-
ExploitMutable prefix corruption confuses Redis session namespaces
-
ExecutionWeb UI accepts API session until expiry
-
ImpactAccess encrypted submissions, act broadly on sources
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
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 is strongly gated and requires the attacker to simultaneously possess three specific prerequisites named in the advisory: (1) access to the secret Journalist Interface (JI) Tor onion address, (2) the required authentication access to that interface, and (3) a recent, non-expired API session token. The underlying flaw is the SessionInterface's mutable session-key prefix (the API vs web prefix state persists across requests), present only in SecureDrop Server versions 2.5.0 through 2.15.x where API and web sessions were split in Redis. The reuse window is bounded to the API token's natural expiry of at most eight hours, and the corrupted prefix may also prevent logout from deleting the correct Redis session (though normal expiry still applies). Limiting factors: this is not remote-unauthenticated - it requires high privilege (PR:H) and significant prior compromise of the journalist/server, which is why the vendor rates complexity High; versions outside the 2.5.0-2.15.x range and patched 2.16.0 installs are not affected. Impact is limited to encrypted submissions (no plaintext exposure) and does not affect availability. |
| Impact | This is a genuinely medium/low-priority issue, not a high-CVSS scare. The CVSS 3.1 base score is 5.0 (AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:H/A:N), and every severity-raising signal is offset by a strong precondition: although the attack vector is Network (reachable over the Journalist Interface Tor hidden service), Attack Complexity is High and Privileges Required is High because the attacker must already hold the secret JI onion address, valid authentication access, AND a recent non-expired API session token. The GHSA advisory explicitly states the maintainers are not aware of any exploitation in the wild and that significant prior compromise is required. No EPSS score, no CISA KEV listing, and no public exploit code were provided in the input, so there is no signal of widespread or automated exploitation; exploitation status is 'no public exploit identified at time of analysis.' The vuln.today decision label is 'this_month' (not act_now/emergency), which is consistent with a real-but-gated issue: worth patching on a normal cycle rather than an emergency. The main caveat is that the integrity impact is High (a compromised journalist session grants broad action over source submissions), so for an organization whose JI is already partially compromised the residual risk is meaningful - but the chain of preconditions makes mass exploitation implausible. |
| Exploit ScenarioDerived | An adversary who has already compromised a journalist to the point of obtaining the secret Journalist Interface onion address, authentication access, and a currently valid API session token replays that API token against the web UI, where the mutable, cross-request session-key-prefix state in the SessionInterface lets Redis treat the API session as a valid web session until it naturally expires (at most eight hours). No public exploit code was identified in the input; the references are the vendor advisory, fix commit, and release, not weaponized PoC code. The attacker then performs broad actions on source submissions and can access encrypted (not plaintext) submissions through the web UI. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
SecureDrop Server 2.5.0 through 2.15.x allows an attacker who already holds the secret Journalist Interface onion address, journalist authentication, and a live API session token to replay that API token against the web UI until its natural expiry of at most eight hours. The root cause is a mutable session-key prefix in the Flask SessionInterface that persists across requests, corrupting the Redis namespace separation introduced in 2.5.0; the same corruption can stop logout from deleting the correct Redis session, though normal expiry still applies. Impact is bounded to encrypted submissions and journalist-side actions on source submissions - no plaintext disclosure and no availability effect - and no public exploit has been identified at time of analysis.
RemediationAI
Vendor-released patch: 2.16.0 - upgrade SecureDrop Server to 2.16.0 or later (release notes https://github.com/freedomofpress/securedrop/releases/tag/2.16.0; advisory https://github.com/freedomofpress/securedrop/security/advisories/GHSA-78xq-8jf3-gpfx; patch commit cbe60cd68b67f44ffdd44c364c71cc71b40acfb5). The available sources describe no separate configuration workaround: exploitability already presupposes the secret Journalist Interface onion address, valid journalist authentication, and a non-expired API session token, and any token reused this way stays bounded by its normal eight-hour expiry even when the corrupted prefix prevents logout from removing the Redis entry. Applying the 2.16.0 update is the remediation identified in the vendor advisory.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
SecureDrop Server is a Flask application served through mod_wsgi under Apache, with journalist sessions stored server-side in Redis since 2.5.0, when API and web sessions were split into separate namespaces so each could carry its own expiry and renewal policy. The vulnerable SessionInterface kept the Redis key prefix and signing salt as mutable attributes on the interface object: open_session() overwrote them with the api_ variants while handling an API request, and that mutated state survived into later requests - the fix commit explicitly notes the class must be immutable for consistent state across mod_wsgi workers. A following web UI request could therefore read and sign against the API-prefixed Redis key, so an API session token was accepted by the web UI, and save_session() could delete or rewrite the wrong key on logout. The 2.16.0 fix makes the web and API prefixes and salts Final, passes the salt explicitly into _get_signer() and _new_session(), and moves the is_api flag onto the ServerSideSession instance instead of the shared interface. CWE-863 (Incorrect Authorization) describes the namespace confusion that lets a token issued for one session class satisfy the other.
Know when Securedrop 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
AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:H/A:N
Reachable over the Tor JI (AV:N) but requires the onion address plus a valid API token and auth, so AC:H and PR:H; only encrypted data exposed (C:L), broad source actions (I:H), no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
SecureDrop is an open-source whistleblower submission system that media organizations can use to securely accept documents from, and communicate with anonymous sources. From 2.5.0 until 2.16.0, the Journalist Interface can accept an API session token against the web UI because its SessionInterface keeps a mutable session key prefix that changes with each request and persists across requests. API and web sessions were separated in Redis starting in version 2.5.0, but prefix corruption confuses those session namespaces. An attacker who already has access to the secret Journalist Interface onion address, the required authentication access and a recent nonexpired API session token can reuse that token against the web UI until its natural expiry, at most eight hours. The corrupted prefix can also prevent logout from deleting the correct Redis session, although normal expiry still applies. A compromised journalist can access encrypted submissions and perform broad actions on source submissions, but this issue does not expose plaintext submissions or affect the running system's availability. This issue is fixed in version 2.16.0.
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.
EUVD-2026-114255
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB