Security Patch
Fixed (CRITICAL)
- SSRF via
file://protocol — Playwrightpage.goto()accepted arbitrary schemes, allowing local file reads (e.g./etc/passwd) - SSRF via localhost —
http://127.0.0.1:9222exposed CDP debug endpoints with WebSocket URLs enabling RCE - No URL validation — user-supplied URLs forwarded to Playwright without any sanitization
Fixed (MEDIUM)
data:URL injection — attacker could render arbitrary HTML content
Added
url_validator.py— scheme whitelist (http/httpsonly), DNS resolution with private/reserved IP blocking (loopback, RFC1918, link-local, cloud metadata169.254.x.x)- Fail2ban-style IP rate limiting — 3 auth failures in 5 min → 10 min ban, with
X-Forwarded-Forsupport
Changed
- Reduce
max_body_sizefrom 10 MB to 64 KB - Promote blocked-request filter log from DEBUG to INFO
Upgrade strongly recommended. All users running VeilRender on shared/public networks should update immediately.
Full Changelog: v0.3.0...v0.3.1