Description
odf-kit allows users to generate, fill, read, and convert OpenDocument Format files (.odt, .ods) in TypeScript and JavaScript. Starting in version 0.6.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.
Published: 2026-10-21
Score: 6.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Cross‑Site Scripting via unescaped style attributes
Action: Update Library
AI Analysis

Impact

The odf-kit library, used to read, write, and convert OpenDocument files, contains a flaw where inline CSS styles are inserted into the generated HTML without proper escaping. When the document’s style attributes such as fo:color, fo:background-color, or fo:font-family are copied verbatim into the style attribute of HTML elements, a crafted value that includes a quotation mark or script tag can close the attribute early and inject executable JavaScript. This vulnerability leads to cross‑site scripting when a malicious ODT file is rendered in a browser, enabling defacement, cookie theft, or other client‑side attacks.

Affected Systems

Any project or application that imports the GitHubNewbie0:odf-kit package with a version from 0.6.0 up to, but not including, 0.14.2 is affected. The vulnerability exists in the renderer that converts ODT to HTML, and its impact is realized when the resulting HTML is served or displayed in a web context. All styled elements—paragraphs, headings, table cells, images, and inline spans—are potentially exploitable unless the affected versions are patched.

Risk and Exploitability

The CVSS score of 6.1 indicates moderate impact. The EPSS score is not available, and the flaw is not listed in the CISA KEV catalog. The likely attack vector is that an attacker supplies a crafted ODT file that contains malicious style values. If that file is rendered by the vulnerable library in a trusted web context, the injected JavaScript runs with the privileges of the viewing user. The risk is higher for applications that automatically render user‑supplied documents without additional isolation or content filtering.

Generated by OpenCVE AI on October 22, 2026 at 03:16 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade odf-kit to version 0.14.2 or later, which applies proper escaping to all style attribute values.
  • If an upgrade is not immediately feasible, post‑process the generated HTML to escape or remove offending style attributes before delivery to the client.
  • For critical deployments, consider using a sandboxed rendering environment or an alternative library that guarantees safe rendering of OpenDocument files.

Generated by OpenCVE AI on October 22, 2026 at 03:16 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-3cgg-c5pp-57h6 odf-kit: HTML injection leading to XSS in odtToHtml() and odsToHtml() via unescaped style attribute values
History

Fri, 30 Oct 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 22 Oct 2026 09:30:00 +0000

Type Values Removed Values Added
First Time appeared Githubnewbie0
Githubnewbie0 odf-kit
Vendors & Products Githubnewbie0
Githubnewbie0 odf-kit

Wed, 21 Oct 2026 21:30:00 +0000

Type Values Removed Values Added
Description 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. odf-kit allows users to generate, fill, read, and convert OpenDocument Format files (.odt, .ods) in TypeScript and JavaScript. Starting in version 0.6.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.

Wed, 21 Oct 2026 17:15:00 +0000

Type Values Removed Values Added
Description 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.
Title odf-kit: HTML injection leading to XSS in odtToHtml() via unescaped style attribute values
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N'}


Subscriptions

Githubnewbie0 Odf-kit
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-30T17:45:30.891Z

Reserved: 2026-10-20T17:39:41.372Z

Link: CVE-2026-113787

cve-icon Vulnrichment

Updated: 2026-10-30T17:45:07.884Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-21T16:17:26.270

Modified: 2026-10-30T18:17:21.960

Link: CVE-2026-113787

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T09:07:40Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')