Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Trivial network Host-header spoof needs no auth or interaction (AV:N/AC:L/PR:N/UI:N); invoking agents yields high integrity impact and agent listing gives limited confidentiality (I:H/C:L), no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
3DescriptionCVE.org
PraisonAI before 4.6.78 contains an authentication bypass in the Call API agent invocation endpoints (src/praisonai/praisonai/api/agent_invoke.py) when PRAISONAI_CALL_AUTH=disabled is configured. The safeguard intended to restrict the disabled-auth opt-out to localhost binding derives the bind host from request.url.hostname, which is taken from the client-controlled HTTP Host header. A remote, unauthenticated attacker who can reach the service over the network can send a spoofed 'Host: 127.0.0.1' header to bypass the localhost-only restriction and list (GET /api/v1/agents) and invoke (POST /api/v1/agents/{agent_id}/invoke) registered agents without authentication.
AnalysisAI
Authentication bypass in PraisonAI before 4.6.78 lets a remote, unauthenticated attacker reach the Call API agent-invocation endpoints when the deployment runs with PRAISONAI_CALL_AUTH=disabled. Because the localhost-only safeguard derives the bind host from the client-supplied HTTP Host header, an attacker on the network can send a spoofed 'Host: 127.0.0.1' header to defeat the restriction and both enumerate and invoke registered agents. Vendor patch is available (reported by VulnCheck); no public exploit identified at time of analysis and it is not listed in CISA KEV.
Technical ContextAI
PraisonAI is an open-source multi-agent AI orchestration framework (CPE cpe:2.3:a:mervinpraison:praisonai) that exposes a REST 'Call API' for listing and invoking agents in src/praisonai/praisonai/api/agent_invoke.py. The flaw is a classic CWE-287 (Improper Authentication) trust-boundary error: when operators opt out of auth via PRAISONAI_CALL_AUTH=disabled, the code attempts to confine that opt-out to localhost, but it determines the bind/host identity from request.url.hostname, which resolves to the untrusted, client-controlled HTTP Host header rather than the actual socket/network binding. Trusting the Host header for a security decision means any client can assert an arbitrary hostname, so the 'localhost only' gate is enforced against attacker-supplied data instead of the real connection origin.
RemediationAI
Vendor-released patch: upgrade PraisonAI to version 4.6.78 or later, referencing GHSA-2gpf-2492-q9jh (https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-2gpf-2492-q9jh) and the VulnCheck advisory (https://www.vulncheck.com/advisories/praisonai-before-authentication-bypass-via-host-header-spoofing). If you cannot patch immediately, stop relying on PRAISONAI_CALL_AUTH=disabled and re-enable Call API authentication so the vulnerable localhost shortcut is never taken; the trade-off is that legitimate local callers must now present credentials. As a network compensating control, do not expose the Call API on any interface reachable beyond loopback - bind the service to 127.0.0.1 at the socket/reverse-proxy layer and use firewall rules to block external access to the agent-invoke endpoints (GET /api/v1/agents and POST /api/v1/agents/{agent_id}/invoke); if a reverse proxy fronts the service, strip or normalize inbound Host headers and reject requests whose Host does not match an allowlisted server name, accepting that overly strict Host filtering can break legitimate virtual-host or health-check traffic.
WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att
PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne
Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller
SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou
Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec
Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u
Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d
Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf
Cross-site request forgery against the PraisonAI MCP HTTP-stream transport allows unauthenticated remote attackers to ex
Remote unauthenticated access to PraisonAI's legacy Flask API server allows attackers to execute configured agent workfl
Path traversal in praisonaiagents prior to 1.6.58 allows a low-privileged caller to write arbitrary JSON files to any pr
Server-Side Request Forgery in PraisonAI before version 4.6.58 allows unauthenticated remote attackers to force the appl
Same weakness CWE-287 – Improper Authentication
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-44641
GHSA-gp65-m7q3-4vjw