Bleach: URI sanitization allows disallowed URI schemes with Unicode > U+00A0 in output
A possible XSS bypass affects users calling bleach.clean with all of:
a in the allowed tagshref in allowed attributesThe bleach.clean sanitizer outputs URIs containing disallowed scheme patterns that it should be stripping. However, because the inserted Unicode characters make the scheme invalid per RFC 3986, modern browsers do not execute these as javascript: URIs. The practical security impact is limited to:
This is not a direct XSS vulnerability.
Python code example from reporter with Bleach v6.3.0 and Python 3.13:
import bleach
payload1 = '<a href="javascript\u200b:alert(document.cookie)">Click me</a>'
result1 = bleach.clean(payload1)
print(f"(ZWSP): {repr(result1)}")
Output:
(ZWSP): '<a href="javascript\u200b:alert(document.cookie)">Click me</a>'
Users should upgrade to Bleach 6.4.0.
Pre-process content removing non-ASCII characters from URI schemes before sanitizing with bleach.clean.
A strong Content-Security-Policy without unsafe-inline and unsafe-eval script-srcs will also help mitigate the risk.
Reported by codeant from CodeAnt AI.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 0.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 0.00 |
VPI 공식 vpi-v1 기준