CVE-2026-47390: PraisonAI: SSRF bypass via loopback alias encodings
GHSA-5c6w-wwfq-7qqm MEDIUM CISA: TRACK*PraisonAI's spider_tools implements SSRF protection using an exact-string blocklist that fails to normalize alternate loopback representations — decimal integers, octal notation, hex, and trailing-dot variants all bypass the check and reach localhost-bound services. In agentic deployments where user-controlled or LLM-generated URLs are passed to scrape_page() or crawl(), an attacker can exfiltrate responses from local admin panels, cloud metadata endpoints (169.254.169.254), or any service bound exclusively to loopback. With 69 prior CVEs in this package and SSRF being a well-understood cloud pivot technique, the exploitation bar is low once an attacker has influence over agent inputs — a realistic condition in RAG pipelines or multi-agent workflows. Upgrade to praisonai 4.6.40 or praisonaiagents 1.6.40 immediately; if patching is delayed, add egress firewall rules blocking loopback and RFC-1918 ranges at the network layer.
What is the risk?
Medium severity by CVSS (5.5), but contextually elevated for cloud-deployed AI agents. The vulnerability bypasses an explicit security control rather than exploiting a default-open behavior, creating false confidence in developers who believe SSRF protection is active. EPSS data unavailable; no active exploitation observed and not in CISA KEV. Blast radius is modest with 1 reported downstream dependent, but any PraisonAI deployment processing externally-influenced URLs is directly in scope. The local-attack-vector CVSS classification likely reflects standalone desktop use; in containerized or cloud agent deployments, effective exploitability is higher since the attack can be initiated remotely through agent task inputs.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| PraisonAI | pip | <= 4.6.39 | 4.6.40 |
| PraisonAI Agents | pip | <= 1.6.39 | 1.6.40 |
How severe is it?
What is the attack surface?
What should I do?
4 steps-
Patch: upgrade praisonai to >= 4.6.40 or praisonaiagents to >= 1.6.40.
-
Network egress hardening (defense-in-depth): block outbound connections to 127.0.0.0/8, ::1, 169.254.0.0/16, 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16 via iptables/nftables or cloud security groups on agent host environments.
-
If implementing custom URL validation, always resolve hostnames to IP addresses using socket.getaddrinfo() before blocklist evaluation — never compare raw hostname strings against a blocklist.
-
Detection: scan application and proxy logs for outbound requests containing hex IPs (0x7f...), octal notation (0177...), or decimal-encoded loopback (2130706433); in agentic frameworks, audit tool invocation logs for unusual localhost-variant URL patterns.
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-47390?
PraisonAI's spider_tools implements SSRF protection using an exact-string blocklist that fails to normalize alternate loopback representations — decimal integers, octal notation, hex, and trailing-dot variants all bypass the check and reach localhost-bound services. In agentic deployments where user-controlled or LLM-generated URLs are passed to scrape_page() or crawl(), an attacker can exfiltrate responses from local admin panels, cloud metadata endpoints (169.254.169.254), or any service bound exclusively to loopback. With 69 prior CVEs in this package and SSRF being a well-understood cloud pivot technique, the exploitation bar is low once an attacker has influence over agent inputs — a realistic condition in RAG pipelines or multi-agent workflows. Upgrade to praisonai 4.6.40 or praisonaiagents 1.6.40 immediately; if patching is delayed, add egress firewall rules blocking loopback and RFC-1918 ranges at the network layer.
Is CVE-2026-47390 actively exploited?
No confirmed active exploitation of CVE-2026-47390 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-47390?
1. Patch: upgrade praisonai to >= 4.6.40 or praisonaiagents to >= 1.6.40. 2. Network egress hardening (defense-in-depth): block outbound connections to 127.0.0.0/8, ::1, 169.254.0.0/16, 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16 via iptables/nftables or cloud security groups on agent host environments. 3. If implementing custom URL validation, always resolve hostnames to IP addresses using socket.getaddrinfo() before blocklist evaluation — never compare raw hostname strings against a blocklist. 4. Detection: scan application and proxy logs for outbound requests containing hex IPs (0x7f...), octal notation (0177...), or decimal-encoded loopback (2130706433); in agentic frameworks, audit tool invocation logs for unusual localhost-variant URL patterns.
What systems are affected by CVE-2026-47390?
This vulnerability affects the following AI/ML architecture patterns: agent frameworks, RAG pipelines, web scraping agents, multi-agent pipelines.
What is the CVSS score for CVE-2026-47390?
CVE-2026-47390 has a CVSS v3.1 base score of 5.5 (MEDIUM). The EPSS exploitation probability is 0.17%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0049 Exploit Public-Facing Application AML.T0051.001 Indirect AML.T0053 AI Agent Tool Invocation AML.T0086 Exfiltration via AI Agent Tool Invocation Compliance Controls Affected
What are the technical details?
Original Advisory
PraisonAI is a multi-agent teams system. Prior to version 4.6.40 of PraisonAI, corresponding to version 1.6.40 of praisonaiagents, `spider_tools` URL validation can be bypassed using alternate loopback host encodings. The tool contains a URL validation function intended to block local or unsafe targets before fetching attacker-controlled URLs. However, the validation only blocks a small set of exact host strings such as `localhost` and `127.0.0.1`. It does not normalize hostnames, resolve DNS, parse numeric IPv4 variants, or validate the final resolved IP address before making the request. As a result, certain URLs may bypass the protection and still reach loopback services. After the weak validation passes, `scrape_page()` calls `requests.Session.get()` on the attacker-controlled URL. This allows an attacker who can influence URLs passed to `scrape_page`, `crawl`, or `extract_text` to induce SSRF requests against loopback-only services. This is a server-side request forgery protection bypass. PraisonAI version 4.6.40 and praisonaiagents version 1.6.40 contain a patch.
Exploitation Scenario
An adversary embeds a crafted URL in content indexed by a PraisonAI agent's RAG pipeline or a web page being crawled — for example, a page containing a link using http://2130706433:8080/admin. When the agent processes this content and invokes scrape_page() to follow the URL, the weak string-based validation approves the decimal-encoded loopback address, and requests.Session issues a GET to the local admin service. The server response — containing configuration data, session tokens, or internal API credentials — is returned as tool output to the agent, where it may be logged, embedded in agent context, or surfaced to the requesting user. In a cloud environment, substituting the metadata service path (http://2130706433/latest/meta-data/iam/security-credentials/) yields IAM credentials for the underlying host instance.
Weaknesses (CWE)
CWE-918 Server-Side Request Forgery (SSRF)
Primary
CWE-918 Server-Side Request Forgery (SSRF)
Primary
CWE-918 Server-Side Request Forgery (SSRF) CWE-918 — Server-Side Request Forgery (SSRF): The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N References
Timeline
Related Vulnerabilities
CVE-2026-61447 10.0 PraisonAI: RCE via unsandboxed LLM code execution
Same package: praisonai CVE-2026-61445 9.9 PraisonAI: AICoder root RCE via unsanitized tool calls
Same package: praisonai CVE-2026-47392 9.9 praisonaiagents: RCE via Python sandbox bypass
Same package: praisonai GHSA-vmmj-pfw7-fjwp 9.9 praisonai: sandbox escape gives RCE via codeMode tool
Same package: praisonai GHSA-vc46-vw85-3wvm 9.8 PraisonAI: RCE via malicious workflow YAML execution
Same package: praisonai