Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain post access to configured approval channel
-
DeliveryWait for pending dangerous-tool approval prompt
-
ExploitSend approval-classified message 'yes'
-
ExecutionUnbound channel message accepted as approval
-
ImpactAgent 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote code execution in PraisonAI before 1.6.78 allows attackers to run arbitrary Python on the host by manipulating th
PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans
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
System prompt extraction and unauthorized tool invocation in PraisonAI before 4.6.78 arise because the prompt-injection
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
Server-side request forgery in PraisonAI's Crawl4AI/Chromium crawling backend (all versions before 1.6.78) lets low-priv
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
EUVD-2026-108873
GHSA-8579-rgg5-ph2m
NVD
CVE.org
EPSS
Exploit-DB