Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Exploitation needs a locally delivered malicious EPUB the user must open (AV:L, UI:R), no app authentication (PR:N), and yields full host code execution (C/I/A:H).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Koodo Reader is an ebook reader. In version 2.3.0 and earlier, Koodo Reader is vulnerable to remote code execution through malicious EPUB files because the open-book IPC handler enables nodeIntegrationInSubFrames and EPUB chapter content is rendered with unsanitized innerHTML. An attacker can craft an EPUB book that, when imported and opened by the victim, instantiates a hidden iframe with Node.js API access and executes arbitrary operating system commands with the victim user's privileges. This issue is fixed in version 2.3.1.
AnalysisAI
Remote code execution in Koodo Reader (versions 2.3.0 and earlier) lets an attacker who supplies a malicious EPUB file run arbitrary OS commands with the victim's privileges once the book is imported and opened. The flaw combines a dangerously permissive Electron IPC handler (nodeIntegrationInSubFrames enabled) with unsanitized innerHTML rendering of chapter content, turning ebook display into a Node.js code-execution primitive. No public exploit has been identified at time of analysis; the issue is fixed in version 2.3.1 and is not listed in CISA KEV.
Technical ContextAI
Koodo Reader is a cross-platform Electron-based ebook reader (cpe:2.3:a:koodo-reader:koodo-reader). The root cause is CWE-94 (Improper Control of Generation of Code / Code Injection): EPUB chapter HTML is injected into the DOM via unsanitized innerHTML, so scripts and markup embedded in a book execute in the renderer. Critically, the open-book IPC handler instantiates chapter content in an iframe with nodeIntegrationInSubFrames enabled, which grants that subframe access to Node.js APIs (require, child_process, etc.). Electron's normal renderer isolation is intended to keep web-like content away from Node; enabling nodeIntegrationInSubFrames plus HTML injection collapses that boundary and lets book-supplied JavaScript reach the operating system.
RemediationAI
Vendor-released patch: upgrade to Koodo Reader 2.3.1, which remediates the issue by removing the unsafe Node.js access path and/or sanitizing rendered EPUB content; see the advisory at https://github.com/koodo-reader/koodo-reader/security/advisories/GHSA-mjr7-w4jq-2rq9. Until the update is applied, the practical compensating control is to refuse to import or open EPUB files from untrusted or unverified sources, since exploitation depends entirely on the victim loading an attacker-supplied book - the trade-off is that this relies on user discipline and blocks legitimately sideloaded books. Where possible, run Koodo Reader under a low-privilege OS account so that any command execution inherits reduced permissions, and open untrusted ebooks only inside a sandboxed or disposable VM; the side effect is added friction for users who routinely load third-party EPUBs.
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a
Same weakness CWE-94 – Code Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-42107