Skip to main content

NanoSVG EUVDEUVD-2026-86266

| CVE-2026-88367 MEDIUM
Incorrect Conversion between Numeric Types (CWE-681)
2026-09-24 mitre GHSA-p3qg-v7px-94h6
6.5
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

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

  1. Access
    Craft SVG with huge stroke-width
  2. Delivery
    Deliver file to victim application
  3. Exploit
    Victim renders SVG in NanoSVG
  4. Execution
    Infinity converts to int (UB)
  5. Impact
    Process crashes (DoS)

Vulnerability Assessment

Weakness
CWE
Exploitation Conditions

Exploitation requires the victim to load and stroke-rasterize an attacker-supplied SVG document through NanoSVG (UI:R) - specifically an SVG whose stroke-width is large enough that floating-point rounding collapses the subdivision angle to zero in nsvg__curveDivs(). No authentication or special privileges are needed (PR:N), and no non-default configuration is required beyond the application actually performing stroke rendering (not merely parsing). Limiting factors: user interaction is mandatory (the file must be opened/rendered), impact is a crash of only the embedding process, and the severity of the undefined behavior depends on compiler/runtime hardening (a UBSan or trap-on-overflow build will terminate reliably, whereas an optimized release build may clamp or produce a garbage int without a hard crash).

Impact

All exploitability signals point to a low-priority denial-of-service issue despite the 6.5 (Medium) CVSS. The vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H is network-reachable and unauthenticated, but crucially gated by UI:R - a victim application must actively load/parse the attacker's crafted SVG, so this is not a server-side auto-triggered flaw. Impact is confined to availability (C:N/I:N/A:H): a float-to-int conversion of an infinity value (CWE-681) produces undefined behavior and process termination - a crash, not code execution or data exposure. EPSS is only 0.15% (3rd percentile), there is no CISA KEV listing, and no public exploit code is identified (the sole reference is a GitHub issue report, not a weaponized PoC). Note the A:H rating is arguably generous: the outcome is a single-process crash of whatever host application embeds NanoSVG, not sustained service-wide unavailability, and on non-UBSan/hardened builds the out-of-range int conversion may be silently clamped rather than fatal. There is no conflict between CVSS and description - both agree on remote-delivered but interaction-gated DoS. Net: a real but minor robustness bug, not an urgent priority.

Exploit ScenarioDerived

An attacker crafts an SVG file with an extremely large stroke-width value and delivers it to a victim (via a website, email attachment, or file share) that uses an application embedding NanoSVG. When the victim opens or renders the file, nsvg__curveDivs() computes a zero subdivision angle, the arc division yields infinity, and converting that to int triggers undefined behavior that terminates the process. No public exploit code is identified at time of analysis - only an upstream GitHub issue report exists.

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

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

Alert me

AnalysisAIv1 – Sep 25, 2026

NanoSVG (memononen/nanosvg, revision 239e102ec) can be crashed by an SVG document whose stroke-width is large enough that floating-point rounding collapses the subdivision angle computed in nsvg__curveDivs() to zero, producing an infinite arc-division value that is converted to int without range validation (CWE-681). The result is undefined behavior that reliably terminates the process on hardening or trap-on-overflow builds, so applications that stroke-rasterize untrusted SVGs suffer a denial of service; the CVSS 3.1 vector AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H (6.5 Medium) means no authentication is required but the victim must open and render the crafted file. Exploitation signals are weak: EPSS is only 0.15% (3rd percentile), no CISA KEV entry exists, and no public exploit code has been identified at time of analysis, and impact is confined to a crash of the embedding process rather than code execution or data compromise.

RemediationAI

