Skip to main content

PraisonAI CVE-2026-56840

| EUVDEUVD-2026-108880 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-23 GitHub_M GHSA-63v4-w882-g4x2 PYSEC-2026-3503
8.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Influence agent prompt to emit dangerous tool call
  2. Delivery
    Embed XSS payload in tool argument
  3. Exploit
    Approver opens HTTPApproval dashboard URL
  4. Execution
    Injected script auto-POSTs approve to /decide
  5. Impact
    Gated dangerous tool runs with process privileges

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires the HTTPApproval (http) non-console approval backend to be configured and running (praisonai.bots.HTTPApproval) - this is not the documented default console backend. The attacker must be able to influence an agent task or prompt enough to make the agent emit a dangerous tool call (e.g. execute_command, execute_code, delete_file) whose argument carries the XSS payload. Exploitation only fires when a human approver opens the pending request's approval URL (UI:R) - the injected same-origin script derives the /approve/{request_id}/decide endpoint from location.pathname, so the unguessable request id does not stop it. Limiting factors: non-default http backend, dependence on attacker influence over agent inputs, and the requirement that an approver actually views the page; no dashboard authentication is required to deliver the payload. Fixed completely only by updating to 4.6.59 (the advisory also suggests html.escape on all untrusted values, avoiding inline JS, and a restrictive CSP).

Impact

The input CVSS of 8.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H) rates this High: network-reachable, low complexity, no authentication to the dashboard, but requiring user interaction (UI:R) in the form of a human approver opening the approval page. The multi-source signals paint a more conditional picture than the raw score suggests. Positive priority signals: the vuln.today Decision label is 'this_week', a vendor patch exists (4.6.59), and the GHSA advisory ships a working local proof-of-vulnerability. Tempering signals: this is NOT in CISA KEV (no confirmed active exploitation), and no EPSS score was supplied, so exploitation-probability cannot be quantified from this data. Critically, exploitation is gated by three stacked preconditions - the HTTPApproval (http) backend must be deployed (console is the documented default), an attacker must be able to steer an agent task/prompt into emitting a dangerous tool call carrying the XSS payload, and a human must actually open the approval URL. This is therefore a genuine human-in-the-loop-bypass priority for anyone running the http approval backend, but closer to a targeted/conditional issue than a mass-exploitable internet-facing RCE. No SSVC exploitation/automatable/technical-impact decision values were provided to corroborate the 'this_week' label.

Exploit ScenarioDerived

An attacker who can influence an agent's task or prompt causes the agent to emit a dangerous tool call (e.g. execute_command) whose argument embeds a short XSS payload. When a human approver opens the HTTPApproval dashboard URL to inspect the risky request, the injected script runs in the dashboard origin and auto-POSTs to /approve/{request_id}/decide, returning approved=True before the human clicks anything - bypassing the approval boundary. A local, non-executing proof-of-vulnerability is published in the GHSA advisory; given AV:N/AC:L, exploitation is low-complexity once the attacker controls a tool argument and an approver views the page.

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

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

Alert me

AnalysisAIv1 – Oct 23, 2026

Cross-site scripting in the PraisonAI HTTPApproval dashboard lets an attacker-controlled tool argument run same-origin JavaScript that silently approves a pending dangerous tool call before the human reviewer clicks Approve or Deny, defeating the human-in-the-loop safety boundary. Only deployments using the non-console http approval backend (praisonai.bots.HTTPApproval) in versions 4.5.2 through 4.6.58 are exposed (4.5.0 and 4.5.1 do not ship this backend); the CVSS vector (PR:N/UI:R) means no dashboard authentication is needed, but an approver must open the pending request's approval URL for the payload to fire. The issue is fixed in 4.6.59; a public PoC reference exists (a local proof-of-value script in the GitHub advisory that stops at the approval decision and does not run the command), and it is not verified as working exploit code against deployed instances, with no KEV listing or confirmed active exploitation at time of analysis.

RemediationAI

Vendor-released patch: 4.6.59 - upgrade pip install --upgrade praisonai==4.6.59 (or later) per the GHSA-63v4-w882-g4x2 advisory, which is the only complete fix because the vulnerable f-string rendering is removed by HTML-escaping all untrusted values. Until upgrade is possible, stop using the http approval backend and switch to the documented default console backend, accepting that approvals then depend on an operator watching the local console rather than a browser URL; if the HTTP dashboard must stay, place it behind an authenticating reverse proxy restricted to trusted approver hosts (side effect: the injected script still runs in the dashboard origin for anyone who can reach the page, so this only narrows who can be attacked, it does not fix the sink). Do not treat the unguessable request id as a mitigation, since the injected script derives the decide endpoint from location.pathname of the page it is loaded in; operators who patch the code themselves should apply html.escape(str(value), quote=True) to tool_name, risk_level, agent_name and every argument key and value, drop the inline decide JavaScript and add a restrictive CSP, with the trade-off that a CSP may break the built-in Approve/Deny buttons unless they are refactored to external scripts.

Affected VersionsENISA

PraisonAI 4.5.2, < 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

CWE-79: the aiohttp-based HTTPApproval backend in src/praisonai/praisonai/bots/_http_approval.py builds its approval page in _build_html() using raw f-string interpolation, so tool argument keys and values (plus tool_name, risk_level and agent_name) are inserted into the HTML without escaping. Because the generated page also contains same-origin JavaScript that posts to /approve/{request_id}/decide, and _handle_decide() marks a pending request approved whenever the JSON body carries decision == "approve", an injected </code><script>...</script><code> sequence placed in a tool argument executes in the dashboard origin and derives the decision endpoint from location.pathname - the unguessable request id is therefore not a defense, since the script inherits it from the page it is running in. The affected surface is the HTTP approval dashboard that gates dangerous tools such as execute_command, execute_code and delete_file; the advisory explicitly distinguishes this sink from a previously published stored-XSS issue in src/praisonai/api.py involving missing nh3 sanitization. The advisory's suggested fix escapes every untrusted value with html.escape(..., quote=True) or an auto-escaping template, and further recommends avoiding inline JavaScript, adding a restrictive CSP, and requiring a decision token that lives outside attacker-controlled rendered fields.

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 8.8 HIGH
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

Network-reachable dashboard, low complexity, no dashboard auth (PR:N), but a human approver must open the page (UI:R); auto-approving dangerous tools yields full C/I/A impact via subsequent tool execution.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/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
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

DescriptionCVE.org

PraisonAI is a multi-agent teams system. From version 4.5.2 to before version 4.6.59, praisonai.bots.HTTPApproval renders pending tool approval arguments directly into the approval dashboard HTML. An attacker-controlled tool argument can inject JavaScript into that page. When a human opens the approval URL to inspect the risky tool request, the script runs in the dashboard origin and can POST to the same request's /approve/{request_id}/decide endpoint, causing HTTPApproval to return approved=True. This issue has been patched in version 4.6.59.

Technical POC Analysis

CWE-79 (Improper Neutralization of Input During Web Page Generation).

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

A high-severity cross-site scripting vulnerability in PraisonAI's HTTPApproval dashboard could allow an attacker to silently bypass human approval controls for dangerous tool calls. This affects organizations using the affected versions (4.5.2 to 4.6.58), undermining the human-in-the-loop safety mechanism that is critical for AI governance and risk management. Leadership should prioritize patching to maintain oversight of automated actions and prevent potential misuse.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 62% 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.4%
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
No
Human Impact
High

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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