open-webui/backend/open_webui/retrieval
Classic298 01198eaeef
Close DNS-rebinding SSRF gap in get_content_from_url probe (#25775)
The web-ingest probe in get_content_from_url validated the URL at resolve
time (validate_url) but then fetched with a bare requests.get, which
re-resolves the hostname at connect time. An attacker-controlled name
server can answer with a public IP during validation and an internal IP
at connect, reaching cloud metadata / loopback / internal services (blind
always; binary content-types are read back to the caller). The
connection-layer guard (#24759) that closes this for the SafeWebBaseLoader
path was never mounted on this probe.

Route the probe through the same _SSRFSafeAdapter the loader uses, so the
resolution that feeds the TCP connect is re-validated against the
global-IP check.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 02:15:31 -05:00
..
loaders fix: repair Mistral OCR async upload (aiohttp.streams.FilePayload removed) (#25779) 2026-06-29 02:05:54 -05:00
models refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
vector fix: chroma has_collection always returns False (name vs Collection) (#25780) 2026-06-29 02:15:05 -05:00
web refac 2026-06-29 01:52:07 -05:00
external.py refac 2026-06-23 23:13:32 +02:00
utils.py Close DNS-rebinding SSRF gap in get_content_from_url probe (#25775) 2026-06-29 02:15:31 -05:00