News Analysis 9 min read

Next.js Out-Of-Band Fixes Put Runtime Proof Ahead Of Version Labels

Next.js 16.4.1 and 15.5.28 address two unauthenticated RCE paths and a Server Actions DoS. Teams must verify framework, React, and sharp runtimes.

By Protocol Report Editorial | Updated October 25, 2026
Typed memory blocks, an untrusted image sheet, and a loop of dense requests enter three chambers of a dark application runtime before clean blue data paths cross into an isolated patched server
Short Version

Next.js released 16.4.1 and 15.5.28 on October 14 for three upstream-dependent security issues. Next.js 16 applications using App Router Cache Components face an unauthenticated remote-code path when a use cache function returns multiple typed arrays. A separate image-processing flaw can lead to remote code execution on glibc-based Linux when vulnerable Next.js deployments process SVG input through Image Optimization. App Router deployments with at least one Server Action also face crafted requests that can consume a process's CPU and block other work.

The fixes do not share one exposure test. Teams need to map Next.js version, router mode, Cache Components, use cache return types, Server Actions, operating system, Image Optimization, and the resolved sharp and React Server Components packages. Upgrade supported branches to 16.4.1 or 15.5.28, move older branches to a supported patched line, rebuild immutable artifacts, and verify the dependency tree inside the running workload. The public vendor record does not report active exploitation, so patch urgently without turning every vulnerable deployment into a presumed incident.

Key Takeaways

  • check_circle Next.js 16.0.0 through 16.4.0 is affected by the use cache typed-array RCE; the published fix is 16.4.1 and no workaround is listed.
  • check_circle The SVG Image Optimization RCE reaches a broad version range on glibc-based Linux; Next.js names 15.5.28 and 16.4.1 as patched releases.
  • check_circle Sharp 0.35.5 or later is the vendor's workaround for the image path, but the resolved production dependency still needs verification after install and build.
  • check_circle The Server Actions DoS affects App Router applications with at least one Server Action; Pages Router applications and apps without Server Actions are excluded by the advisory.
  • check_circle A package manifest is not deployment proof because lockfiles, bundled output, container layers, serverless functions, and long-lived processes can preserve older code.
  • check_circle The public advisories provide no confirmed exploitation claim or incident indicators, so forensic escalation should follow evidence rather than the severity score alone.

One Release Covers Three Different Exposure Tests

Vercel describes the October 14 update as an out-of-band release containing fixes postponed from the September cycle because upstream dependencies were not ready. Version 16.4.1 is the Active LTS target and 15.5.28 is the Maintenance LTS target. The release groups two critical remote-code-execution issues and one high-severity denial-of-service issue, but they do not apply to the same applications.

That distinction matters during inventory. A Next.js 16 App Router application may be exposed through Cache Components even if it never processes uploaded images. A much older application may avoid that cache path but still expose Image Optimization on a vulnerable Linux runtime. A Server Actions deployment has a separate availability risk. Checking only for Next.js as a package produces too many false conclusions in both directions.

The safe response is to patch the release line first and use configuration mapping to prioritize validation, not to delay the update. Vercel explicitly recommends upgrading 16.x even when teams do not believe they have the vulnerable cache-function pattern. For older branches, the published fixed 15.x release is 15.5.28; applications below that supported line need an upgrade plan rather than an assumption that an earlier branch received a private backport.

Cache Serialization Crosses Into Code Execution

GHSA-673q-mjm6-r5xr affects Next.js 16.0.0 through 16.4.0. The application must use App Router with Cache Components and contain a use cache function that returns multiple typed arrays. Under those conditions, an unauthenticated network request can reach remote code execution. The advisory assigns a critical 9.5 score and lists 16.4.1 as the patched release.

The Next.js record points to a related React Server Components advisory. React's upstream fix spans react-server-dom-webpack, react-server-dom-turbopack, and react-server-dom-parcel releases across React 19. The practical unit of remediation is therefore the installed framework tree, not a source search for one directive. Next.js controls compatible upstream versions, but custom dependency overrides and unusual bundling can preserve a vulnerable package.

There is no published configuration workaround for an affected Next.js application. Removing one known function may reduce an observed route but does not supply the assurance of the patched serialization logic, and Vercel tells users to upgrade even when no similar function is apparent. Confirm both the Next.js version and the resolved React Server Components package after the package manager finishes.

SVG Processing Has A Different Runtime Boundary

GHSA-2464-fhr4-w9xw covers an upstream memory flaw reached through Next.js Image Optimization when SVG input is processed on glibc-based Linux. The published affected range reaches from Next.js 10 through 15.5.27 and the 16.x releases before 16.4.1. An unauthenticated request can produce remote code execution when the deployment and input path meet those conditions.

