Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain genuinely signed SAML document
-
DeliveryInject entity-backed XML attributes
-
ExploitSubmit to njs-backed signed-XML consumer
-
ExecutionCanonicalization hides security attributes while signature validates
-
ImpactReplay/accept response bypassing expiry and Destination checks
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service Interpretation consistency
|
| Exploitation Conditions | Exploitation requires the target to be a signed-XML consumer that uses the njs XML module (either the built-in njs backend or the QuickJS backend) during canonicalization - nginx-saml running the built-in njs backend is the confirmed affected deployment. The attacker must first obtain a genuinely signed XML/SAML document, which the description explicitly calls out as requiring significant effort (reflected as AT:P in the CVSS 4.0 vector). Key limiting factors: the flaw cannot forge signatures or identities and cannot produce a new validly signed document, so the attacker is confined to manipulating attribute visibility on an already-signed artifact; impact is data-plane only with no control-plane exposure and no availability impact; and non-njs or non-signed-XML nginx deployments are unaffected. End-of-Technical-Support versions were not evaluated. |
| Impact | The vendor-assigned CVSS 4.0 base score is 8.3 (High), driven by AV:N/AC:L/PR:N/UI:N and VC:H. However, the AT:P (Attack Requirements: Present) metric is the decisive moderating signal: successful exploitation requires the attacker to invest significant effort in obtaining a genuinely signed XML document, since the flaw does NOT permit signature or identity forgery. This makes real-world exploitation materially harder than the headline score suggests. There is no EPSS score, no CISA KEV listing, and no public exploit code in the provided data, so exploitation status is 'no public exploit identified at time of analysis' - this is not a drop-everything priority. The impact is bounded: data-plane only, no control-plane exposure, no availability impact (VA:N), and only partial integrity impact (VI:L). The realistic priority is MODERATE-but-credible for the narrow population of signed-XML consumers using njs - specifically nginx-saml with the built-in njs backend, which F5 confirms is affected. One note: the input provides only a CVSS 4.0 vector with no EPSS, KEV, or POC signals, so the dynamic exploitation picture cannot be cross-referenced; the AT:P/signed-document requirement strongly implies targeted rather than widespread/opportunistic exploitation if it ever occurs. |
| Exploit ScenarioDerived | An unauthenticated attacker who has obtained a genuinely signed SAML response (a non-trivial, effortful prerequisite) submits it to an nginx-saml deployment running the built-in njs backend. Due to inconsistent canonicalization of entity-backed XML attributes, security-relevant attributes appear absent or truncated while libxml2 signature verification still succeeds, letting the attacker bypass expiry, Destination, and request-correlation checks to replay or reuse the response outside its intended context. No public exploit code is identified in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Canonicalization inconsistency in the NGINX JavaScript (njs) XML module lets an unauthenticated attacker who already holds a genuinely signed SAML/XML document cause entity-backed attributes to appear absent or truncated ($attr$Name returning undefined, $attrs derived from only the first attribute child) while signature verification still succeeds. nginx-saml running the built-in njs backend is the confirmed affected consumer, where this can bypass expiry, Destination, and request-correlation checks and enable replay or acceptance of a response outside its intended context; the flaw cannot forge signatures or identities and has no availability or control-plane impact. F5's advisory rates this 8.3 (High, CVSS 4.0 with AT:P reflecting the significant effort needed to obtain a validly signed document); no public exploit code was identified at time of analysis, and no KEV listing applies. There is no public exploit identified at time of analysis.
RemediationAI
No vendor-released patch was identified at time of analysis; monitor F5 advisory K000162615 (https://my.f5.com/manage/s/article/K000162615) for updated njs builds and apply them when published, and treat EoTS njs versions as unsupported. Because both the built-in njs and QuickJS backends exhibit the same canonicalization defect, switching backends is not a reliable mitigation. Practical compensating controls, with their trade-offs, are: reject or strip internal entity references in attribute values before canonicalization in the SAML/XML pipeline (trade-off: may reject legitimate documents that intentionally use entities); re-validate SAML attributes such as NotOnOrAfter, Destination, InResponseTo, and Audience using out-of-band expectations rather than the parsed document values (trade-off: extra application logic and possible false rejections); enforce single-use tracking of Assertion IDs to blunt replay (trade-off: shared state at scale); and if the njs XML module is not required for SAML processing, remove or disable it from the affected nginx deployment (trade-off: loss of that functionality). Do not rely on signature verification alone, because it can succeed while the downstream njs attribute view is wrong.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The issue is a CWE-436 interpretation conflict between the njs XML module and libxml2 canonicalization. When XML attributes contain internal entity references, njs's canonicalization path (in both the built-in njs and QuickJS backends) produces a view inconsistent with libxml2: the $attr$Name getter can return undefined for an attribute that is explicitly present, and $attrs can return a value derived only from the first attribute child. Because XML-DSig verification operates over the canonicalized form while the SAML consumer reads attributes through these getters, the two views can desynchronize, so security-relevant attributes effectively disappear after a successful signature check. The affected component is identified by CPE cpe:2.3:a:f5:nginx_javascript:*:*:*:*:*:*:*:* (F5 njs). This is a data-plane-only defect: there is no control-plane exposure, no availability impact, and no signature or identity forgery - the attacker is confined to manipulating attribute visibility on an already-signed artifact.
Know when Nginx Javascript gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N
Network-reachable and unauthenticated (AV:N/PR:N), but AC:H because the attacker must obtain a genuinely signed document; auth-check bypass yields C:H/I:L with no availability impact.
Primary rating from Vendor (f5).
CVSS VectorVendor: f5
Lifecycle Timeline
4DescriptionCVE.org
Description NGINX JavaScript (njs) has a vulnerability where the njs XML module exposes entity-backed XML attributes inconsistently with libxml2 canonicalization. In both the built-in njs and QuickJS backends during the canonicalization process, the $attr$Name getter may return undefined for an explicitly present attribute containing an internal entity reference. The $attrs getter may return a value derived only from the first attribute child. This may allow an unauthenticated attacker that invests significant effort in obtaining a genuinely signed document to skip validation while signature verification succeeds. An nginx-saml deployment is a confirmed affected consumer when run with the built-in njs backend.
Impact In affected signed-XML consumers, an unauthenticated attacker can cause security-relevant attributes to appear absent or truncated while signature verification succeeds. In nginx-saml, this can bypass expiry, Destination, and request-correlation checks, enabling replay or acceptance of a response outside its intended context. It does not permit signature or identity forgery, or a direct availability impact. There is no control plane exposure; this is a data plane issue only.
Note: Software versions which have reached End of Technical Support (EoTS) are not evaluated.
Executive ViewAI
A high-severity canonicalization defect in the NGINX JavaScript (njs) XML module weakens the attribute-level integrity checks that nginx-saml's built-in njs backend depends on when validating SAML single sign-on assertions. Organizations running that configuration could have a legitimately signed assertion accepted or replayed outside its intended context, degrading SSO assurance for every user whose identity flow passes through the affected service. Because the flaw cannot forge signatures or identities and no vendor patch is yet available, leadership should treat this as a managed-risk item requiring interim detection and containment rather than an emergency code fix.
No vendor-released patch identified at time of analysis. Interim mitigations: validate Destination, InResponseTo, expiry, and audience at the application layer outside the njs XML parser; cache and reject replayed assertion IDs; shorten assertion validity windows and tighten clock-skew tolerance; treat $attr$/$attrs-derived values as untrusted when they appear absent or truncated; alert on duplicate assertion IDs and out-of-context responses; and consider migrating to a SAML implementation that does not use the njs XML module as the parsing backend.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Nginx Javascript
View allHeap out-of-bounds write in NGINX JavaScript (njs) xml.exclusiveC14n() allows unauthenticated remote attackers to crash
Heap buffer overflow in F5 NGINX JavaScript (njs) module versions 0.9.4 through 0.9.8 allows unauthenticated remote atta
NGINX JavaScript (njs) and QuickJS (qjs) fail open during the js_access phase when an exception is thrown inside an asyn
NULL pointer dereference in NGINX JavaScript (njs) crashes NGINX worker processes when an njs script calls ngx.fetch() a
Malformed XML parsed through NGINX JavaScript (njs) xml.parse() leaks libxml2 parser contexts, allowing unauthenticated
EUVD-2026-101121
GHSA-fvf3-54p5-jg2m
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB