{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-101019", "assignerOrgId": "9dacffd4-cb11-413f-8451-fbbfd4ddc0ab", "state": "PUBLISHED", "assignerShortName": "f5", "dateReserved": "2026-09-30T21:56:14.632Z", "datePublished": "2026-10-14T14:40:29.685Z", "dateUpdated": "2026-10-15T16:43:46.354Z" }, "containers": { "cna": { "affected": [ { "defaultStatus": "unknown", "modules": [ "ngx_http_js_module" ], "product": "NGINX JavaScript", "vendor": "F5", "versions": [ { "lessThan": "1.0.2", "status": "affected", "version": "0.7.10", "versionType": "custom" } ] } ], "credits": [ { "lang": "en", "type": "finder", "value": "F5" } ], "datePublic": "2023-01-01T00:00:00.000Z", "descriptions": [ { "lang": "en", "supportingMedia": [ { "base64": false, "type": "text/html", "value": "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.\n\n

 Note: Software versions which have reached End of Technical Support (EoTS) are not evaluated." } ], "value": "Description\nNGINX 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.\n\nImpact\nIn 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.\n\n\n\n Note: Software versions which have reached End of Technical Support (EoTS) are not evaluated." } ], "impacts": [ { "capecId": "CAPEC-267", "descriptions": [ { "lang": "en", "value": "CAPEC-267 Leverage Alternate Encoding" } ] } ], "metrics": [ { "cvssV3_1": { "attackComplexity": "HIGH", "attackVector": "NETWORK", "availabilityImpact": "NONE", "baseScore": 6.5, "baseSeverity": "MEDIUM", "confidentialityImpact": "HIGH", "integrityImpact": "LOW", "privilegesRequired": "NONE", "scope": "UNCHANGED", "userInteraction": "NONE", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N", "version": "3.1" }, "format": "CVSS", "scenarios": [ { "lang": "en", "value": "GENERAL" } ] }, { "cvssV4_0": { "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "Safety": "NOT_DEFINED", "attackComplexity": "LOW", "attackRequirements": "PRESENT", "attackVector": "NETWORK", "baseScore": 8.3, "baseSeverity": "HIGH", "privilegesRequired": "NONE", "providerUrgency": "NOT_DEFINED", "subAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "userInteraction": "NONE", "valueDensity": "NOT_DEFINED", "vectorString": "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", "version": "4.0", "vulnAvailabilityImpact": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "LOW", "vulnerabilityResponseEffort": "NOT_DEFINED" }, "format": "CVSS", "scenarios": [ { "lang": "en", "value": "GENERAL" } ] } ], "problemTypes": [ { "descriptions": [ { "cweId": "CWE-436", "description": "CWE-436 Interpretation Conflict", "lang": "en", "type": "CWE" } ] } ], "providerMetadata": { "orgId": "9dacffd4-cb11-413f-8451-fbbfd4ddc0ab", "shortName": "f5", "dateUpdated": "2026-10-14T14:40:29.685Z" }, "references": [ { "tags": [ "vendor-advisory" ], "url": "https://my.f5.com/manage/s/article/K000162615" } ], "source": { "discovery": "INTERNAL" }, "title": "NGINX ngx_http_js_module vulnerability", "workarounds": [ { "lang": "en", "supportingMedia": [ { "base64": false, "type": "text/html", "value": "Applications processing signed XML should reject DTD-bearing input before calling xml.parse(). The check must cover the complete document after decoding its accepted input encoding; a parser-level DTD prohibition is preferable to a raw byte search for \"<!DOCTYPE\".

Applications should also treat absent security-relevant attributes as validation failures rather than optional values. nginx-saml deployments should explicitly validate Destination, request correlation when unsolicited SSO is not intended, assertion validity, bearer SubjectConfirmation, Recipient, and SubjectConfirmationData InResponseTo.
" } ], "value": "Applications processing signed XML should reject DTD-bearing input before calling xml.parse(). The check must cover the complete document after decoding its accepted input encoding; a parser-level DTD prohibition is preferable to a raw byte search for \"