No vendor-released patch has been identified at time of analysis, and no fixed version is stated in the available data; the upstream NanoSVG issue (https://github.com/memononen/nanosvg/issues/293) is the place to track a proper fix, which should clamp or validate the divisors computed in nsvg__curveDivs() and reject non-finite results before the int conversion. Until that lands, the most effective compensating control is to sanitize or reject SVG input before rendering: cap the accepted stroke-width (for example, discard or clamp values above a few thousand user units) and drop documents whose computed geometry yields non-finite values - the trade-off is that legitimate but unusually large-stroke artwork will render incorrectly or be refused. Applications that do not need vector stroke rendering can disable the stroke rasterization path entirely or fall back to parsing only, which removes the vulnerable code from the attack surface at the cost of losing visual fidelity. Because the crash occurs inside the host process, isolate SVG rendering in a separate sandboxed worker or child process with a watchdog and memory/CPU limits so a termination does not take down the parent service; this adds IPC complexity and latency but bounds the blast radius. Where feasible, build with UBSan or trap-on-overflow enabled in test and staged environments to detect the fault early, and prefer hardened builds in production so the undefined behavior fails deterministically rather than silently producing corrupted geometry. Finally, treat SVG uploads as untrusted input: restrict who can supply files, scan them with format-aware tooling, and monitor for repeated renderer crashes as an indicator of attempted exploitation. References for tracking: https://github.com/memononen/nanosvg/issues/293 and https://nvd.nist.gov/vuln/detail/CVE-2026-88367.

Affected VersionsENISA

n/a n/a

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

NanoSVG is a small single-header C/C++ SVG parsing and rasterization library used to embed SVG rendering in applications; the fault lies in the stroke rendering path, specifically nsvg__curveDivs(), which decides how many line segments approximate a curve or arc. When the requested stroke-width is extremely large, floating-point rounding in the subdivision-angle calculation can underflow to exactly zero, after which the arc division produces infinity; that floating-point value is then converted to an integer without bounds or domain checking, which falls squarely into CWE-681 (Incorrect Conversion between Numeric Types) and is undefined behavior in C. The trigger is not simple parsing but stroke rasterization of the malformed geometry, so only code paths that actually render strokes with NanoSVG are exposed; whether the outcome is a deterministic crash depends on compiler and runtime hardening, since optimized release builds may clamp or yield a garbage int while UBSan or trap-on-overflow instrumentation terminates immediately. No CPE mapping was supplied for this record (the vendor/product fields are n/a), so affected scope must be inferred from the NanoSVG source revision rather than an authoritative product enumeration.

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

Remote crafted file delivered to a rendering victim gives AV:N/AC:L/PR:N/UI:R; impact is a process-terminating crash only, so C:N/I:N/A:H and no scope change.

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

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

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

Lifecycle Timeline

2
CVSS changed
Sep 25, 2026 - 18:22 NVD
6.5 (MEDIUM)
CVE Published
Sep 24, 2026 - 00:00 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

NanoSVG 239e102ec contains an incorrect numeric conversion vulnerability in nsvg__curveDivs() during SVG stroke rasterization. A specially crafted SVG document containing an extremely large stroke-width can cause floating-point rounding to produce a zero subdivision angle. The subsequent arc division yields infinity, which is converted to int without range validation, resulting in undefined behavior and process termination, leading to denial of service.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Low
niche header-only C SVG parser embedded in graphics/game tools
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.1%
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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

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

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in N A

View all
CVE-2024-51092 CRITICAL POC
9.1 May 08

LibreNMS before 24.10.0 allows a remote attacker to execute arbitrary code via OS command injection involving AboutContr

CVE-2025-15684 MEDIUM POC
5.5 Aug 12

Reachable assertion in Open5GS up to version 2.7.6 allows remote unauthenticated attackers to crash the Diameter CER han

CVE-2024-45257 HIGH POC
7.3 May 08

A Command Injection issue in the payload build page in BYOB (Build Your Own Botnet) 2.0 allows attackers to execute arbi

CVE-2025-15687 LOW POC
2.1 Aug 12

Denial of service in Open5GS 2.7.6 and earlier allows network-adjacent attackers with low-privilege Diameter Gx peer acc

CVE-2025-15686 LOW POC
2.1 Aug 12

Denial of service in Open5GS HSS (Home Subscriber Server) versions 2.7.0 through 2.7.6 is triggered remotely by manipula

CVE-2025-67888 HIGH POC
7.3 May 08

Remote command injection in Control Web Panel allows unauthenticated attackers to execute arbitrary OS commands as root

CVE-2024-53326 HIGH POC
7.3 May 08

LINQPad before 5.52.01 Pro edition is vulnerable to Unsafe Deserialization in LINQPad.AutoRefManager::PopulateFromCache(

CVE-2026-38360 CRITICAL POC
9.8 May 08

Remote code execution in dash-uploader (Python package for Plotly Dash) versions 0.1.0 through 0.7.0a2 allows unauthenti

CVE-2026-30623 CRITICAL POC
9.8 Jul 15

Command injection in LiteLLM 1.18.10 lets attackers who can configure MCP (Model Context Protocol) servers supply arbitr

CVE-2026-67917 CRITICAL POC
9.8 Aug 17

SQL injection in AzuraCast's backup restore flow (versions up to and including 0.23.7) lets an attacker achieve privileg

CVE-2026-75337 CRITICAL POC
9.8 Aug 27

Arbitrary file read in Yu AI Code Mother v4.3 lets anonymous, remote attackers retrieve files outside the intended previ

CVE-2026-31072 CRITICAL POC
9.8 May 19

Remote code execution in APScheduler (all versions through 3.10.x and 4.0.0a5) is achievable when applications deseriali

Vendor StatusVendor

SUSE

Severity: Moderate

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