PraisonAI DiscordApproval accepts unrelated channel messages as dangerous-tool approvals
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 4.6.59
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
PraisonAI's Discord approval feature (praisonai.bots.DiscordApproval) can be tricked into approving a pending high-risk tool call when any user in the configured Discord approval channel posts an affirmative word like "yes," even if that message isn't a reply to the approval request. This lets anyone with posting access to that channel bypass the intended approval check for dangerous agent actions.
Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.
Read the original description
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.
Timeline
- CVE published
- First seen by cve.now
Affected versions
- MervinPraison PraisonAI
From 4.5.2 · fixed in 4.6.59
- praisonaiPyPI
From 4.5.2 · fixed in 4.6.59