CVE-2026-66370
Full vulnerability record from the local CVENow database.
Description
URL Redirection to Untrusted Site ('Open Redirect') vulnerability in the HTML5 scrubber in rrrene html_sanitize_ex allows an unauthenticated remote attacker to retarget a form already on the rendering page and receive whatever the victim submits, including credentials, via the form and formaction attributes on an <input> element in sanitized HTML. HTML's form attribute associates an input with any form on the page by its id even when the input sits outside that form, and formaction on a submit control overrides the owning form's action. Neither attribute receives a scheme check, so an absolute cross-origin URL survives sanitizing. No script executes. The scrubber allows neither form nor button, so the attacker cannot introduce a form of their own and the rendering page must already contain a form carrying an id. This issue affects html_sanitize_ex: from 0.3.1 before 1.4.5 and from 1.5.0-rc.0 before 1.5.3.
View original CVE JSON
{
"id": "CVE-2026-66370",
"sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"published": "2026-08-06T16:16:48.420",
"lastModified": "2026-10-24T16:10:00.153",
"vulnStatus": "Modified",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "URL Redirection to Untrusted Site ('Open Redirect') vulnerability in the HTML5 scrubber in rrrene html_sanitize_ex allows an unauthenticated remote attacker to retarget a form already on the rendering page and receive whatever the victim submits, including credentials, via the form and formaction attributes on an <input> element in sanitized HTML. HTML's form attribute associates an input with any form on the page by its id even when the input sits outside that form, and formaction on a submit control overrides the owning form's action. Neither attribute receives a scheme check, so an absolute cross-origin URL survives sanitizing.\n\nNo script executes. The scrubber allows neither form nor button, so the attacker cannot introduce a form of their own and the rendering page must already contain a form carrying an id.\n\nThis issue affects html_sanitize_ex: from 0.3.1 before 1.4.5 and from 1.5.0-rc.0 before 1.5.3."
},
{
"lang": "es",
"value": "La vulnerabilidad de redirección de URL a sitio no confiable (’redirección abierta’) en el depurador HTML5 en rrrene html_sanitize_ex permite a un atacante remoto no autenticado redirigir un formulario ya presente en la página de renderizado y recibir lo que la víctima envíe, incluidas las credenciales, a través de los atributos form y formaction en un elemento [input] en HTML saneado. El atributo form de HTML asocia una entrada con cualquier formulario en la página por su id incluso cuando la entrada se encuentra fuera de ese formulario, y formaction en un control de envío anula la acción del formulario propietario. Ninguno de los atributos recibe una verificación de esquema, por lo que una URL absoluta de origen cruzado sobrevive al saneamiento.\n\nNo se ejecuta ningún script. El depurador no permite ni form ni button, por lo que el atacante no puede introducir un formulario propio y la página de renderizado ya debe contener un formulario con un id.\n\nEste problema afecta a html_sanitize_ex: desde 0.3.1 antes de 1.5.3."
}
],
"affected": [
{
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"affectedData": [
{
"vendor": "rrrene",
"product": "html_sanitize_ex",
"defaultStatus": "unaffected",
"collectionURL": "https://repo.hex.pm",
"packageName": "html_sanitize_ex",
"cpes": [
"cpe:2.3:a:rrrene:html_sanitize_ex:*:*:*:*:*:*:*:*"
],
"modules": [
"Elixir.HtmlSanitizeEx.Scrubber.HTML5",
"Elixir.HtmlSanitizeEx"
],
"programFiles": [
"lib/html_sanitize_ex/scrubber/html5.ex",
"lib/html_sanitize_ex.ex"
],
"programRoutines": [
{
"name": "'Elixir.HtmlSanitizeEx.Scrubber.HTML5':scrub_attribute/2"
},
{
"name": "'Elixir.HtmlSanitizeEx.Scrubber.HTML5':sanitize/1"
},
{
"name": "'Elixir.HtmlSanitizeEx':html5/1"
}
],
"repo": "https://github.com/rrrene/html_sanitize_ex",
"packageURL": "pkg:hex/html_sanitize_ex",
"versions": [
{
"version": "0.3.1",
"lessThan": "1.4.5",
"versionType": "semver",
"status": "affected"
},
{
"version": "1.5.0-rc.0",
"lessThan": "1.5.3",
"versionType": "semver",
"status": "affected"
}
]
},
{
"vendor": "rrrene",
"product": "html_sanitize_ex",
"defaultStatus": "unaffected",
"collectionURL": "https://github.com",
"packageName": "rrrene/html_sanitize_ex",
"cpes": [
"cpe:2.3:a:rrrene:html_sanitize_ex:*:*:*:*:*:*:*:*"
],
"modules": [
"Elixir.HtmlSanitizeEx.Scrubber.HTML5",
"Elixir.HtmlSanitizeEx"
],
"programFiles": [
"lib/html_sanitize_ex/scrubber/html5.ex",
"lib/html_sanitize_ex.ex"
],
"programRoutines": [
{
"name": "'Elixir.HtmlSanitizeEx.Scrubber.HTML5':scrub_attribute/2"
},
{
"name": "'Elixir.HtmlSanitizeEx.Scrubber.HTML5':sanitize/1"
},
{
"name": "'Elixir.HtmlSanitizeEx':html5/1"
}
],
"repo": "https://github.com/rrrene/html_sanitize_ex",
"packageURL": "pkg:github/rrrene/html_sanitize_ex",
"versions": [
{
"version": "8976d64ea0b77d26093a94a43ec48a3978e8d028",
"lessThan": "*",
"versionType": "git",
"status": "affected",
"changes": [
{
"at": "a1e804ed997e780ea71d14393cf2f701330553a6",
"status": "unaffected"
},
{
"at": "21394e758cb0ffe12fb9953c30fdedc6016c8f9e",
"status": "unaffected"
}
]
}
]
}
]
}
],
"metrics": {
"cvssMetricV40": [
{
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"type": "Secondary",
"cvssData": {
"version": "4.0",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:N/SC:H/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"baseScore": 4.8,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"privilegesRequired": "NONE",
"userInteraction": "ACTIVE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE",
"vulnAvailabilityImpact": "NONE",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "LOW",
"subAvailabilityImpact": "NONE",
"exploitMaturity": "NOT_DEFINED",
"confidentialityRequirement": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"availabilityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"valueDensity": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED"
}
}
],
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Primary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "NONE",
"userInteraction": "REQUIRED",
"scope": "CHANGED",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 2.8,
"impactScore": 2.7
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-08-06T15:42:03.803831Z",
"id": "CVE-2026-66370",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-601"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:a:rrrene:htmlsanitizeex:*:*:*:*:*:*:*:*",
"versionStartIncluding": "0.3.1",
"versionEndExcluding": "1.5.3",
"matchCriteriaId": "DE85053C-AE84-4570-A90C-4D4CCD7A4BA3"
}
]
}
]
}
],
"references": [
{
"url": "https://cna.erlef.org/cves/CVE-2026-66370.html",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"tags": [
"Patch",
"Third Party Advisory"
]
},
{
"url": "https://github.com/rrrene/html_sanitize_ex/commit/21394e758cb0ffe12fb9953c30fdedc6016c8f9e",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/rrrene/html_sanitize_ex/commit/a1e804ed997e780ea71d14393cf2f701330553a6",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"tags": [
"Patch"
]
},
{
"url": "https://github.com/rrrene/html_sanitize_ex/security/advisories/GHSA-w3f9-jjhw-wwvq",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"tags": [
"Broken Link"
]
},
{
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-66370",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"tags": [
"Patch",
"Third Party Advisory"
]
}
]
}