Skip to main content

PraisonAI EUVDEUVD-2026-65516

| CVE-2026-55535 MEDIUM
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-08-25 GitHub_M GHSA-hmfx-4v44-9qw9
6.8
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 with unresolvable or attacker-controlled webhook_url
  2. Delivery
    gaierror silently passes validation or DNS rebinding flips record after validation
  3. Exploit
    PraisonAI server dispatches HTTP POST to resolved internal address
  4. Execution
    Access cloud metadata API or internal admin panel
  5. Impact
    Exfiltrate credentials or sensitive internal data

Vulnerability Assessment

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

Two exploitation paths with different prerequisites exist. Path 1 (gaierror fail-open): No special conditions - unauthenticated network access to the Jobs API endpoint is sufficient. Submitting any unresolvable domain as webhook_url bypasses all validation. This works against default configurations of PraisonAI with the Jobs API enabled. Exploitation is limited to deployments running praisonai 4.6.48 or below and requires that the server can make outbound HTTP to the target internal address (not blocked by egress controls). Path 2 (DNS rebinding): Requires attacker control of a domain with configurable DNS TTL (1 second or less) and a DNS hosting provider that allows rapid record updates. No authentication to PraisonAI is required. Exploitation requires the TOCTOU window between validation and HTTP dispatch to be large enough for the DNS flip - job execution latency aids the attacker. Both paths are unauthenticated per the CVSS PR:N vector confirmed by the GHSA advisory.

Impact

The published CVSS 6.8 vector (AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N) represents the DNS rebinding path, where AC:H is justified by the requirement for attacker-controlled DNS infrastructure with sub-second TTL. However, the gaierror fail-open bypass - confirmed by a single curl command in the GHSA proof-of-concept - requires no special infrastructure whatsoever, arguably meriting AC:L treatment on its own and a materially higher score. The combination of unauthenticated access (PR:N confirmed by GHSA), scope change (S:C reaching internal services), and high confidentiality impact (C:H via metadata credential exposure) makes this a genuine priority for cloud-hosted deployments. EPSS data was not provided. No CISA KEV listing is present, so active exploitation is not confirmed. The published detailed PoC lowers the exploitation bar significantly. The primary real-world risk is deployments on cloud infrastructure where the IMDS endpoint (169.254.169.254) is reachable and can expose IAM credentials or instance metadata to the attacker.

Exploit ScenarioDerived

An unauthenticated attacker submits a job via the Jobs API with webhook_url set to an unresolvable internal-sounding domain (e.g., http://internal-service.corp/cb); the validator catches the gaierror and silently accepts the URL. If split-horizon DNS resolves the domain internally, the PraisonAI server POSTs job completion data to that internal service. Alternatively, the attacker registers attacker.com with a 1-second TTL pointing to a public IP, submits the job (validation passes), then flips the DNS record to 169.254.169.254 before job completion, causing PraisonAI to POST to the cloud metadata endpoint and potentially exposing AWS IAM credentials or GCP service account tokens. A detailed proof-of-concept for both paths is published in the GHSA advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 – Aug 25, 2026

Server-Side Request Forgery in PraisonAI before version 4.6.58 allows unauthenticated remote attackers to force the application server to make HTTP requests to internal network resources, including cloud metadata endpoints (169.254.169.254), loopback services, and RFC 1918 hosts. Two independent bypass paths exist in the Jobs API webhook_url validator: a DNS rebinding path exploiting the TOCTOU gap between validation and request dispatch, and a fail-open condition where socket.gaierror exceptions are silently swallowed, accepting unresolvable domains with no validation at all. A detailed proof-of-concept including curl commands is published in the GHSA advisory; no CISA KEV listing was present at time of analysis.

RemediationAI

Upgrade to praisonai 4.6.58 or later via pip (pip install --upgrade 'praisonai>=4.6.58'), available at https://github.com/MervinPraison/PraisonAI/releases/tag/v4.6.58 (patch commit 2f9677abb2ea68eab864ee8b6a828fd0141612e1). The fix addresses both bypass paths: gaierror exceptions now block the URL (fail-closed), and web crawl tools re-validate all resolved addresses via socket.getaddrinfo() at request time rather than only at validation time. If immediate patching is not possible, apply egress firewall rules or cloud security group policies to block outbound HTTP from the PraisonAI server to RFC 1918 ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), loopback (127.0.0.0/8), and the link-local metadata range (169.254.0.0/16). Note that network-layer controls are a partial mitigation only: they do not address the gaierror bypass for domains that resolve via split-horizon DNS, and they may break legitimate internal webhook use cases. Disabling the Jobs API webhook_url feature entirely is the most effective compensating control if webhooks are not required.

Affected VersionsENISA

PraisonAI < 4.6.58

Affected Packages

pypi praisonai fix: 4.6.58

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 is an open-source multi-agent AI orchestration framework distributed via pip (CPE: cpe:2.3:a:mervinpraison:praisonai:*:*:*:*:*:*:*:*). The vulnerability root cause is CWE-367 (Time-Of-Check Time-Of-Use Race Condition). The validate_webhook_url() function in jobs/models.py performs a one-time DNS resolution at validation time via socket.gethostbyname(), checking whether the resulting IP is private or loopback. However, the resolved address is never pinned or re-validated when the actual HTTP POST is dispatched later through httpx.AsyncClient in jobs/executor.py. This TOCTOU window enables DNS rebinding: an attacker-controlled domain resolves to a public IP at check time, then switches to an internal address at use time. A second, simpler bypass exists independently: the validator wraps the DNS call in a try/except that catches socket.gaierror with a bare pass, meaning any domain that fails to resolve at validation time is silently accepted. The HTTP client then performs its own DNS resolution at request time, which may return an internal address in environments with split-horizon DNS or when the domain later becomes resolvable.

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 6.8 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N
vuln.today AI 8.6 HIGH

The gaierror fail-open bypass requires no DNS infrastructure, making AC:L appropriate; published CVSS AC:H covers only the rebinding path.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Aug 25, 2026 - 17:17 EUVD

DescriptionCVE.org

PraisonAI is a multi-agent teams system. Prior to praisonai 4.6.58, the Jobs API validate_webhook_url() path fails open on socket.gaierror and does not bind the validated address to the later request. An attacker webhook_url can later resolve to 127.0.0.1, 169.254.169.254, or another internal address. This issue is fixed in version 4.6.58.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Low
niche open-source AI agent framework, limited enterprise footprint
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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 MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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-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-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

CVE-2026-55532 HIGH POC
7.6 Aug 25

Cross-site request forgery against the PraisonAI MCP HTTP-stream transport allows unauthenticated remote attackers to ex

CVE-2026-44338 HIGH POC
7.3 May 08

Remote unauthenticated access to PraisonAI's legacy Flask API server allows attackers to execute configured agent workfl

CVE-2026-55527 HIGH POC
7.1 Aug 25

Path traversal in praisonaiagents prior to 1.6.58 allows a low-privileged caller to write arbitrary JSON files to any pr

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