Skip to main content

PraisonAI EUVDEUVD-2026-108890

| CVE-2026-57114 HIGH
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-10-23 GitHub_M GHSA-rjvw-7vvw-549v PYSEC-2026-3519
7.2
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Submit job to unauthenticated Jobs API
  2. Delivery
    Supply attacker-controlled webhook hostname
  3. Exploit
    Hostname resolves to public IP at validation
  4. Execution
    Rebind to loopback/private/metadata IP at delivery
  5. Impact
    Server POSTs payload to internal services (blind SSRF)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
Exploitation Conditions

The attacker must be able to reach the PraisonAI Async Jobs API (POST /api/v1/runs) and supply a chosen webhook_url, and must control authoritative DNS for that hostname so it resolves to a public, allowed IP during JobSubmitRequest/Job Pydantic validation and to a loopback/private/cloud-metadata address during the later _send_webhook() delivery (classic DNS-rebinding TOCTOU; the gethostbyname check is never bound to the httpx connection). The advisory states the Jobs API requires no authentication by default, so no credentials are needed unless the operator added deployment-level auth. Limiting factors that reduce real-world risk: the Jobs API must actually be exposed to the attacker; the attacker needs a controllable low-TTL DNS name; useful impact depends on internal/metadata services being reachable from the host and accepting POST requests; and the primitive is blind (no guaranteed response-body exfiltration).

Impact

This is a genuine but moderate-priority issue, not a drop-everything emergency. The supplied CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N) describes an unauthenticated, network-reachable scope-changing flaw, and the vuln.today Decision label is 'this_week' rather than act_now/emergency. A full working local proof-of-concept is embedded in the GHSA-rjvw-7vvw-549v advisory (it prints 'PRAI-CAND-005 CONFIRMED'), so exploit knowledge is public, but there is no CISA KEV listing and no EPSS score in the supplied data, so widespread automated exploitation cannot be asserted. No SSVC decision record (exploitation/automatable/technical-impact) was provided. Two tempering factors matter: the impact is a blind SSRF primitive with only Low confidentiality and Low integrity (the reporter explicitly disclaims response-body disclosure, RCE, and credential theft absent deployment-specific internal services), and successful exploitation requires the attacker to control DNS for the webhook hostname and to perform a rebinding transition between Pydantic validation and httpx delivery. One data note: the stated score of 7.2 is slightly lower than the ~8.2 that the provided scope-changed vector normally computes - treat the numeric score as approximate and rely on the vector. Because this is an incomplete fix / patch bypass of the earlier GHSA-8frj-8q3m-xhgm SSRF, deployments that believed themselves patched remain exposed, which raises practical urgency for anyone exposing the Jobs API.

Exploit ScenarioDerived

An attacker who can reach a PraisonAI Async Jobs API submits a job via POST /api/v1/runs with a webhook_url on a hostname they control. At validation time socket.gethostbyname() returns a benign public IP, passing the SSRF guard; by the time the job finishes and _send_webhook() calls httpx.AsyncClient.post(), the hostname re-resolves to loopback, a private address, or 169.254.169.254, so the PraisonAI host POSTs the job-result payload to internal or cloud-metadata endpoints. A full local proof-of-concept demonstrating this DNS-rebinding bypass is published in the GHSA advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 23, 2026

Server-side request forgery in the PraisonAI Async Jobs API lets an attacker who can submit jobs with a chosen webhook_url steer the server's completion callback into loopback, private-network, or cloud-metadata endpoints, bypassing the webhook guard that current releases do ship. The check is a time-of-check/time-of-use gap: the URL is validated with urlparse() and socket.gethostbyname() at request parsing and again when the Job object is built, but _send_webhook() hands the original hostname to httpx.AsyncClient.post() with no send-time revalidation or IP pinning, so a low-TTL attacker-controlled name can resolve public during validation and internal during delivery. Affected releases are pip packages praisonai from 4.5.126 through 4.6.58; the advisory publishes a local-only PoC that confirms the bypass in-process, but it is not verified as working exploit code against a live deployment, and there is no KEV or active-exploitation signal - consistent with the this_week priority label and an assessed AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N vector where blind SSRF impact depends heavily on what internal services the host can reach and whether they accept POST.

RemediationAI

Upgrade the praisonai package to 4.6.59 or later, the version in which the vendor reports this issue patched; anything in the 4.5.126 through 4.6.58 range remains exposed to the rebinding bypass even though it rejects direct loopback URLs. Because exploitability hinges on an attacker being able to submit a job with a chosen webhook_url, the vendor-side workaround is deployment hardening: the advisory notes the Async Jobs API does not require authentication by default and leaves authentication to server deployment configuration, so placing authentication in front of POST /api/v1/runs (side effect: every legitimate job submitter must now present credentials) and restricting network reachability of the Jobs API to trusted callers (side effect: external or multi-tenant integrations must be proxied) both remove the precondition. Disabling or unsetting webhook callbacks for untrusted submitters also eliminates the sink, at the cost of losing job-completion notifications. Operators should also egress-restrict the PraisonAI host so loopback, RFC1918, and cloud-metadata endpoints such as 169.254.169.254 are not reachable from the process, noting that this is a compensating control rather than a fix and can break legitimate internal callbacks. Reference: https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-rjvw-7vvw-549v.

