Description
SVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 1.0.0 until versions 2.8.4, 3.3.5, and 4.1.0, the opt-in removeScripts plugin, named removeScriptElement in versions 2 and 3 and implemented in plugins/removeScripts.js, removes SVG and XHTML script elements but does not inspect executable HTML content inside SVG foreignObject elements. Event-handler attributes such as onload and onbeforetoggle, srcdoc documents, and executable URLs in the action, data, formaction, href, and src attributes can remain in attacker-controlled SVG input. When an application uses the plugin as its only protection and serves the optimized SVG in an active browser context, the payload can execute script in the viewer's origin, expose data, modify content, or perform actions as the victim. This issue is fixed in versions 2.8.4, 3.3.5, and 4.1.0.
Published: 2026-09-01
Score: 6.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The removeScripts plugin in SVGO removes <script> elements from SVG files, but it does not sanitize executable HTML content inside <foreignObject> elements. This allows an attacker to embed event‑handler attributes (e.g., onload, onbeforetoggle), srcdoc content, or malicious URLs in attributes like action, data, formaction, href, and src. When a host application uses this plugin as the sole protection and serves the optimized SVG in a browser, the embedded script can execute in the viewer’s origin, enabling data exfiltration, DOM manipulation, or other malicious actions.

Affected Systems

Affected products are SVGO versions prior to 2.8.4, 3.3.5, and 4.1.0. Vulnerable releases include SVGO v1.x and any v2.x, v3.x, or v4.x earlier than those fixed tags. The vulnerability exists in the removeScripts plugin (named removeScriptElement in older releases) found in plugins/removeScripts.js. Updating to SVGO v2.8.4, v3.3.5, v4.1.0 or later resolves the sanitization gap.

Risk and Exploitability

The CVSS score of 6.1 indicates moderate severity. Since EPSS data is not available and the vulnerability is not listed in CISA KEV, the current exploit probability appears low, yet it can lead to remote code execution when the SVG is rendered in a browser context. Attackers need only supply a crafted SVG file that the application processes with the vulnerable plugin; no authentication or additional privileges are required. Given the potential impact on confidentiality, integrity, and availability, remediation should be treated promptly.

Generated by OpenCVE AI on September 2, 2026 at 02:54 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade SVGO to at least version 2.8.4, 3.3.5, 4.1.0, or a later release that includes the fixed removeScripts plugin.
  • Ensure that removeScripts is not used as the only sanitization mechanism; combine it with additional input validation or a strict Content Security Policy when serving SVG content in browsers.
  • If an upgrade cannot be performed immediately, disable the removeScripts plugin or configure the application to reject SVG files containing <foreignObject> elements, and monitor for any unexpected script execution.

Generated by OpenCVE AI on September 2, 2026 at 02:54 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 02 Sep 2026 02:15:00 +0000

Type Values Removed Values Added
First Time appeared Svg
Svg svgo
Vendors & Products Svg
Svg svgo

Tue, 01 Sep 2026 22:00:00 +0000

Type Values Removed Values Added
Description SVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 1.0.0 until versions 2.8.4, 3.3.5, and 4.1.0, the opt-in removeScripts plugin, named removeScriptElement in versions 2 and 3 and implemented in plugins/removeScripts.js, removes SVG and XHTML script elements but does not inspect executable HTML content inside SVG foreignObject elements. Event-handler attributes such as onload and onbeforetoggle, srcdoc documents, and executable URLs in the action, data, formaction, href, and src attributes can remain in attacker-controlled SVG input. When an application uses the plugin as its only protection and serves the optimized SVG in an active browser context, the payload can execute script in the viewer's origin, expose data, modify content, or perform actions as the victim. This issue is fixed in versions 2.8.4, 3.3.5, and 4.1.0.
Title SVGO: removeScripts incompletely sanitizes executable HTML in SVG foreignObject elements
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'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-01T20:43:52.013Z

Reserved: 2026-09-01T16:27:58.129Z

Link: CVE-2026-84369

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-01T21:18:48.037

Modified: 2026-09-01T21:18:48.037

Link: CVE-2026-84369

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-02T03:00:13Z

Weaknesses
  • CWE-79

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