OSV 1.4.0 · github-reviewed · 修改于 2026-07-21 05:12
发布时间
2026-06-17 05:00
GitHub 审查时间
2026-06-17 05:00
NVD 发布时间
2026-06-24 03:17
源文件
advisories/github-reviewed/2026/06/GHSA-4qqr-vv2q-cmr5/GHSA-4qqr-vv2q-cmr5.json
The Docker API server's SSRF protection (validate_webhook_url / validate_url_destination in deploy/docker/utils.py) used an explicit IPv4/IPv6 CIDR blocklist that missed several address families. An attacker could reach internal services and cloud metadata endpoints (e.g. 169.254.169.254) despite the filter by encoding an internal IPv4 address inside an IPv6 transition form, or by using the IPv6 unspecified address.
Because the Docker API is unauthenticated by default (jwt_enabled: false), no credentials are required.
The blocklist was applied to crawl URLs (POST /crawl, /md, /html, /screenshot, /pdf, /execute_js) and webhook URLs (/crawl/job, /llm/job). All shared the same incomplete check.
The following all resolve to (or route to) blocked internal addresses but were NOT caught:
::64:ff9b::a9fe:a9fe (embeds 169.254.169.254)2002:a9fe:a9fe:: (embeds 169.254.169.254)::ffff:169.254.169.254::a9fe:a9feThe error message also echoed the resolved internal IP, acting as a minor DNS/oracle leak.
Server-Side Request Forgery: an unauthenticated attacker can make the server fetch internal-network URLs and cloud instance-metadata endpoints, potentially exposing internal services and cloud credentials.
The blocklist is replaced by a single rule: reject any resolved IP where not ip.is_global, evaluated on the address AND every embedded IPv4 transition form (v4-mapped, NAT64 64:ff9b::/96, 6to4 2002::/16, v4-compat ::/96). Error messages are now opaque and no longer echo the resolved IP.
CRAWL4AI_API_TOKEN).Internal security audit (Crawl4AI maintainers).