Register for the AI for Security Summit: Join Figma, Perplexity & Wiz

CVE-2026-18329
NGINX vulnerability analysis and mitigation

Overview

CVE-2026-18329 is an authentication/authorization bypass vulnerability in the NGINX JavaScript (njs) and QuickJS (qjs) engines, classified as a "fail open" flaw (CWE-636). When a js_access handler performs asynchronous request body processing and an exception is thrown during access-control evaluation before an explicit denial is returned, the access phase fails open — allowing the request to proceed rather than being blocked. Affected versions include NGINX JavaScript 0.9.9 and all versions from 1.0.0 up to (but not including) 1.0.1. The vulnerability was published on September 2, 2026, with a CVSS v3.1 base score of 8.2 (High) and a CVSS v4.0 base score of 8.8 (High) (GitHub Advisory, F5 Advisory).

Technical details

The root cause is a "Not Failing Securely" (CWE-636) design flaw in the njs and qjs JavaScript engine integration with NGINX's js_access phase. When a js_access handler uses asynchronous request body processing, an unhandled exception thrown during the asynchronous access-control evaluation can cause the access phase to complete without an explicit deny decision, effectively failing open and granting the request access to protected resources. Exploitation requires no authentication, no special privileges, and no user interaction — an attacker simply sends a crafted HTTP request designed to trigger the error condition in the access validation logic. This is a data plane issue only; the control plane is not exposed (GitHub Advisory, F5 Advisory).

Impact

Successful exploitation allows an unauthenticated remote attacker to bypass js_access controls and gain unauthorized access to resources that should have been denied, resulting in high confidentiality impact and low integrity impact with no availability impact. The vulnerability is limited to the data plane, meaning backend application data and protected endpoints are at risk, but NGINX management interfaces are not directly exposed. Depending on what resources are protected by the affected js_access handler, exploitation could expose sensitive data, allow unauthorized API access, or enable further lateral movement into backend systems (GitHub Advisory, F5 Advisory).

Exploitability

As of the time of publication, there is no public proof-of-concept exploit and no evidence of in-the-wild exploitation (GitHub Advisory). The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. The EPSS score is approximately 0.376%, placing it in the 31st percentile for exploitation probability within 30 days. The attack is network-accessible, requires no privileges or user interaction, and is rated as automatable by NVD SSVC analysis, which increases the risk of future mass exploitation if a PoC becomes public (GitHub Advisory).

Exploitation steps

  1. Reconnaissance: Identify NGINX instances using njs or qjs with js_access handlers configured for access control, particularly those performing asynchronous request body processing. Tools like Shodan or Censys can identify exposed NGINX servers; version fingerprinting can help narrow targets to affected njs versions (0.9.9 or 1.0.0).
  2. Craft malicious HTTP request: Construct an HTTP request targeting an endpoint protected by a js_access handler that uses asynchronous body processing. The request should be designed to trigger an error or exception condition during the asynchronous access-control evaluation (e.g., malformed body content, unexpected content types, or oversized payloads that cause processing errors).
  3. Trigger the fail-open condition: Send the crafted request to the target NGINX server. If the exception is thrown before the handler returns an explicit deny, the js_access phase fails open and the request is forwarded to the protected backend resource.
  4. Access protected resources: With the access control bypassed, the attacker can interact with the backend resource as if authorized, potentially retrieving sensitive data, invoking privileged API endpoints, or establishing a foothold for further exploitation (GitHub Advisory, F5 Advisory).

Indicators of compromise

  • Network: Unexpected HTTP requests reaching backend resources that should be blocked by js_access handlers; unusual traffic patterns to protected endpoints from unauthenticated or anonymous sources.
  • Logs: NGINX error logs showing JavaScript exceptions or unhandled errors in js_access phase (e.g., njs runtime errors) coinciding with requests that were ultimately forwarded rather than denied; access logs showing requests to protected paths from IPs with no prior authentication activity.
  • Application: Backend application logs showing access from sources that should have been denied at the NGINX layer; anomalous data retrieval or API calls from unexpected clients.
  • Process: NGINX worker processes logging njs/qjs exception stack traces during request processing, particularly for endpoints configured with asynchronous js_access handlers.

Mitigation and workarounds

F5 has released a patch in NGINX JavaScript version 1.0.1, which addresses the fail-open behavior in the js_access asynchronous exception handling path. Users running njs 0.9.9 or 1.0.0 should upgrade to njs 1.0.1 or later immediately (F5 Advisory). As a workaround, administrators should review all js_access handlers that perform asynchronous request body processing and add explicit exception handling (try/catch blocks) to ensure that any unhandled error results in an explicit access denial rather than a pass-through. Additionally, monitoring NGINX error logs for njs runtime exceptions can help detect exploitation attempts while patching is in progress.

Community reactions

The vulnerability was included in Microsoft's September 2026 Patch Tuesday coverage, which highlighted 96+ flaws, indicating broad industry awareness (BleepingComputer). Security monitoring platforms including Tenable (Nessus plugin 342800) and threat intelligence aggregators have added detection coverage shortly after disclosure. No notable individual researcher commentary or significant social media debate has been identified beyond standard vulnerability tracking and aggregation activity.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

libnginx-mod-js

Fixed

sid

libnginx-mod-js: 1.0.1-1

Fixed

trixie

libnginx-mod-js

Fixed

Ubuntu

Unknown

devel

libnginx-mod-js

Unknown

noble

libnginx-mod-js

Unknown

noble (esm-apps)

libnginx-mod-js

Unknown

resolute

libnginx-mod-js

Unknown

resolute (esm-apps)

libnginx-mod-js

Unknown

SourceThis report was generated using AI

Related NGINX vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-78689CRITICAL9.2
  • NGINX logoNGINX
  • libnginx-mod-js
NoYesSep 02, 2026
CVE-2026-18329HIGH8.8
  • NGINX logoNGINX
  • nginx
NoYesSep 02, 2026
CVE-2026-60005HIGH8.8
  • NGINX logoNGINX
  • nginx
NoYesJul 15, 2026
CVE-2026-78222HIGH8.7
  • NGINX logoNGINX
  • nginx-mod-njs
NoYesSep 02, 2026
CVE-2026-90439MEDIUM6.9
  • NGINX logoNGINX
  • cpe:2.3:a:f5:nginx_plus
NoYesSep 15, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management