{"id":"CVE-2026-119347","kind":"vulnerability","aliases":["CVE-2026-119347","GHSA-7qx7-33qx-rqx2"],"related":[],"title":"SVG rejection bypass in Next.js image optimization","description":"<!-- https://linear.app/vercel/issue/NSEC-438 -->\r\nOn self-hosted deployments, the Next.js image optimizer (`/_next/image`) can be made to process an attacker-supplied SVG even when SVG support is disabled with `dangerouslyAllowSVG: false` (the default). This reaches an SVG parser the application intended to keep disabled, increasing exposure to denial of service and SVG decoder vulnerabilities.","summary":"Self-hosted Next.js apps can have the image optimizer at /_next/image process an attacker-supplied SVG even when SVG support is turned off with dangerouslyAllowSVG set to false. This reaches an SVG parser the application meant to keep disabled, which raises the risk of denial of service and SVG decoder flaws.","severity":"medium","cvss":6.9,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"next","fixed":["16.4.5"],"affected":">= 16.0.0, <= 16.4.4","ecosystem":"npm"},{"name":"next","fixed":["15.5.29"],"affected":">= 15.0.0, <= 15.5.28","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["next.js","runtime","self-hosted"],"not_affected_if":["managed-hosting"],"how_to_check":"- Check the installed version with `npm ls next`; affected are `16.0.0` through `16.4.4` and `15.0.0` through `15.5.28`.\n- Look for `dangerouslyAllowSVG` in `next.config.js` or `next.config.mjs`; the flaw matters when the app serves `/_next/image` on a self-hosted server.\n- Check whether the deployment is self-hosted rather than on a managed host.","fix":"- next `16.x`: move to `16.4.5`\n- next `15.x`: move to `15.5.29`","status":"open","published_at":"2026-11-03T18:39:51+00:00","first_seen_at":"2026-11-09T22:53:14+00:00","triaged_at":"2026-11-09T22:54:33+00:00","updated_at":"2026-11-09T22:54:33+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-11-09T22:54:33Z","model":"claude-haiku-5-5","output":{"fix":"- next `16.x`: move to `16.4.5`\n- next `15.x`: move to `15.5.29`","reach":"internet","title":"Next.js: image optimizer processes SVGs that the config disables","impact":"medium","summary":"Self-hosted Next.js apps can have the image optimizer at /_next/image process an attacker-supplied SVG even when SVG support is turned off with dangerouslyAllowSVG set to false. This reaches an SVG parser the application meant to keep disabled, which raises the risk of denial of service and SVG decoder flaws.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["next.js","self-hosted"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"attacker reaches an SVG parser; denial of service or decoder bugs","analyst_note":"","how_to_check":"- Check the installed version with `npm ls next`; affected are `16.0.0` through `16.4.4` and `15.0.0` through `15.5.28`.\n- Look for `dangerouslyAllowSVG` in `next.config.js` or `next.config.mjs`; the flaw matters when the app serves `/_next/image` on a self-hosted server.\n- Check whether the deployment is self-hosted rather than on a managed host.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["managed-hosting"],"who_is_affected":"Self-hosted Next.js deployments that use the built-in image optimizer at /_next/image are exposed, even when SVG support is disabled in the config. Apps on managed hosting, or apps that do not serve images through the optimizer, are not described as affected by the sources.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"no","severity_if_unknown":"unknown"},"cost_usd":0.000787,"input_tokens":4701,"output_tokens":633,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-119347':10A,18A '-2026':9A,17A '/_next/image':37B,88C '33qx':14A '7qx7':13A 'app':30B 'applic':62B,116C 'attack':41B,96C 'attacker-suppli':40B,95C 'bypass':3A 'cve':8A,16A 'dangerouslyallowsvg':52B,106C 'decod':77B,129C 'default':109C 'denial':72B,124C 'deploy':83C 'disabl':66B,104C,120C 'even':44B,99C 'exposur':122C 'fals':55B,107C 'flaw':78B 'ghsa':12A 'ghsa-7qx7-33qx-rqx2':11A 'host':25B,28B,82C 'imag':6A,34B,86C 'increas':121C 'intend':117C 'keep':65B,119C 'made':91C 'meant':63B 'next':19A,20A 'next.js':5A,21B,29B,85C 'optim':7A,35B,87C 'parser':60B,114C 'process':38B,93C 'rais':68B 'reach':57B,111C 'reject':2A 'risk':70B 'rqx2':15A 'runtim':22B 'self':24B,27B,81C 'self-host':23B,26B,80C 'servic':74B,126C 'set':53B 'suppli':42B,97C 'support':47B,102C 'svg':1A,43B,46B,59B,76B,98C,101C,113C,128C 'turn':49B 'vulner':130C","nicknames":[],"mitigations":[],"who_affected":"Self-hosted Next.js deployments that use the built-in image optimizer at /_next/image are exposed, even when SVG support is disabled in the config. Apps on managed hosting, or apps that do not serve images through the optimizer, are not described as affected by the sources.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["next"],"ptokens":["next"],"labels":["medium","nextjs","npm","runtime","selfhosted"],"campaign_type":null,"search_a":"'-119347':10A,18A '-2026':9A,17A '33qx':14A '7qx7':13A 'bypass':3A 'cve':8A,16A 'ghsa':12A 'ghsa-7qx7-33qx-rqx2':11A 'imag':6A 'next':19A,20A 'next.js':5A 'optim':7A 'reject':2A 'rqx2':15A 'svg':1A","search_b":"'/_next/image':37B 'app':30B 'applic':62B 'attack':41B 'attacker-suppli':40B 'dangerouslyallowsvg':52B 'decod':77B 'denial':72B 'disabl':66B 'even':44B 'fals':55B 'flaw':78B 'host':25B,28B 'imag':34B 'keep':65B 'meant':63B 'next.js':21B,29B 'optim':35B 'parser':60B 'process':38B 'rais':68B 'reach':57B 'risk':70B 'runtim':22B 'self':24B,27B 'self-host':23B,26B 'servic':74B 'set':53B 'suppli':42B 'support':47B 'svg':43B,46B,59B,76B 'turn':49B","search_c":"'/_next/image':88C 'applic':116C 'attack':96C 'attacker-suppli':95C 'dangerouslyallowsvg':106C 'decod':129C 'default':109C 'denial':124C 'deploy':83C 'disabl':104C,120C 'even':99C 'exposur':122C 'fals':107C 'host':82C 'imag':86C 'increas':121C 'intend':117C 'keep':119C 'made':91C 'next.js':85C 'optim':87C 'parser':114C 'process':93C 'reach':111C 'self':81C 'self-host':80C 'servic':126C 'suppli':97C 'support':102C 'svg':98C,101C,113C,128C 'vulner':130C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-03T18:39:51+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"ghsa-repo","external_id":"GHSA-7qx7-33qx-rqx2","url":"https://github.com/vercel/next.js/security/advisories/GHSA-7qx7-33qx-rqx2","severity":"medium","published_at":"2026-11-03T18:39:51+00:00","modified_at":"2026-11-06T10:20:02+00:00","first_seen_at":"2026-11-09T22:53:14+00:00","fetched_at":"2026-11-09T22:53:14+00:00","note":null}],"documents":[{"id":110396,"url":"https://github.com/vercel/next.js/security/advisories/GHSA-7qx7-33qx-rqx2","title":"Maintainer's advisory: github.com","kind":"vendor","source":"ghsa-repo","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Maintainer's advisory: github.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}