Skip to main content

odf-kit EUVDEUVD-2026-107324

| CVE-2026-113787 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-21 GitHub_M
6.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Craft ODF with malicious fo:color value
  2. Delivery
    Deliver document to victim or upload pipeline
  3. Exploit
    odf-kit converts ODF to HTML
  4. Execution
    Double-quote breaks out of style attribute
  5. Impact
    Injected JavaScript executes in viewer context

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that a consumer of odf-kit (version 0.10.0 up to but not including 0.14.2) uses the ODT-to-HTML renderer to convert an attacker-controlled ODF document AND then displays the generated HTML in a browser or HTML-rendering context. The concrete injection vector is any unescaped inline-CSS attribute value - specifically fo:color, fo:background-color, fo:text-shadow, fo:letter-spacing, fo:font-family, fo:margin-*, fo:padding-*, fo:line-height, fo:border*, and style:vertical-align - which are concatenated raw into style="..." at renderTextSpan and ~ten other emission sites (paragraph/heading, table cell/row, <col>, and image style). The limiting factors are: the attacker must get a crafted document to the victim and the victim must actually render it to HTML (UI:R), and the output HTML must be served/displayed without an additional downstream sanitizer. Pure parsing or non-HTML conversion does not trigger the flaw.

Impact

This is a cross-site scripting flaw (CWE-79) in the odf-kit ODF-to-HTML renderer, rated CVSS 6.1 (Medium) with vector AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N. The vector is credible and well-matched to the described flaw: the renderer applies escapeHtml() to text and most attributes but NOT to inline CSS strings, so a double-quote inside a style value (e.g. fo:color) terminates the style attribute early and lets an attacker inject arbitrary attributes/event handlers - a textbook stored/attribute-breakout XSS. The scope change (S:C) is justified because injected script executes in the security context of whatever renders the produced HTML, not the library itself. However, exploitation is gated by UI:R: a victim must render or convert an attacker-supplied ODF document, so this is not wormable or spray-and-pray. No EPSS score, KEV listing, or public POC was provided in the input; the only linked exploit-adjacent artifact is the fix commit, which is a patch, not a weaponized exploit. There is no conflict between signals, but the absence of EPSS/KEV data means real-world exploitation likelihood cannot be quantified from the input - the risk rests on the plausible (confirmed by code diff) technical mechanism rather than observed attacks. Net: a genuine but moderate-priority issue, most relevant to services that ingest untrusted ODF files and render the output in a browser.

Exploit ScenarioDerived

An attacker crafts a malicious .odt or .ods document in which a style value such as fo:color contains a double-quote followed by an injected event handler (e.g. a value that breaks out of style="..." and adds onerror/onload with JavaScript). When a victim or a server-side pipeline uses odf-kit to convert that document to HTML and the result is displayed in a browser, the injected script executes in the viewer's context. No public exploit code was identified in the provided data, but the patch commit confirms the vulnerable unescaped style="${...}" sinks.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
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 – Oct 21, 2026

Cross-site scripting (CWE-79) in odf-kit 0.10.0 through 0.14.1 lets unauthenticated remote attackers inject HTML or script through crafted ODF style properties such as fo:color, which the ODT-to-HTML renderer concatenates unescaped into style attributes. The issue is exploitable only when a consumer converts an attacker-controlled ODT/ODS document to HTML and then displays that output in a browser or other HTML-rendering context, requiring user interaction (CVSS 6.1, AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N). No public exploit code was identified at time of analysis, and version 0.14.2 contains the fix.

RemediationAI

Vendor-released patch: upgrade to odf-kit 0.14.2, which escapes inline CSS and data-URI attributes through escapeAttr() (vendor advisory: https://github.com/GitHubNewbie0/odf-kit/security/advisories/GHSA-3cgg-c5pp-57h6; fix commit: https://github.com/GitHubNewbie0/odf-kit/commit/fa3abc5a7a757f56c7212b2dbe99d1d2db995420). If upgrading is not immediately possible, do not render untrusted ODF documents to HTML, or pass the generated HTML through a robust sanitizer such as DOMPurify configured to strip style attributes and event handlers before display; note that this can remove legitimate formatting. Alternatively, wrap the renderer's output or post-process it to reject or strip any style attribute values containing quotes or angle brackets, accepting loss of custom formatting from documents that rely on such values.

Affected VersionsENISA

odf-kit 0.10.0, < 0.14.2

Affected Packages

euvd odf_kit fix: 0.14.2

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

odf-kit is a TypeScript/JavaScript library for generating, reading, filling, and converting OpenDocument Format files. Its ODT-to-HTML renderer escapes text content and several HTML attributes (href, src, alt, id, data-author, data-date, citation text) via escapeHtml(), but it does not escape inline CSS strings. The parser's extractSpanStyle() copies ODF style values such as fo:color into properties like style.fontColor verbatim, and renderTextSpan() interpolates the resulting CSS directly into style="..." (dist/odt/to-html/html-renderer.js:195). A double quote in the ODF value closes the style attribute early, allowing an attacker to add arbitrary attributes or event handlers. The same unescaped style="${...}" pattern occurs at approximately ten other emission sites, including paragraphStyleToCss for paragraphs/headings, cellStyleToCss and rowStyleToCss for table cells/rows, <col> width, and image style attributes. Affected source properties include fo:color, fo:background-color, fo:text-shadow, fo:letter-spacing, fo:font-family (direct and font-face resolution), fo:margin-*, fo:padding-*, fo:line-height, fo:border*, and style:vertical-align. The root cause is CWE-79: improper neutralization of user-controlled data during web page generation; the commit fa3abc5 adds escapeAttr() around these CSS and data-URI contexts.

Know when Odf Kit 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 (GitHub_M) PRIMARY 6.1 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
vuln.today AI 6.1 MEDIUM

Attacker supplies a document rendered remotely with no privileges (PR:N) but victim must render it (UI:R); injected script runs in the viewer's context, changing scope (S:C) with limited C/I impact typical of XSS.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

1
Patch available
Oct 21, 2026 - 17:18 EUVD

DescriptionCVE.org

odf-kit allows users to generate, fill, read, and convert OpenDocument Format files (.odt, .ods) in TypeScript and JavaScript. Starting in version 0.10.0 and prior to version 0.14.2, he renderer has an escapeHtml() helper and applies it consistently to text content and to attribute values - href, src, alt, id, data-author, data-date, citation text all go through it. The inline CSS strings do not. In renderTextSpan (dist/odt/to-html/html-renderer.js:195), the value of e.g. fo:color is copied from the document into style.fontColor verbatim by the parser (extractSpanStyle, read/parser.js:348), then concatenated raw into the attribute. A " in the value terminates the attribute early. The same unescaped style="${...}" pattern appears at roughly ten other emission sites: paragraph and heading (paragraphStyleToCss), table cells and rows (cellStyleToCss, rowStyleToCss), <col>, and the image style attribute. The affected source attributes include fo:color, fo:background-color, fo:text-shadow, fo:letter-spacing, fo:font-family (via both direct and font-face resolution), fo:margin-*, fo:padding-*, fo:line-height, fo:border*, and style:vertical-align. Version 0.14.2 contains a patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Low
niche TypeScript/JavaScript ODF library from an individual developer
Data Quality
5 sources
Confidence: Medium

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.2%
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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
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.

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