Skip to main content

PraisonAI EUVDEUVD-2026-108873

| CVE-2026-56832 HIGH
Insufficient Verification of Data Authenticity (CWE-345)
2026-10-23 GitHub_M GHSA-8579-rgg5-ph2m PYSEC-2026-3506
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
    Gain post access to configured approval channel
  2. Delivery
    Wait for pending dangerous-tool approval prompt
  3. Exploit
    Send approval-classified message 'yes'
  4. Execution
    Unbound channel message accepted as approval
  5. Impact
    Agent executes privileged tool with process privileges

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Data authenticity verification
Exploitation Conditions

Requires all of the following: the deployment uses praisonai.bots.DiscordApproval as the human-approval control for dangerous tools (e.g. shell commands, file writes/deletes, deployments); a high-risk tool call is pending and the approval prompt has already been posted to the configured channel; and the attacker has write access to that specific configured Discord approval channel. The attacker then posts any message classified as approval (such as 'yes') that is NOT a reply, thread message, interaction callback, or request-bound token. LIMITING FACTORS: this only affects installs using the Discord messaging approval backend (versions >= 4.5.2 and <= 4.6.58) where channel membership is broader than approval authority; it needs a pending request and channel-post permission (so it is not anonymous/unauthenticated); and the realized confidentiality/integrity/availability impact is bounded by which tools the agent actually exposes behind approval. The advisory also notes the Slack and Telegram backends lack an explicit approver allowlist, but those are better request-scoped (Slack via conversations.replies thread, Telegram via callback/reply message_id); the report-grade issue is the Discord unthreaded channel cross-talk.

Impact

Signals point to a genuine but scope-limited priority rather than a widespread emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, 8.8) is internally consistent with the advisory's own rationale: a networked Discord channel (AV:N), trivial action of posting 'yes' (AC:L), low privilege of channel-post permission (PR:L), and no victim interaction (UI:N). PR:L confirms this is an authenticated issue - the attacker must be able to post in the configured approval channel, so it is not fully unauthenticated. CWE-863 (incorrect authorization) / CWE-345 (insufficient authenticity verification) correctly frame this as an authorization-binding design flaw, not memory corruption. No EPSS score was provided and the issue is NOT in CISA KEV, so there is no evidence of active exploitation; a public PoC reference exists in the advisory but it is a local, mock-based proof-of-vulnerability, not verified as a working remote exploit. The vuln.today Decision label is 'this_week' (not act_now/emergency), aligning with a patch-promptly posture. Real-world risk is gated by three conditions that must all hold: the deployment must use the DiscordApproval backend for dangerous tools, an approval request must be pending, and the approval channel must have membership broader than approval authority - which makes exploitation opportunistic/targeted rather than internet-wide. EPSS is absent, so probability of broad exploitation cannot be quantified; treat the niche footprint as the main mitigating factor.

Exploit ScenarioDerived

An organization runs a PraisonAI agent that gates shell commands or file operations behind DiscordApproval in a shared team channel. When the agent posts an approval request for a dangerous command, any member of that channel - not just a designated approver - replies 'yes', and the backend accepts this unrelated, unbound message as the approval decision, causing the privileged tool to execute. The advisory includes a local mock-based PoV demonstrating that an intruder's later 'yes' message is accepted (approver='D_INTRUDER'); it stops at the approval decision and does not run the tool.

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

PraisonAI's Discord approval backend (praisonai.bots.DiscordApproval, versions 4.5.2 through 4.6.58) treats any later non-bot message in the configured Discord channel as the approval decision for a pending dangerous tool call, so an authenticated low-privileged Discord user who can post in that channel can reply 'yes' to a pending shell command, file write/delete or deployment request without being the intended approver - the message need not be a reply, thread message, button interaction or token-bound response. Exploitation requires a specific deployment posture: DiscordApproval used as the human gate for high-risk tools, a request already pending with its prompt posted, and attacker write access to that channel; realized impact is bounded by whichever tools the agent exposes behind approval. Vendor-released patch: upgrade pip package praisonai to 4.6.59 or later; no public exploit against live deployments is identified - the accompanying proof-of-concept is a local, mock-based harness that is not verified as working exploit code against real Discord channels.

RemediationAI

