GitHub Advisoryadvisory · PyPI
GHSA-j8f7-x8jm-wmm4 Langflow: SSRF in URL-taking components (protection disabled by default / warn-only, not applied to RSS, SearXNG, Web Search, Home Assistant, Glean, Docling)
MEDIUM
Official page ↗
- Ecosystem
- PyPI
- Packages
- langflow, langflow-base, lfx, lfx-docling
- Severity
- Moderate
- CVSS vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:H/SI:L/SA:N
- Weaknesses
- CWE-918
- Reviewed
- 2026-10-06
Affected packages
• PyPI langflow: < 1.10.3 → fixed in 1.10.3
• PyPI langflow-base: < 0.10.3 → fixed in 0.10.3
• PyPI lfx: < 1.10.3 → fixed in 1.10.3
• PyPI lfx-docling: < 0.1.2 → fixed in 0.1.2
Description
Summary
Before Langflow 1.10.3, several built-in components sent server-side HTTP requests to URLs the flow author controls, with no SSRF enforcement. An authenticated user who can build or run flows could make the Langflow server reach loopback, RFC 1918 / private networks, link-local addresses and cloud metadata endpoints (for example `http://169.254.169.254/latest/meta-data/`), and in many cases read the response back through the component output.
Two things combined to cause this:
1. Protection disabled / warn-only. The SSRF guard (`lfx/utils/ssrf_protection.py`, added in 1.7.0 by #10544) shipped with `ssrf_protection_enabled = False`, and its only caller, the API Request component, called `validate_url_for_ssrf(url, warn_only=True)`. So even with protection turned on, blocked URLs were only logged.
2. Inconsistent coverage. Other components that take a user-supplied URL or base URL did not call the guard at all: RSS Reader, SearXNG, Web Search (fetching result / RSS URLs), Home Assistant, Glean Search and Docling Serve (remote).
The problem was fixed across several PRs and is fully fixed in Langflow 1.10.3 (and 1.11.0+). With the default settings, outbound requests from these components are now validated after DNS resolution, pinned to the validated IP (to prevent DNS rebinding) and blocked when they target private, loopback, link-local or metadata addresses, unless the operator allowlists the host.
Affected versions
| Package (PyPI) | Vulnerable | Patched |
|---|---|---|
| `langflow` | `= 1.10.3` (or `langflow-base >= 0.10.3` / `lfx >= 1.10.3` / `lfx-docling >= 0.1.2`).
• Do not set `LANGFLOW_SSRF_PROTECTION_ENABLED=false`. If you need to reach internal hosts on purpose, allowlist only those hosts with `LANGFLOW_SSRF_ALLOWED_HOSTS`.
• On versions that cannot be upgraded right away, restrict outbound network access from the Langflow host (for example, block `169.254.169.254` and use IMDSv2 on AWS).
Related
Weakness · CWE (1)
- CWE-918 Server-Side Request Forgery weakness
References
- https://github.com/langflow-ai/langflow/security/advisories/GHSA-j8f7-x8jm-wmm4 web
- https://github.com/langflow-ai/langflow/pull/13016 web
- https://github.com/langflow-ai/langflow/pull/13395 web
- https://github.com/langflow-ai/langflow/pull/13643 web
- https://github.com/langflow-ai/langflow/pull/14033 web
- https://github.com/langflow-ai/langflow/pull/14071 web
- https://github.com/langflow-ai/langflow/commit/94859df33acd70b2a1f816e26d68f5e89a7e5639 web
- https://github.com/langflow-ai/langflow package
- https://github.com/langflow-ai/langflow/releases/tag/v1.10.3 web