F5 security advisory (AV26-1049)
Canada’s Cyber Centre urges updates for multiple NGINX and F5 products affected by three new CVEs.
njs XML entity attributes bypass nginx-saml checks
NGINX JavaScript (njs) mishandles XML attributes that contain internal entity references during canonicalization, so results disagree with libxml2. In both the built-in njs and QuickJS backends, the $attr$Name getter can return undefined for an attribute that is actually present, and the $attrs getter can return a value taken only from the first attribute child. An unauthenticated attacker who already has a genuinely signed document can make security-relevant attributes look missing or truncated while signature verification still succeeds. In nginx-saml with the built-in njs backend, that can bypass expiry, Destination, and request-correlation checks and allow replay or acceptance of a response outside its intended context; it does not forge signatures or identities and is a data-plane issue only. It is not listed in CISA KEV and no public proof-of-concept is known.
What to do: Apply F5/NGINX updates for njs and nginx-saml as soon as a fixed build is published; the advisory does not list version numbers. Until then, treat nginx-saml on the built-in njs backend as exposed and do not rely on njs $attr$Name or $attrs results for expiry, Destination, or request-correlation checks on signed XML. Prefer a validation path that is not the affected njs XML canonicalization behavior, and review logs for replayed or out-of-context SAML responses.
| Product | Affected |
|---|---|
| F5 NGINX JavaScript (njs) | — |
| F5 nginx-saml | Confirmed affected when run with the built-in njs backend; exact versions not enumerated. |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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.
Canada’s Cyber Centre urges updates for multiple NGINX and F5 products affected by three new CVEs.
Today 2.2K readers · 2.8K views · 404 reads · all time 108K views