Skip to main content

Safe SVG CVE-2026-94077

| EUVDEUVD-2026-89832 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-09-30 Patchstack GHSA-754p-gr58-jx6v
6.5
CVSS 3.1 · Vendor: Patchstack
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as Contributor
  2. Delivery
    Upload crafted SVG bypassing sanitizer
  3. Exploit
    Store payload in media library
  4. Execution
    Admin views SVG/post
  5. Persist
    Script executes in admin origin
  6. Impact
    Hijack privileged session

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

Requires an authenticated WordPress account with at least Contributor role (PR:L) on a site running Safe SVG <= 2.5.0, since the plugin's SVG upload/sanitization path is the injection point. Exploitation also requires user interaction (UI:R): a higher-privileged user (editor/admin) must view the malicious SVG or the post/media embedding it for the script to fire. Limiting factors: sites that do not grant untrusted users Contributor+ accounts, or that disable SVG uploads, are not realistically exposed; the scope change (S:C) means impact hinges on a privileged victim rendering the payload.

Impact

This is a moderate-risk, contributor-privilege stored XSS (CVSS 6.5, CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L). The network vector and low complexity are offset by two meaningful limiters: PR:L requires an authenticated Contributor-or-above account, and UI:R requires a victim (typically an editor or admin) to view the malicious content. The scope change (S:C) reflects that injected script executes in the wp-admin/site origin, potentially against higher-privileged users, which is the realistic escalation path. No EPSS score, KEV listing, or public PoC is provided in the input, so exploitation status is 'no public exploit identified at time of analysis' - this is not a signal of active, widespread abuse. Given Safe SVG's very large install base but the authentication and interaction prerequisites, this is a real but not urgent priority: patch on a normal cadence, prioritized on multi-author sites where untrusted Contributor accounts exist. No signals conflict; the CVSS vector is internally consistent with a contributor stored/SVG-based XSS.

Exploit ScenarioDerived

An attacker with a Contributor account uploads or crafts an SVG file that Safe SVG (<= 2.5.0) fails to fully sanitize, embedding JavaScript that survives its sanitization filter. When an administrator or editor previews the media, post, or SVG in wp-admin, the script executes in their authenticated session, enabling session theft or actions on their behalf. No public exploit code is identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 30, 2026

Stored cross-site scripting in the Safe SVG WordPress plugin through version 2.5.0 allows an authenticated user holding at least the Contributor role to embed script content in an uploaded SVG file, which then executes in the browser of a higher-privileged user (editor or administrator) who views the media item or a post containing it. The vulnerability carries a CVSS 3.1 base score of 6.5 (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L), reflecting the requirement for a Contributor-level account and victim interaction, with impact scoped to the privileged user's session. No public exploit code was identified at time of analysis and there is no indication of confirmed active exploitation (CISA KEV); exposure is limited to sites that grant untrusted users Contributor-or-higher accounts or that leave SVG uploads enabled for such users.

RemediationAI

No vendor-released patch version is confirmed in the available data; the referenced Patchstack advisory should be monitored for an updated Safe SVG release, and the primary action is to upgrade the plugin above 2.5.0 as soon as a fixed version is published by 10up. Until then, the highest-value compensating controls are: remove Contributor-and-above upload privileges for untrusted users, or disable SVG uploads entirely for non-administrator roles (for example by hooking the upload_mimes filter or the plugin's own settings), accepting the trade-off that legitimate contributors lose SVG upload capability; and audit and re-sanitize or delete any SVG files already present in the media library, since stored payloads persist after the plugin is hardened. Site owners can further reduce impact by enforcing a Content-Security-Policy that disallows inline script on admin and front-end pages, though this may break other plugins or themes that rely on inline JavaScript, and by ensuring SVG media attachments are not rendered inline in privileged contexts (serving them as downloads or with a strict Content-Type). Administrators who previously granted Contributor accounts to untrusted parties should review and revoke them, since account provisioning is the main prerequisite for exploitation.

Affected VersionsENISA

Safe SVG n/a ≤2.5.0

Affected Packages

euvd safe_svg no fix

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

Safe SVG is a WordPress media-handling plugin published by 10up (CPE cpe:2.3:a:10up:safe_svg:*:*:*:*:*:*:*:*) whose purpose is to permit SVG uploads while sanitizing the markup so that scriptable content is stripped before the file is stored. SVG is an XML-based vector format and therefore a first-class script-execution vector: inline <script> elements, event-handler attributes (onload, onerror), <foreignObject>, external entity references, and javascript: URIs can all cause code to run when the file is rendered by a browser. The weakness is CWE-79 (Improper Neutralization of Input During Web Page Generation / Cross-site Scripting): the plugin's sanitization or output path fails to fully neutralize attacker-controlled markup for a user who is allowed to upload, so the payload persists in the WordPress media library and re-executes each time the SVG is rendered. Because the executed script runs in the context of the victim (an editor or administrator) rather than the injecting Contributor, the CVSS vector shows a scope change (S:C) even though the required privilege is low (PR:L) and user interaction is needed (UI:R).

Know when Safe Svg 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 (Patchstack) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
vuln.today AI 6.5 MEDIUM

Contributor account needed (PR:L), victim must render the SVG (UI:R), script runs in the site origin against other users (S:C) with limited C/I/A impact typical of XSS.

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

Primary rating from Vendor (Patchstack).

CVSS VectorVendor: Patchstack

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

DescriptionCVE.org

Contributor Cross Site Scripting (XSS) in Safe SVG <= 2.5.0 versions.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
High
Safe SVG by 10up is a WordPress plugin with 1M+ active installs
Data Quality
4 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 No
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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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