Vercel has released emergency security patches for two critical-severity vulnerabilities in Next.js, one of the most widely deployed React frameworks on the internet. Both flaws permit unauthenticated remote code execution — the worst-case scenario for a framework that sits directly on the public internet handling HTTP requests. The first flaw is exploitable through a specially crafted AVIF image file processed by Next.js's image optimization pipeline. The second, tracked as CVE-2026-75604, is a path traversal vulnerability affecting Next.js servers running on Windows filesystems.
If your organization self-hosts Next.js applications — on Windows Server, in containers, or on Linux infrastructure — assume you are exposed until you have verified your deployed version against Vercel's advisory. Unauthenticated RCE in an internet-facing web framework is precisely the class of vulnerability that gets weaponized within hours of disclosure. The discovery credit goes to Hacktron, and the technical details are now public, which means exploitation attempts should be expected, not merely planned for.
Technical Analysis
Affected Products and Platforms
- Product: Next.js (Vercel's React framework), self-hosted deployments
- Platforms: CVE-2026-75604 specifically affects Next.js servers backed by a Windows filesystem (Windows Server, Windows-based containers, developer workstations exposed via reverse proxy). The AVIF parsing flaw is platform-independent and affects any deployment using Next.js image optimization (
next/image/ the/_next/imageoptimizer endpoint) where AVIF input can be reached. - Exposure surface: Any Next.js instance reachable from untrusted networks. Frameworks fronted by CDNs, WAFs, or load balancers are still exposed — these flaws trigger at the application layer, after TLS termination and edge caching.
CVE-2026-75604 — Windows Path Traversal
This vulnerability exploits differences in how Windows resolves filesystem paths versus how Next.js normalizes and validates request paths. Windows accepts both forward slashes and backslashes as path separators, supports NTFS alternate data streams, and handles a variety of encoded and mixed-separator sequences that Linux-native path validation logic frequently misses. An unauthenticated remote attacker can craft a request URI containing traversal sequences (..\, ..%5c, mixed ..\/, or Unicode/URL-double-encoded variants) that escape the intended public/static directory root and read or influence execution of files elsewhere on the host filesystem. In the disclosed case, the traversal chains into code execution — meaning the attacker is not merely reading files but reaching a code path that results in arbitrary command execution under the identity of the Node.js process.
Defensive implications:
- The attack is a single crafted HTTP request — no authentication, no session, no user interaction.
- The Node.js worker process (typically
node.exeon Windows) executes the attacker's payload, so post-exploitation telemetry will shownode.exespawning unexpected child processes.
AVIF Image Parsing Flaw
The second vulnerability resides in the AVIF image handling path. Next.js's built-in image optimization fetches and transforms images on demand; when a specially crafted, malformed AVIF file is submitted to (or fetched through) the optimizer, the parsing logic can be driven into a condition that yields code execution. Image parsing vulnerabilities are historically high-value targets because the parser must, by design, consume fully attacker-controlled binary input. No authentication is required — the optimizer endpoint is typically exposed by default at /_next/image.
Exploitation Status
At the time of writing, these flaws have been publicly disclosed with technical credit to the researchers at Hacktron, and patches are available from Vercel. Given the combination of (a) public technical details, (b) unauthenticated reachability, and (c) code execution impact, defenders should operate under the assumption that proof-of-concept tooling and scanning are imminent or already underway. Treat this with the same urgency as prior mass-exploited web framework flaws. Verify CISA's Known Exploited Vulnerabilities catalog daily for the addition of CVE-2026-75604.
Detection & Response
The highest-fidelity detections for this threat focus on two observable behaviors: (1) traversal and optimizer-abuse patterns in HTTP request logs, and (2) the Node.js process spawning shells or scripting interpreters — the canonical post-RCE signal.
Sigma Rules
---
title: Next.js Node Process Spawning Shell or Script Interpreter
id: 3f8a1c52-7b2d-4e91-a6c4-9d5e2f8b1a07
status: experimental
description: Detects node.exe or node spawning command shells, PowerShell, or script interpreters, consistent with post-exploitation activity following remote code execution in a Next.js server such as CVE-2026-75604 or the AVIF parsing flaw.
references:
- https://thehackernews.com/2026/08/nextjs-patches-critical-avif-and.html
- https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/08/06
tags:
- attack.execution
- attack.t1059
- attack.t1190
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\node.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\certutil.exe'
- '\bitsadmin.exe'
- '\curl.exe'
condition: selection_parent and selection_child
falsepositives:
- Build pipelines and CI/CD agents running Node.js build scripts that legitimately invoke shells (scope these by host or service account)
- PM2 or similar process managers performing controlled restarts
level: high
---
title: Suspicious Path Traversal Sequences in Web Server Request URI
id: 8c2e5b14-4d6f-4a38-b9e1-7c3d9a2f5e68
status: experimental
description: Detects URL-encoded and mixed-separator Windows path traversal sequences in HTTP request URIs targeting Next.js routes, consistent with exploitation of CVE-2026-75604 against Windows-hosted Next.js servers.
references:
- https://thehackernews.com/2026/08/nextjs-patches-critical-avif-and.html
- https://attack.mitre.org/techniques/T1190/
author: Security Arsenal
date: 2026/08/06
tags:
- attack.initial_access
- attack.t1190
logsource:
category: webserver
detection:
selection_traversal:
cs-uri|contains:
- '..%5c'
- '..%255c'
- '..%2f'
- '..%252f'
- '..\\'
- '%2e%2e%5c'
- '%2e%2e/'
- '..;/'
selection_nextjs:
cs-uri|contains:
- '/_next/'
- '/api/'
condition: selection_traversal or (selection_nextjs and selection_traversal)
falsepositives:
- Vulnerability scanners and authorized penetration tests (correlate with known scanner source IPs)
level: high
---
title: Suspicious AVIF File Dropped in Web-Writable or Temp Directories
id: 5a1d9f36-2e8b-4c47-9d3a-6f4b8e1c7a29
status: experimental
description: Detects creation of AVIF image files in temporary, cache, or upload directories on Windows systems, which may indicate staged payloads targeting the Next.js AVIF image parsing vulnerability.
references:
- https://thehackernews.com/2026/08/nextjs-patches-critical-avif-and.html
- https://attack.mitre.org/techniques/T1190/
author: Security Arsenal
date: 2026/08/06
tags:
- attack.initial_access
- attack.t1190
logsource:
category: file_event
product: windows
detection:
selection_path:
TargetFilename|contains:
- '\AppData\Local\Temp\'
- '\Windows\Temp\'
- '\uploads\'
- '\inetpub\'
selection_ext:
TargetFilename|endswith: '.avif'
condition: selection_path and selection_ext
falsepositives:
- Legitimate image processing workloads; baseline directories used by your Next.js image cache and tune accordingly
level: medium
Microsoft Sentinel / Defender KQL
// Hunt 1: Node.js server processes spawning shells or LOLBins (post-RCE behavior)
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessFileName =~ "node.exe"
| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe", "certutil.exe", "bitsadmin.exe", "curl.exe")
| project TimeGenerated, DeviceName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, AccountName, InitiatingProcessId, ProcessId
| order by TimeGenerated desc;
// Hunt 2: Path traversal patterns in IIS / web server logs ingested via W3CIISLog or CEF
W3CIISLog
| where TimeGenerated > ago(7d)
| where csUriStem has_any ("..%5c", "..%255c", "..%2f", "..%252f", "%2e%2e", "..\\", "..;/")
or csUriQuery has_any ("..%5c", "..%255c", "..%2f", "..%252f", "%2e%2e", "..\\")
| project TimeGenerated, Computer, sIP, cIP, csMethod, csUriStem, csUriQuery, scStatus, csUserAgent
| order by TimeGenerated desc;
// Hunt 3: Traversal strings in Syslog/CEF forwarded web or app logs (Linux-hosted Next.js)
CommonSecurityLog
| where TimeGenerated > ago(7d)
| where RequestURL has_any ("..%5c", "..%255c", "..%2f", "%2e%2e", "..;/")
and RequestURL has_any ("/_next/", "/api/")
| project TimeGenerated, SourceIP, DestinationIP, RequestMethod, RequestURL, DeviceAction
| order by TimeGenerated desc;
Velociraptor VQL
-- Hunt for Node.js server processes that have spawned shells or suspicious children,
-- indicative of post-exploitation following Next.js RCE (CVE-2026-75604 / AVIF flaw)
SELECT Pid, Ppid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE Name =~ '(?i)(cmd|powershell|pwsh|wscript|cscript|mshta|rundll32|certutil|bitsadmin)\.exe'
AND Ppid IN (
SELECT Pid FROM pslist() WHERE Name =~ '(?i)node(\.exe)?$'
)
-- Hunt for staged AVIF payloads in temp and web-writable directories
SELECT FullPath, Size, Mtime, Atime
FROM glob(globs=[
'C:/Windows/Temp/**/*.avif',
'C:/Users/*/AppData/Local/Temp/**/*.avif',
'C:/inetpub/**/*.avif',
'C:/**/uploads/**/*.avif'
])
ORDER BY Mtime DESC
Remediation & Verification Script
# Verify Next.js version exposure and confirm patch status on Windows hosts
# Run on each Windows server hosting a self-hosted Next.js application
$ErrorActionPreference = 'SilentlyContinue'
# 1. Locate installed Next.js versions across common deployment paths
$searchPaths = @('C:\inetpub', 'C:\apps', 'C:\srv', 'C:\home', 'D:\')
$found = @()
foreach ($base in $searchPaths) {
if (Test-Path $base) {
$found += Get-ChildItem -Path $base -Recurse -Filter 'package.json' -ErrorAction SilentlyContinue |
Where-Object { $_.FullName -notmatch 'node_modules' }
}
}
foreach ($pkg in $found) {
$json = Get-Content $pkg.FullName -Raw | ConvertFrom-Json
$nextVer = $json.dependencies.next
if (-not $nextVer) { $nextVer = $json.devDependencies.next }
if ($nextVer) {
Write-Host "[FOUND] $($pkg.FullName) -> next: $nextVer" -ForegroundColor Yellow
}
}
# 2. Check globally and locally installed next packages
Write-Host "`n[GLOBAL] npm ls -g next:" -ForegroundColor Cyan
npm ls -g next 2>$null
# 3. Audit each project directory for the vulnerable package
foreach ($pkg in $found) {
$dir = Split-Path $pkg.FullName -Parent
if (Test-Path (Join-Path $dir 'node_modules\next\package.json')) {
$installed = (Get-Content (Join-Path $dir 'node_modules\next\package.json') -Raw | ConvertFrom-Json).version
Write-Host "[INSTALLED] $dir -> next@$installed" -ForegroundColor Cyan
Write-Host " ACTION: Compare against Vercel's patched versions at https://github.com/vercel/next.js/security/advisories" -ForegroundColor Magenta
Write-Host " PATCH: cd '$dir'; npm install next@latest; npm audit" -ForegroundColor Green
}
}
# 4. Hunt IIS logs from the last 72 hours for traversal probes (CVE-2026-75604)
$cutoff = (Get-Date).AddDays(-3)
$logDirs = @('C:\inetpub\logs\LogFiles')
foreach ($logDir in $logDirs) {
if (Test-Path $logDir) {
Get-ChildItem $logDir -Recurse -Filter '*.log' |
Where-Object { $_.LastWriteTime -gt $cutoff } |
Select-String -Pattern '(\.\.%5c|\.\.%255c|\.\.%2f|%2e%2e|\.\.\\|\.\.;/)' -AllMatches |
ForEach-Object {
Write-Host "[ALERT] $($_.Path):$($_.LineNumber) :: $($_.Line.Trim())" -ForegroundColor Red
}
}
}
Write-Host "`n[DONE] Review all [FOUND]/[INSTALLED] entries and upgrade to the patched Next.js release immediately." -ForegroundColor Green
Remediation
-
Upgrade Next.js immediately. Update every self-hosted deployment to the patched release specified in Vercel's security advisory. Verify the exact fixed version against the official advisories at
https://github.com/vercel/next.js/security/advisoriesand the Vercel changelog — do not assume your current lockfile version is safe. Runnpm install next@latest(or the pinned patched version) followed bynpm audit, then redeploy and restart all Node.js workers. Remember: containers, PM2-managed services, and serverless-adjacent self-hosted runners each carry their own copy of the framework. -
Inventory your exposure. Most organizations do not know how many Next.js applications they run. Sweep for
package.jsonfiles referencingnext, check container registries for images embedding Next.js, and review shadow-IT marketing sites, documentation portals, and internal dashboards — these are the deployments most likely to be forgotten and unpatched. -
Prioritize Windows-hosted instances. CVE-2026-75604 specifically targets Windows filesystems. Any Next.js server on Windows Server or Windows containers is your highest-priority patch target and your highest-priority retroactive hunt target.
-
Restrict the image optimizer. If you cannot patch immediately, reduce attack surface for the AVIF flaw: disable or restrict
/_next/imageviaimages.unoptimized: trueinnext.config.js, or block external access to the optimizer route at your reverse proxy/WAF. Where the optimizer must remain enabled, restrictremotePatternsinimagesconfiguration to a strict allowlist of trusted image origins — never permit arbitrary remote image fetches. -
WAF compensating controls (temporary only). Deploy rules blocking request URIs containing traversal sequences (
..%5c,%2e%2e,..\, double-encoded variants) targeting/_next/and/api/routes. This is a bridge, not a fix — encoding bypasses are trivial and patching remains mandatory. -
Retroactive threat hunting. Run the KQL and VQL hunts above across at least the last 30 days of telemetry. Because these flaws are unauthenticated and pre-patch, assume any publicly reachable instance was scanned and possibly exploited during the disclosure window. Look specifically for
node.exespawning shells, unexpected outbound connections from web-tier hosts, and AVIF files staged in temp directories. -
Harden the runtime. Ensure Next.js services run under least-privilege service accounts (never SYSTEM or a domain user), apply Windows Firewall or NSG egress filtering to web-tier hosts, and enable process creation logging with command-line capture (Event ID 4688 / Sysmon Event ID 1) so the detections above have telemetry to work with.
-
Monitor for KEV inclusion. Track CISA's Known Exploited Vulnerabilities catalog for CVE-2026-75604. If added, federal remediation deadlines apply to FCEB agencies, and the deadline serves as a useful forcing function for private-sector SLAs.
Related Resources
Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.