Am I affected?

type your html_sanitize_ex version to check

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.5.3.

Weaknesses & attack patterns

Weakness

CWE-601 · URL Redirection to Untrusted Site ('Open Redirect') in catalog → MITRE ↗

Attack patterns

CAPEC-154 · Resource Location Spoofing MITRE ↗

Affected — Hex / html_sanitize_ex Hex.pm ↗ Repository ↗

0.3.1 < 1.5.3 affected
every other version: unaffected
default status unaffected
cpe cpe:2.3:a:rrrene:html_sanitize_ex:*:*:*:*:*:*:*:*
modules · source files · routines
modules Elixir.HtmlSanitizeEx.Scrubber.HTML5 · Elixir.HtmlSanitizeEx
source files lib/html_sanitize_ex/scrubber/html5.ex · lib/html_sanitize_ex.ex
routines 'Elixir.HtmlSanitizeEx.Scrubber.HTML5':scrub_attribute/2 · 'Elixir.HtmlSanitizeEx.Scrubber.HTML5':sanitize/1 · 'Elixir.HtmlSanitizeEx':html5/1

Affected — GitHub / rrrene/html_sanitize_ex Repository ↗

8976d64 < a1e804e affected
every other version: unaffected
default status unaffected
cpe cpe:2.3:a:rrrene:html_sanitize_ex:*:*:*:*:*:*:*:*
modules · source files · routines
modules Elixir.HtmlSanitizeEx.Scrubber.HTML5 · Elixir.HtmlSanitizeEx
source files lib/html_sanitize_ex/scrubber/html5.ex · lib/html_sanitize_ex.ex
routines 'Elixir.HtmlSanitizeEx.Scrubber.HTML5':scrub_attribute/2 · 'Elixir.HtmlSanitizeEx.Scrubber.HTML5':sanitize/1 · 'Elixir.HtmlSanitizeEx':html5/1

Workarounds

Sanitize with basic_html/1, markdown_html/1 or strip_tags/1, none of which allow input, or define a custom scrubber that omits it.

Omitting the id attribute from the page's own forms, or giving them values an attacker cannot predict, removes the anchor the injected form attribute needs.

Configurations

Only HtmlSanitizeEx.html5/1, and custom scrubbers declared with use HtmlSanitizeEx, extend: :html5, allow the input element, and the sanitized output must be rendered to other users.

The rendering page must also contain a form with an id, since that id is what the injected form attribute binds to.

References

Credits

Peter Ullrich Finder
Jonatan Männchen / EEF Analyst
René Föhring Remediation developer

CVSS breakdown

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
« All CVEs