Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to self-hosted OPDS server
-
DeliveryUpload books.db with ../ in cover value
-
ExploitRequest /opds/cover/{key} endpoint
-
ExecutionUnsafe filepath.Join escapes upload directory
-
ImpactRead arbitrary server-accessible files
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the optional self-hosted HTTP server (OPDS) mode of Koodo Reader to be enabled and reachable - this is not the default desktop-only usage. The attacker must be authenticated with privileges to upload a books.db (PR:H), supply a crafted 'cover' value containing ../ sequences, and then request /opds/cover/{key}. Impact is bounded to reading files accessible to the server process (read-only disclosure, no write/integrity or availability impact). Limiting factors: authenticated upload access is mandatory, the self-hosted server must be deployed and exposed, and only files the server process can already read are disclosed. Affects versions through 2.4.6; upgrading to the patched build (commit cbc79a1) is the vendor fix. |
| Impact | This is a medium-severity, authenticated information-disclosure flaw rather than a top-tier emergency. The supplied CVSS 4.0 vector (6.9) shows a network-reachable, low-complexity bug (AV:N/AC:L/AT:N) but requires high privileges (PR:H) and yields confidentiality impact only (VC:H, VI:N, VA:N), with no scope/subsequent-system impact - consistent with read-only path traversal (CWE-22). The vuln.today decision label is 'this_month', not 'act_now' or 'emergency', so the signals converge on prompt-but-not-urgent remediation. No EPSS score was provided in the input, so exploitation probability cannot be quantified here, and the vulnerability is NOT listed in CISA KEV - there is no evidence of active exploitation. No public exploit code was identified in the input; the strongest corroboration is a VulnCheck advisory plus the vendor patch commit and the exact vulnerable source lines (httpserver/opds.go). The main factor keeping real-world risk moderate is PR:H: an attacker must already be an authenticated user able to upload a books.db to the self-hosted server. Because the self-hosted HTTP server is an optional, non-default deployment mode, the exposed population is narrow. Net: credible and patch-worthy, but limited by the authentication requirement and read-only impact - not a widespread, pre-auth RCE scenario. |
| Exploit ScenarioDerived | An authenticated user of a self-hosted Koodo Reader HTTP server uploads a crafted books.db whose 'cover' value contains ../ traversal sequences, then requests /opds/cover/{key}; the server's unsanitized filepath.Join resolves outside the upload directory and returns files readable by the server process (e.g., configuration or credential files). The CVSS vector indicates network vector with low attack complexity but high privilege (authenticated upload) required. No public exploit code was identified at time of analysis; a VulnCheck advisory and the patch commit confirm the mechanism. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Path traversal in Koodo Reader 2.4.6 and earlier lets an authenticated user of the optional self-hosted HTTP server read arbitrary files outside the upload directory. The attacker uploads a crafted books.db whose 'cover' value contains ../ sequences and then requests /opds/cover/{key}, causing the server to serve a file readable by the Koodo Reader process; the same unsafe path construction affected the OPDS download handler. Exploitation requires the non-default OPDS/self-hosted mode to be deployed and reachable plus privileges sufficient to upload a database (PR:H), so impact is read-only disclosure of files the server process can already access. No public exploit code or confirmed active exploitation was identified at time of analysis, and the vendor fix is contained in commit cbc79a1.
RemediationAI
Upgrade Koodo Reader to a build that contains upstream commit cbc79a1ab5cbbd61c8252d6ab3cc6dbb694663b8 (https://github.com/koodo-reader/koodo-reader/commit/cbc79a1ab5cbbd61c8252d6ab3cc6dbb694663b8), which introduces resolveSafePath validation for the OPDS download handler and the matching cover path so that '../' values in books.db can no longer escape the upload directory. The comparison at https://github.com/koodo-reader/koodo-reader/compare/205539043b0a2afd9fd8bf99ef8434bd1833c2bf...cbc79a1ab5cbbd61c8252d6ab3cc6dbb694663b8 shows the full fix set; no tagged patched release version is stated in the available data, so verify the fix is present in the distribution you deploy. If upgrading is not immediately possible, the exposure can be reduced by not running the optional self-hosted HTTP/OPDS server, or by keeping it off untrusted networks, since the traversal is only reachable through that mode - at the cost of losing OPDS catalog functionality - and by tightening who may upload library databases such as books.db, which the attack requires.
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
Koodo Reader ships an optional Go-based HTTP server (httpserver package) that exposes an OPDS catalog for e-book distribution. In versions through 2.4.6, the OPDS cover handler (httpserver/opds.go, roughly lines 167-194 and 384-431) built filesystem paths by joining the upload directory with a cover value taken from the reader's books.db database, and the OPDS download handler did the same with the book key and format (filepath.Join(uploadDir, "book", b.Key+"."+format)). Because filepath.Join collapses '..' segments, a cover or key value containing ../ sequences escapes the intended upload directory, giving a directory-traversal read primitive (CWE-22). The upstream commit cbc79a1ab5cbbd61c8252d6ab3cc6dbb694663b8 addresses this by routing the download handler through a new resolveSafePath("book", ...) helper that validates the resolved path and returns 404 on failure, with the corresponding change applied to the cover path. The vulnerable state is reachable only when the optional self-hosted HTTP/OPDS mode is enabled and exposed; the default desktop-only usage never starts this server, and an attacker must already be authenticated with upload privileges to plant the malicious books.db.
Know when Koodo Reader 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:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable OPDS endpoint (AV:N/AC:L) but requires authenticated upload of books.db (PR:H); read-only file disclosure gives C:H with I:N/A:N and unchanged scope.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Koodo Reader through 2.4.6 contains a path traversal vulnerability in the self-hosted HTTP server's OPDS handlers that allows authenticated attackers to read files outside the upload directory. Attackers can upload a crafted books.db with a cover value containing ../ sequences, then request /opds/cover/{key} to read files accessible to the server process.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
EUVD-2026-115889
NVD
CVE.org
Vulnrichment
GitHub
Exploit-DB