Open WebUI's SafePlaywrightURLLoader validates a user-supplied hostname in Python but lets the Playwright browser re-resolve that same hostname when it actually fetches the page, so an authenticated attacker who controls authoritative DNS for a domain can hand back a safe public IP to the validator and an internal or cloud-metadata IP to the browser. With PR:L, no user interaction, and CVSS 7.7, this is a low-bar SSRF that turns the web search / URL ingestion feature into a pivot into internal networks and cloud metadata endpoints (e.g. AWS/GCP/Azure instance credentials). There's no known public exploit or Nuclei template yet and it isn't in CISA KEV, but the technique (DNS rebinding TOCTOU) is well documented and trivial to automate once an attacker controls a domain's DNS. Open WebUI has three tracked downstream dependents and 168 other CVEs recorded in this package, underscoring a pattern of security debt worth factoring into deployment risk. Patch to 0.11.1 immediately; until then, restrict who can hold non-admin accounts capable of triggering web search/URL ingestion, and block outbound requests from the Open WebUI host to RFC1918 ranges and the 169.254.169.254 metadata address at the network/egress layer regardless of app-level validation.
What is the risk?
Exploitability is high for an attacker who already holds a low-privileged authenticated account and controls a domain's DNS records — no user interaction and low attack complexity are required, and TOCTOU/DNS-rebinding SSRF is a mature, well-understood technique with existing public tooling outside this specific CVE. Impact is confidentiality-only (C:H/I:N/A:N) but severe in an AI-deployment context: SSRF into cloud metadata services can yield IAM/service credentials, and SSRF into internal services can expose admin panels, databases, or other AI infrastructure not meant to be internet-reachable. No public PoC, Nuclei template, or KEV listing currently exists, and EPSS data is unavailable, which lowers near-term mass-exploitation likelihood but does not reduce risk for any organization exposing Open WebUI with self-service account creation or shared/low-trust user pools.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Open WebUI | pip | >= 0.9.6, < 0.11.1 | 0.11.1 |
Do you use Open WebUI? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step-
1) Upgrade to Open WebUI >= 0.11.1 immediately, which fixes the TOCTOU gap between hostname validation and browser resolution. 2) Until patched, disable or restrict web search / URL ingestion for non-trusted/non-admin users. 3) Enforce network-layer egress controls independent of the app: block the Playwright/browser container from reaching RFC1918 ranges, link-local addresses (169.254.169.254), and other internal-only subnets via firewall/security-group rules — do not rely solely on application-level hostname checks, since this CVE is exactly a case where that check was insufficient. 4) If using cloud metadata services, prefer IMDSv2 (session-token-bound) over IMDSv1 to blunt SSRF-based credential theft. 5) Monitor logs for anomalous outbound requests from the Open WebUI/Playwright host to internal IP ranges or metadata endpoints as a detection signal.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-87996?
Open WebUI's SafePlaywrightURLLoader validates a user-supplied hostname in Python but lets the Playwright browser re-resolve that same hostname when it actually fetches the page, so an authenticated attacker who controls authoritative DNS for a domain can hand back a safe public IP to the validator and an internal or cloud-metadata IP to the browser. With PR:L, no user interaction, and CVSS 7.7, this is a low-bar SSRF that turns the web search / URL ingestion feature into a pivot into internal networks and cloud metadata endpoints (e.g. AWS/GCP/Azure instance credentials). There's no known public exploit or Nuclei template yet and it isn't in CISA KEV, but the technique (DNS rebinding TOCTOU) is well documented and trivial to automate once an attacker controls a domain's DNS. Open WebUI has three tracked downstream dependents and 168 other CVEs recorded in this package, underscoring a pattern of security debt worth factoring into deployment risk. Patch to 0.11.1 immediately; until then, restrict who can hold non-admin accounts capable of triggering web search/URL ingestion, and block outbound requests from the Open WebUI host to RFC1918 ranges and the 169.254.169.254 metadata address at the network/egress layer regardless of app-level validation.
Is CVE-2026-87996 actively exploited?
No confirmed active exploitation of CVE-2026-87996 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-87996?
1) Upgrade to Open WebUI >= 0.11.1 immediately, which fixes the TOCTOU gap between hostname validation and browser resolution. 2) Until patched, disable or restrict web search / URL ingestion for non-trusted/non-admin users. 3) Enforce network-layer egress controls independent of the app: block the Playwright/browser container from reaching RFC1918 ranges, link-local addresses (169.254.169.254), and other internal-only subnets via firewall/security-group rules — do not rely solely on application-level hostname checks, since this CVE is exactly a case where that check was insufficient. 4) If using cloud metadata services, prefer IMDSv2 (session-token-bound) over IMDSv1 to blunt SSRF-based credential theft. 5) Monitor logs for anomalous outbound requests from the Open WebUI/Playwright host to internal IP ranges or metadata endpoints as a detection signal.
What systems are affected by CVE-2026-87996?
This vulnerability affects the following AI/ML architecture patterns: RAG pipelines, web-based retrieval/ingestion, self-hosted AI platforms.
What is the CVSS score for CVE-2026-87996?
CVE-2026-87996 has a CVSS v3.1 base score of 7.7 (HIGH). The EPSS exploitation probability is 0.21%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0025 Exfiltration via Cyber Means AML.T0049 Exploit Public-Facing Application AML.T0075 Cloud Service Discovery Compliance Controls Affected
What are the technical details?
Original Advisory
Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform. From 0.9.6 until 0.11.1, SafePlaywrightURLLoader in backend/open_webui/retrieval/web/utils.py validated a user-controlled hostname in Python and then let the Playwright browser resolve it again in the sync and async request interceptors. An authenticated user controlling authoritative DNS could return a public address to validation and an internal address to the browser, exposing responses from internal services or cloud metadata through web search or URL ingestion. This issue is fixed in version 0.11.1.
Exploitation Scenario
An attacker registers or controls a domain (e.g. evil-domain.com) with authoritative DNS they can update in real time. They create a low-privileged Open WebUI account and trigger the web search or 'ingest URL' feature pointing at http://evil-domain.com. At validation time, their DNS server answers with a public, non-restricted IP, passing Open WebUI's Python-side hostname check. Milliseconds later, when the Playwright browser process actually performs the DNS lookup to fetch the page, the attacker's DNS server flips the A record to an internal address (e.g. a Kubernetes-internal admin API) or the cloud metadata IP 169.254.169.254. Playwright renders and returns that internal response, which flows back through Open WebUI's retrieval pipeline into the chat/RAG context — leaking internal service data or cloud IAM credentials to the attacker without ever needing direct network access to the internal target.
Weaknesses (CWE)
CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition
Primary
CWE-918 Server-Side Request Forgery (SSRF)
Primary
CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition CWE-918 Server-Side Request Forgery (SSRF) CWE-367 — Time-of-check Time-of-use (TOCTOU) Race Condition: The product checks the state of a resource before using that resource, but the resource's state can change between the check and the use in a way that invalidates the results of the check.
- [Implementation] The most basic advice for TOCTOU vulnerabilities is to not perform a check before the use. This does not resolve the underlying issue of the execution of a function on a resource whose state and identity cannot be assured, but it does help to limit the false sense of security given by the check.
- [Implementation] When the file being altered is owned by the current user and group, set the effective gid and uid to that of the current user and group when executing this statement.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N References
- github.com/open-webui/open-webui/commit/27402ff210bfa253445720920dfb86b15a00327b x_refsource_MISC
- github.com/open-webui/open-webui/pull/28634 x_refsource_MISC
- github.com/open-webui/open-webui/releases/tag/v0.11.1 x_refsource_MISC
- github.com/open-webui/open-webui/security/advisories/GHSA-4v28-j6q3-5m4r x_refsource_CONFIRM
- github.com/advisories/GHSA-4v28-j6q3-5m4r
- nvd.nist.gov/vuln/detail/CVE-2026-87996
Timeline
Related Vulnerabilities
CVE-2026-44551 9.1 open-webui: LDAP auth bypass — full account takeover
Same package: open-webui CVE-2026-45672 8.8 open-webui: code exec gate bypass via API endpoint
Same package: open-webui CVE-2026-44552 8.7 open-webui: Redis cache poisoning enables cross-instance tool hijack
Same package: open-webui CVE-2025-64495 8.7 Open WebUI: XSS-to-RCE via malicious prompt injection
Same package: open-webui CVE-2026-45315 8.7 open-webui: stored XSS → JWT theft and admin takeover
Same package: open-webui