{"uuid": "0154a912-c69a-41a2-8e81-da68bcbff174", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2026-94545", "type": "seen", "source": "https://gist.github.com/alon710/e11ed57bbd03f583eda1d234a9d2ec4e", "content": "# GHSA-VCVR-R3JV-PC5J: CVE-2026-94545: SVG-Serialization Markup Injection in Vercel Satori and Next.js ImageResponse\n\n&gt; **CVSS Score:** 9.8\n&gt; **Published:** 2026-09-30\n&gt; **Full Report:** https://cvereports.com/reports/GHSA-VCVR-R3JV-PC5J\n\n## Summary\nAn improper output encoding and escaping vulnerability (CWE-116) in Vercel Satori allows unauthenticated remote attackers to perform markup injection in dynamic Open Graph images generated via Next.js's ImageResponse. Unsanitized parameter interpolation into SVG elements breaks XML structural boundaries. This exposes downstream parsing, rasterization, and rendering pipelines to Server-Side Request Forgery (SSRF), Local File Read, and Remote Code Execution (RCE).\n\n## TL;DR\nUnsanitized user inputs passed to the Next.js `ImageResponse` wrapper are processed by the underlying Satori library without appropriate HTML/XML escaping. This allows attackers to break out of XML tag boundaries, inject arbitrary SVG nodes, and trigger downstream vulnerabilities in image-processing backends.\n\n## Exploit Status: POC\n\n## Technical Details\n\n- **CWE ID**: CWE-116 (Improper Encoding or Escaping of Output)\n- **Attack Vector**: Network (AV:N) / Unauthenticated Remote HTTP Request\n- **CVSS v4.0 Score**: 9.8 (Critical Framework-Level Impact)\n- **EPSS Score**: Not Available\n- **Exploit Status**: Proof-of-Concept (PoC) documented and verified via rendering side-channel\n- **CISA KEV Status**: No (Not currently listed in the CISA KEV catalog)\n- **Mitigation Strategy**: Update Next.js or enforce strict input escaping and Edge runtime configurations\n\n## Affected Systems\n\n- Next.js Node.js-runtime dynamic Open Graph image generation pipelines\n- Serverless functions executing next/og ImageResponse APIs\n- Custom Node.js applications consuming standalone Vercel Satori packages for HTML/CSS-to-SVG conversion\n- **Next.js**: &gt;= 16.2.0, &lt; 16.3.6 (Fixed in: `16.3.6`)\n- **Satori**: &gt;= 0.0.27, &lt; 0.33.5 (Fixed in: `0.33.5`)\n\n## Mitigation\n\n- Upgrade Next.js dependencies to version 16.3.6 or higher (or backported version 15.5.26)\n- Upgrade standalone Vercel Satori packages to version 0.33.5 or higher\n- Configure dynamic ImageResponse routes to execute inside the Edge Runtime\n- Implement a strict string-sanitization middleware to escape XML entities in input parameters before rendering\n\n**Remediation Steps:**\n1. Identify all API and dynamic page files utilizing 'next/og' or direct Satori rendering\n2. Run 'npm install next@16.3.6' or 'yarn add next@16.3.6' to pull the patched dependency bundle\n3. Validate the package-lock.json or yarn.lock file to ensure Satori is resolved to 0.33.5 or higher\n4. If packages cannot be updated, implement the 'sanitizeForSVG' helper on all dynamic parameters\n5. Add 'export const runtime = \"edge\"' to the top of dynamic OG image generation routes\n6. Deploy the updated application and perform a non-destructive side-channel verification scan to ensure input parameters are properly escaped\n\n## References\n\n- [Next.js Security Advisory GHSA-vcvr-r3jv-pc5j](https://github.com/vercel/next.js/security/advisories/GHSA-vcvr-r3jv-pc5j)\n- [Satori Security Advisory GHSA-wx4j-mvgx-mqwp](https://github.com/vercel/satori/security/advisories/GHSA-wx4j-mvgx-mqwp)\n- [Satori Patch Commit 26a52affc](https://github.com/vercel/satori/commit/26a52affc031216fee5882b6e965c8dbc7ac1782)\n- [Next.js Patch Commit 868fad3](https://github.com/vercel/next.js/commit/868fad38690d72088868f299fa2bef339b26838e)\n- [Satori Core Serialization PR 814](https://github.com/vercel/satori/pull/814)\n- [Next.js v16.3.6 Release Tags](https://github.com/vercel/next.js/releases/tag/v16.3.6)\n- [Next.js Security Blog Update September 2026](https://nextjs.org/blog/nextjs-security-update-september-22-2026)\n- [Netlify Customer Advisory on ImageResponse vulnerability](https://www.netlify.com/changelog/2026-09-22-nextjs-imageresponse-vulnerability/)\n- [Hassham1 CVE-2026-94545 next/og loopback test lab and scanner](https://github.com/Hassham1/CVE-2026-94545-nextjs-og-poc)\n\n\n---\n*Generated by [CVEReports](https://cvereports.com/reports/GHSA-VCVR-R3JV-PC5J) - Automated Vulnerability Intelligence*", "creation_timestamp": "2026-09-30T15:30:30.000000Z"}