---
id: "TECH-202610-nuxt-image-s-default-ipx-route-lets-one-crafted-image-crash-"
kind: "technique"
aliases: []
title: "Nuxt Image's default /_ipx route lets one crafted image crash the server and possibly run code (ipx multi-page decode overflow, no CVE yet)"
severity: "high"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: [{"name": "@nuxt/image", "fixed": ["2.2.1"], "affected": ">= 2.0.0, < 2.2.1", "ecosystem": "npm"}, {"name": "@nuxt/image", "fixed": ["1.11.2"], "affected": ">= 1.0.0, < 1.11.2", "ecosystem": "npm"}, {"name": "@nuxt/image", "fixed": [], "affected": ">= 0.6.0, < 1.0.0", "ecosystem": "npm"}, {"name": "ipx", "fixed": ["2.1.2", "3.1.3", "4.1.0"], "affected": "< 2.1.2, >= 3.0.0 < 3.1.3, >= 4.0.0-0 < 4.1.0", "ecosystem": "npm"}]
ecosystems: []
tags: ["early-warning", "ipx", "nuxt", "self-hosted", "sharp", "technique"]
not_affected_if: []
published_at: "2026-10-30T00:00:00+00:00"
first_seen_at: "2026-10-31T22:38:35+00:00"
updated_at: "2026-10-31T22:38:35+00:00"
sources: [{"source": "analyst", "url": null, "first_seen_at": "2026-10-31T22:38:35+00:00"}]
---

# Nuxt Image's default /_ipx route lets one crafted image crash the server and possibly run code (ipx multi-page decode overflow, no CVE yet)

Nuxt published GHSA-p5vf-pjf5-ggj3 (@nuxt/image) and GHSA-qf89-6xm4-66wm (ipx) on 2026-10-30, rated CVSS 8.1 with no CVE yet. ipx has an integer overflow when it decodes multi-page images (TIFF, GIF, WebP, AVIF). @nuxt/image registers the unauthenticated /_ipx route by default on server deployments. If an attacker can get their own image bytes in as an IPX source (an upload under a public path, a user-content host in image.domains, or arbitrary remote hosts allowed), a single request with no modifier needed reliably crashes the process. The memory corruption may also allow remote code execution with that process's privileges; in the reporter's reproduction it ran as root in a stock container. Affected versions: @nuxt/image 2.0.0 to <2.2.1, 1.0.0 to <1.11.2, and 0.6.x (end of life, no fix); ipx <2.1.2, 3.0.0 to <3.1.3, 4.0.0 to <4.1.0. Not affected: Vercel, Netlify and AWS Amplify image providers (unless image.ipx is set), Cloudflare Workers and other edge runtimes, and static nuxt generate builds unless the build reads attacker images. Cloudflare shipped an emergency WAF rule (disabled by default, partial coverage) on 2026-10-30. No in-the-wild exploitation reported.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- npm:@nuxt/image affected >= 2.0.0, < 2.2.1 fixed 2.2.1
- npm:@nuxt/image affected >= 1.0.0, < 1.11.2 fixed 1.11.2
- npm:@nuxt/image affected >= 0.6.0, < 1.0.0 fixed ?
- npm:ipx affected < 2.1.2, >= 3.0.0 < 3.1.3, >= 4.0.0-0 < 4.1.0 fixed 2.1.2, 3.1.3, 4.1.0

## How to check

Run npm ls @nuxt/image ipx and compare against the affected ranges. Check whether the app runs as a Node server or container with the default ipx provider (or image.provider: 'ipx'). If so, check whether GET /_ipx/... answers publicly. Check whether users can upload images into served public paths, or whether image.domains lists hosts other people can write to. Repeated process crashes on /_ipx requests are a possible sign of probing.

## Fix

Upgrade @nuxt/image to 2.2.1 or 1.11.2 and confirm npm ls ipx resolves to 4.1.0, 3.1.3 or 2.1.2 (ipx is an optional dependency, so upgrade it directly if you also depend on it). Move off 0.x. On 2.2.1, consider image.ipx.restrictDecoders if any source is untrusted. Until patched: register your own /_ipx handler returning 404, or block /_ipx/** at the reverse proxy; keep uploads out of served paths and restrict image.domains to hosts you control. Restricting modifiers does not help. Cloudflare users can enable Managed Ruleset rule ...5b82bffe ('Nuxt Image / IPX - Explicit GIF or Animation Modifier Exposure'), but it is only partial coverage.

## Timeline

- 2026-10-31T22:38:35+00:00 analyst

## Documents

- [describes] @CFchangelog: Emergency WAF release adds a detection rule for the Nuxt Image and IPX vulnerabi https://x.com/CFchangelog/status/2116659277838385262
- [describes] @nuxt/image GHSA-p5vf-pjf5-ggj3: unauthenticated command execution through the default /_ipx route https://github.com/nuxt/image/security/advisories/GHSA-p5vf-pjf5-ggj3
- [describes] ipx GHSA-qf89-6xm4-66wm: integer overflow in multi-page image decoding https://github.com/unjs/ipx/security/advisories/GHSA-qf89-6xm4-66wm

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