Upgrade the pip package to praisonai 4.6.59 or later, the version the vendor states contains the fix; verify with pip install -U 'praisonai>=4.6.59' and confirm the installed DiscordApproval binds approvals to the specific request. The advisory's fix design requires Discord approvals to be tied to the request - Discord interactions/buttons carrying an opaque server-side request id, or a Discord reply whose message_reference.message_id matches the approval prompt - plus explicit approver identity configuration (approver_user_ids / allowed_approvers) across all messaging backends, rejection of users outside that set even inside the configured channel, and per-request nonce verification server-side before returning ApprovalDecision(approved=True). If upgrading immediately is not possible, the actionable compensating controls are: restrict membership and post permission on the configured Discord approval channel to the subset of users who are actually authorized approvers, so that channel write access no longer equals approval authority (trade-off: a smaller responder pool and slower approvals); or move the approval gate to the Slack or Telegram backends, which scope responses to the approval thread or callback/reply message id (trade-off: those backends still lack an explicit approver allowlist, so channel/chat membership remains the de facto authorization boundary); or reduce exposure by removing dangerous tools (shell commands, file writes/deletes, deployments) from agent configurations that use DiscordApproval until the patch is deployed (trade-off: lost agent capability). Vendor workarounds beyond the upgrade are not specified; the version upgrade is the complete fix. Details: https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-8579-rgg5-ph2m.

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

The flaw is CWE-345 (insufficient verification of authenticity), with the advisory also tagging CWE-863 (incorrect authorization), in the Python messaging approval backends shipped in the pip package praisonai (CPE cpe:2.3:a:mervinpraison:praisonai, wildcarded for versions). DiscordApproval.request_approval() posts an approval prompt to a configured channel_id and stores the returned message id; _poll_for_response() then queries /channels/{channel_id}/messages?after={message_id}&limit=10, skips bot-authored messages, keyword-classifies each remaining message body and returns ApprovalDecision(approved=True) on 'approve'/'yes'. Nowhere does it validate a Discord message_reference back to the approval message, a request-specific thread, an interaction/button callback, an approver identity allowlist, or a per-request nonce - the constructor accepts only token, channel_id, timeout and poll_interval. The sibling backends are stronger: the Slack backend scopes to conversations.replies on the approval message timestamp and the Telegram backend checks the callback/reply message_id, though neither exposes an explicit approver identity parameter either; the report-grade defect is the Discord backend's unthreaded channel cross-talk. Because approval gating exists to pause before privileged agent actions, a mis-bound approval converts channel write access into authority over the agent's tool execution scope.

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

Attacker interacts over a networked Discord channel (AV:N) and only needs post permission (PR:L), not approver authority; posting 'yes' suffices (AC:L/UI:N); approved tools can reach full C/I/A.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/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
Low
User Interaction
None
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.DiscordApproval approves a pending dangerous tool call when it sees any later non-bot message in the configured Discord channel whose text is classified as approval, such as yes. As a result, any user who can post in the configured approval channel can approve a pending high-risk tool call by sending yes after the approval message appears. the same PoV also shows that the Slack and Telegram messaging approval backends have no explicit approver allowlist parameter, but the primary report-grade issue is the Discord backend's unthreaded channel cross-talk: the approving message does not need to be a reply or otherwise request-bound. This issue has been patched in version 4.6.59.

Technical POC Analysis

CWE-345 (Insufficient Verification of Data Authenticity), with a secondary CWE-863 (Incorrect Authorization).

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

CVE-2026-56832 is a high-severity flaw in PraisonAI's Discord approval backend (versions 4.5.2-4.6.58) that allows any authenticated low-privileged user with channel access to approve dangerous tool calls (e.g., shell commands, file writes) by simply posting a non-bot message like 'yes'. This undermines the human approval gate, potentially enabling unauthorized actions that could lead to data loss or system compromise, and requires immediate leadership attention due to the risk of insider or compromised account abuse.

Business Impact: High
Compensating Controls

Apply vendor patch (upgrade to praisonai 4.6.59 or later). As an interim mitigation, restrict Discord channel membership and write permissions to only authorized approvers, and monitor channel messages for unauthorized 'yes' responses.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Low
emerging 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
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

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

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