The advisory names sharp 0.35.5 or later as a workaround and says fresh installs or the patched Next.js releases should provide a fixed sharp version. Operators should still inspect the resolved lockfile and production image. Existing caches, package overrides, optional-dependency behavior, architecture-specific installs, and copied standalone output can make the artifact in production differ from the dependency range visible in package.json.

Exposure mapping should identify whether requests can cause server-side SVG processing, which deployment targets use glibc Linux, and where Image Optimization runs. A content-type filter at a proxy is not equivalent to the framework fix because file extensions and declared types can disagree with content. Update the processing component, rebuild, and test image handling using safe files rather than relying on perimeter classification.

Server Actions Add An Availability Failure

GHSA-p3m5-59mp-jv5r affects Next.js 13.0.0 through 15.5.27 and 16.0.0 through 16.4.0 when an App Router application has at least one Server Action. Crafted requests can drive excessive CPU consumption in the process and prevent it from serving other requests. The vendor excludes Pages Router applications and App Router applications without Server Actions.

This is a denial-of-service boundary, not evidence of code execution or data theft. Rate limits, queues, process supervision, and autoscaling may reduce the operational effect, but the advisory lists no workaround besides upgrading. Scaling alone can also multiply cost while an attacker continues sending work that each new process handles inefficiently.

After patching, validate behavior under controlled load and confirm that old processes drained. Review CPU saturation, request-rate changes, restart loops, latency, and autoscaling around the exposure period. Those records may establish availability abuse, but they should not be used to claim compromise without separate evidence from one of the code-execution paths.

Build Output Is The Evidence That Matters

Start with all repositories and services that produce a Next.js server, then trace what reaches users. Record the direct Next.js version, resolved React Server Components packages, resolved sharp version, router mode, enabled features, base operating system, and deployment platform. Include preview environments, internal consoles, branch deployments, serverless functions, containers, and self-hosted Node processes, not only the primary public domain.

Upgrade to 16.4.1 or 15.5.28 as appropriate, refresh the lockfile with the project's package manager, and rebuild from a clean dependency cache. Inspect the completed artifact or container rather than stopping at a successful install. A useful release record contains the source commit, lockfile hash, Next.js and transitive versions, base-image digest, build output digest, deployment time, and workload instances that received it.

Terminate or drain old processes and invalidate deployment caches that can restore an earlier bundle. For serverless platforms, verify every region and function version. For containers, confirm the live pod or task digest. For standalone output, inspect the copied node_modules subset. These checks prevent a familiar failure where the repository is patched while a worker, image layer, or rollback target remains vulnerable.

Incident Response Should Follow Local Evidence

The public Next.js and upstream advisories reviewed here do not claim exploitation in the wild, publish indicators of compromise, or identify affected customers. Critical severity justifies rapid patching because the RCE paths are unauthenticated. It does not prove that an exposed application ran attacker code. Keep vulnerability remediation and incident declaration as related but distinct decisions.

If a vulnerable route was internet reachable, preserve reverse-proxy, application, platform, process, container, identity, and network records before retention expires. Look for anomalous image requests, cache or Server Action request shapes, unexpected child processes, file writes, outbound connections, new scheduled tasks, workload-identity use, and secret access. Avoid publishing speculative exploit signatures unless they are backed by vendor guidance or validated local evidence.

Where evidence supports code execution, isolate and rebuild the workload, revoke sessions, rotate secrets available to the server identity, review connected databases and cloud roles, and investigate adjacent systems from the first suspicious event. Where evidence is clean, close with documented coverage and residual gaps: exact vulnerable interval, routes tested, logs available, artifact versions, and limits caused by missing telemetry.

Checklist

  • Inventory every Next.js deployment, including previews, serverless functions, containers, internal tools, branch environments, and rollback images.
  • Map Next.js version, router mode, Cache Components, use cache return types, Server Actions, Image Optimization, glibc Linux, React RSC packages, and sharp.
  • Upgrade supported applications to 16.4.1 or 15.5.28 and move older branches to a supported patched line.
  • Regenerate the lockfile as appropriate, rebuild from clean caches, and verify exact Next.js, React Server Components, and sharp versions inside the artifact.
  • Drain old processes and confirm every region, pod, task, function, worker, and rollback target now points to the patched build.
  • Preserve request, process, filesystem, identity, platform, and network evidence for exposed RCE paths without presuming exploitation.
  • If code execution is supported by evidence, rebuild from clean artifacts and rotate sessions, workload secrets, database credentials, and cloud authority.

Sources

Related Articles

Continue Reading