Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessFork repo, craft malicious branch name
-
DeliveryOpen pull request from fork
-
ExploitComment @claude to trigger workflow
-
ExecutionUnquoted branch name injects shell in runner
-
PersistAbuse GitHub App token via $GITHUB_PATH
-
ImpactWrite to repo, manipulate PRs/issues, abuse OIDC
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires that the target repository has deployed the bundled Claude GitHub Actions workflow (.github/workflows/claude.yml) from a pre-4.6.40 release, configured with a GitHub App token carrying write permissions plus OIDC and gh/git access. The concrete prerequisites are: the attacker must be able to open a pull request from a fork (public repos allow this by default) and set an arbitrary fork branch name containing shell metacharacters, then post an @claude comment to trigger the job. No maintainer interaction or trusted-collaborator status is needed because the workflow omits the author-association/collaborator check - that missing check is precisely what removes the usual limiting factor. Limiting factors that reduce real-world exposure: only repositories running this specific workflow with a privileged token are affected; repositories that already restrict the workflow to trusted users, use a read-only token, or never adopted the workflow are not exploitable. |
| Impact | This is a genuine high-priority issue rather than an inflated high-CVSS score. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H = 10.0) is well-supported: exploitation is remote, low-complexity, requires no privileges beyond the ability to open a public pull request, and no interaction from a maintainer. The scope change (S:C) is justified because code executing in the runner escapes the workflow's intended boundary to abuse a privileged GitHub App token, OIDC, and repository access - potentially compromising the whole repository and downstream trust. No EPSS score, KEV listing, or POC was provided, so the practical likelihood signal is unconfirmed; the attack technique (Actions template/command injection) is well-understood publicly, which raises real-world plausibility even without a published exploit. The main limiting factor is prevalence: PraisonAI is a niche open-source project, and only repositories that actually deployed this specific bundled workflow with the Claude App token are exposed. Note the tag/CWE nuance: it is labeled both Command Injection and Authentication/Authorization Bypass, and CWE-862 (Missing Authorization) captures the missing trusted-collaborator check rather than the injection sink itself - both must be understood together to assess exposure. |
| Exploit ScenarioDerived | An attacker forks the target repository and creates a branch whose name embeds shell metacharacters (for example a name containing |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 05, 2026
Unauthenticated remote command execution in PraisonAI's bundled Claude GitHub Actions workflow (versions before 4.6.40) lets an outside contributor run arbitrary shell code on the CI runner by opening a fork pull request whose branch name contains shell metacharacters and posting an @claude comment. Two compounding flaws enable this: the workflow interpolates the attacker-controlled branch name directly into an unquoted Bash run: block, and it triggers for any @claude comment without verifying the commenter is a trusted collaborator. Because the job runs with a GitHub App token holding write permissions plus OIDC and gh/git access, injected commands can be chained via $GITHUB_PATH into later privileged steps to gain repository write, PR/issue manipulation, or OIDC-token abuse. No public exploit identified at time of analysis.
RemediationAI
Vendor-released patch: upgrade to PraisonAI 4.6.40, which quotes the branch name via environment variables in the workflow's Bash block. Repositories that vendored or copied the older claude.yml should apply the same fixes manually: pass steps.check_fork.outputs.pr_branch and is_fork through the job's env: and reference them as quoted shell variables (git fetch ... :"${PR_BRANCH}" and if [ "${IS_FORK}" = "true" ]) instead of inlining ${{ }} expressions in run: blocks. As additional hardening, add an author-association or collaborator check so the workflow only triggers for trusted users (e.g., gate on github.event.comment.author_association being OWNER/MEMBER/COLLABORATOR), which closes the missing-authorization half of the flaw; the trade-off is that legitimate outside-contributor @claude requests will no longer auto-run and must be invoked by a maintainer. Where immediate patching is not possible, disable or remove the Claude workflow, or scope the GitHub App token down to read-only and remove OIDC permissions to blunt post-injection impact. Refer to the advisory at https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-xp85-6wwf-r67c and the fix commit at https://github.com/MervinPraison/PraisonAI/commit/179cab02dbec0c1e9b601507a659.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerable component is a GitHub Actions CI/CD workflow (.github/workflows/claude.yml) that integrates Anthropic's Claude to respond to @claude mentions. The root cause is CWE-862 (Missing Authorization) combined with a classic GitHub Actions template-injection pattern: the workflow expanded ${{ steps.check_fork.outputs.pr_branch }} - a value derived from a fork's branch name - directly inside a git fetch command in a Bash run: block. Because Actions substitutes ${{ }} expressions as raw text before the shell parses the line, an unquoted attacker-controlled value is interpreted as shell syntax, allowing command injection. The fix moves the branch name and fork flag into environment variables (PR_BRANCH, IS_FORK) and references them as quoted shell variables ("${PR_BRANCH}"), which prevents the value from being parsed as code. The same commit also hardens unrelated agent tooling (URL validation in mentions.py and an expanded AST-based sandbox blocklist in python_tools.py), but the CVE itself concerns the workflow. Affected product per CPE is cpe:2.3:a:mervinpraison:praisonai (all versions up to the fix).
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:N/UI:N/S:C/C:H/I:H/A:H
Remote fork PR plus @claude comment needs no privileges or maintainer interaction (PR:N/UI:N/AC:L), and runner code escapes to abuse a privileged token (S:C, C/I/A:H).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
PraisonAI is a multi-agent teams system. In versions prior to 4.6.40, the bundled Claude GitHub Actions workflow is vulnerable to command injection because it embeds an attacker-controlled pull request branch name into a Bash run: block without quoting or validation. Additionally, the workflow allows any @claude comment to trigger the job regardless of whether the commenter is a trusted collaborator. An outside contributor can open a pull request from a fork whose branch name contains shell metacharacters and comment @claude, causing Bash to execute arbitrary shell code in the GitHub Actions runner. Because these commands run in a job holding a GitHub App token with write permissions, OIDC access, and gh/git access, the injection can be chained through $GITHUB_PATH to compromise later privileged steps, enabling repository writes, pull request and issue manipulation, or OIDC-token abuse. This issue has been fixed in version 4.6.40.
Executive ViewAI
PraisonAI's Claude GitHub Actions workflow (versions prior to 4.6.40) contains a critical vulnerability permitting unauthenticated external contributors to execute arbitrary code on CI runners through branch name manipulation. Organizations using affected versions face immediate risk of CI infrastructure compromise, credential exposure, and supply chain integrity violation, enabling attackers to inject malicious code into production artifacts and access sensitive repository secrets.
Immediately disable workflow execution for pull_request events from external forks; restrict to pull_request_target on protected branches only; require manual approval before PR workflow triggers; implement environment-scoped secrets to limit token exposure; rotate all CI credentials and GitHub tokens; audit and minimize GitHub App write permissions; implement workflow logging and monitoring for suspicious command execution patterns.
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
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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
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
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
Cross-site request forgery against the PraisonAI MCP HTTP-stream transport allows unauthenticated remote attackers to ex
Remote unauthenticated access to PraisonAI's legacy Flask API server allows attackers to execute configured agent workfl
Path traversal in praisonaiagents prior to 1.6.58 allows a low-privileged caller to write arbitrary JSON files to any pr
EUVD-2026-53575
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB