Skip to content
NewA calmer, faster ZeroHour
VulnerabilityPoC ×517 · 5 reads

CVE-2026-94545

Improper Output Escaping in Satori SVG Generator Exposes Next.js OG Image Pipelines

CVSS 4.0
5.3 medium
EPSS
1%p65
Published
·
Modified
Analyze CVE-2026-94545 with Vani AIImpact, affected versions, exploitation status, mitigations and detection

Satori, the open-source library that converts HTML and CSS into SVG and powers Next.js's ImageResponse/@vercel/og image generation, fails to escape certain values before embedding them in its SVG output (CWE-116). An attacker who can get crafted content (e.g., user-controlled text, titles, or query parameters) rendered through a Satori-based endpoint can inject arbitrary SVG markup into the generated image. The impact depends on how the SVG is consumed downstream: the CVSS vector (SC:H/SI:H with UI:P) indicates high impact on subsequent systems, and public reports demonstrate cross-site scripting and, in some server-side rendering configurations, code execution. All applications using Satori from 0.0.27 up to (but not including) 0.33.5 are affected, with 0.33.5 containing the patch; the vendor states no complete workaround exists besides upgrading and warns against rendering attacker-controlled content until patched. Four public proof-of-concept repositories exist, the flaw is not yet in CISA's KEV catalog, and no confirmed in-the-wild exploitation has been reported.

What to do: Upgrade Satori to 0.33.5 or later immediately; Next.js users should update to a build that pulls the patched Satori and verify with 'npm ls satori' (or the equivalent in pnpm/yarn/lockfile inspection). Until patched, do not render attacker-controlled content (query parameters, usernames, post titles, free-text fields) through Satori or ImageResponse endpoints — restrict OG image inputs to trusted or strictly allowlisted values. Also review how generated SVGs are consumed downstream and disable script/markup execution in any server-side SVG rasterizer or renderer processing them.

ProductAffected
Vercel Satori>= 0.0.27, < 0.33.5 (fixed in 0.33.5)
Vercel Next.js ImageResponse / @vercel/og (downstream consumers of Satori)—
Estimated exposure
large≈100,000–1,000,000 apps/sites using Satori via OG image generation; the exploitable subset that renders attacker-controlled input is smaller and unquantified — Estimated from Satori's high npm download volume (millions of weekly downloads, largely pulled in transitively through Next.js/@vercel/og image tooling) and Next.js's share of the web framework market, discounted to deployments that…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description · NVD

Satori is a library to convert HTML and CSS to SVG. Starting in version 0.0.27 and prior to version 0.33.5, Satori does not properly escape certain values before including them in generated SVG output. This can allow crafted values to be interpreted as SVG markup. The impact depends on how the generated SVG is consumed. Version 0.33.5 contains a patch. No complete workaround exists besides upgrading. Applications that cannot immediately upgrade should not render attacker-controlled content with Satori.

Ecosystems
npm
Weakness
CWE-116
Vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
GHSA
GHSA-wx4j-mvgx-mqwp (medium)

In the news

3 stories