Affected VersionsENISA

PraisonAI 4.5.126, < 4.6.59

Affected Packages

pypi praisonai fix: 4.6.59

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

PraisonAI's Async Jobs API (POST /api/v1/runs) accepts a webhook_url completion callback that is stored as a plain string on the Job. Validation happens in JobSubmitRequest.validate_webhook_url() and again in Job.validate_webhook_url(), both using urlparse() plus socket.gethostbyname() and rejecting private, loopback, link-local, and multicast answers. The network request is made independently later by JobExecutor._send_webhook(), which constructs a fresh httpx.AsyncClient and POSTs to the original URL, causing httpx to perform its own DNS resolution with no check on the address actually connected to. That separation is the root cause: CWE-367 (time-of-check time-of-use) enabling CWE-918 (server-side request forgery), because the first DNS answer is trusted for a later, unrelated lookup. An attacker controlling authoritative DNS for the callback hostname returns a public address (the advisory's PoV uses 93.184.216.34) during Pydantic validation and an internal address on the delivery lookup, so direct http://127.0.0.1:port/ webhooks are rejected while the equivalent destination is reached via rebinding. The flaw is explicitly reported as an incomplete fix / patch bypass of the earlier unvalidated-webhook advisory GHSA-8frj-8q3m-xhgm, which covers releases at or below 4.5.124. The primitive is blind - the advisory does not claim response-body disclosure, RCE, or live credential theft, only internal interaction, host/port probing through timing and error behaviour, and possible cloud-metadata interaction where metadata endpoints accept POST and the network permits it.

Know when Praisonai gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 5.4 MEDIUM

AV:N remote API and PR:N since the Jobs API is unauthenticated by default; AC:H because exploitation depends on a DNS-rebinding transition between validation and delivery; S:C with C:L/I:L for blind SSRF against internal systems.

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Oct 23, 2026 - 14:02 EUVD
CVE Published
Oct 23, 2026 - 12:04 cve.org
HIGH 7.2

DescriptionCVE.org

PraisonAI is a multi-agent teams system. From version 4.5.126 to before version 4.6.59, PraisonAI's Async Jobs API validates webhook_url when a job request is parsed and again when the internal Job object is constructed. That validation blocks direct loopback/private targets, but it is not bound to the later network request. When a job completes, _send_webhook() passes the original hostname to httpx.AsyncClient.post() with no send-time validation, IP pinning, or guarded transport. An attacker-controlled hostname can therefore resolve to a public IP during Pydantic validation and later resolve to loopback/private/cloud-metadata infrastructure during webhook delivery. This bypasses the intended SSRF guard in current supported releases. This appears to be an incomplete fix / patch bypass for GHSA-8frj-8q3m-xhgm. This issue has been patched in version 4.6.59.

Technical POC Analysis

CWE-367 (Time-of-check Time-of-use), with CWE-918 (SSRF) as the impact class.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Recent versions of the PraisonAI Python package (4.5.126-4.6.58) contain a server-side request forgery flaw in its Async Jobs API that could allow an attacker to redirect server-side webhook calls to internal or cloud metadata endpoints. While no active exploitation has been observed, the vulnerability poses a high risk to organizations running this software, as it could lead to unauthorized access to sensitive internal resources or cloud credentials. Leadership should prioritize patching or mitigating this issue to protect critical infrastructure.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Implement network egress filtering to block requests to internal and metadata endpoints, and modify application code to revalidate resolved IP addresses immediately before sending webhooks.

Threat Intelligence Overview

EPSS Score
0.2%
Top 85% exploitable
Prevalence
Low
niche open-source multi-agent AI framework, limited production footprint
Data Quality
3 sources
Confidence: Low

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

CVE-2026-61447 CRITICAL POC
10.0 Jul 11

Remote code execution in PraisonAI before 1.6.78 allows attackers to run arbitrary Python on the host by manipulating th

CVE-2026-57139 CRITICAL POC
9.8 Sep 15

PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans

CVE-2026-55536 CRITICAL POC
9.1 Aug 25

WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att

CVE-2026-55541 HIGH POC
8.8 Aug 25

PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne

CVE-2026-61439 HIGH POC
8.7 Jul 11

System prompt extraction and unauthorized tool invocation in PraisonAI before 4.6.78 arise because the prompt-injection

CVE-2026-55534 HIGH POC
8.6 Aug 25

Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller

CVE-2026-55526 HIGH POC
8.5 Aug 25

SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou

CVE-2026-61429 HIGH POC
8.4 Jul 11

Server-side request forgery in PraisonAI's Crawl4AI/Chromium crawling backend (all versions before 1.6.78) lets low-priv

CVE-2026-55533 HIGH POC
8.2 Aug 25

Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec

CVE-2026-55528 HIGH POC
8.2 Aug 25

Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u

CVE-2026-55522 HIGH POC
7.8 Aug 05

Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d

CVE-2026-55523 HIGH POC
7.7 Aug 05

Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy