CVE-2026-46420: Setup PHP Command Injection Vulnerability
MODERATECVE-2026-46420 is a MODERATE (CVSS 5.6) command injection vulnerability (CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')) affecting Setup PHP libraries in the GitHub Actions ecosystem. The issue involves command injection in repository-derived php version resolution. Remediation is available by upgrading affected packages to version 2.37.1.
CVE-2026-46420 at a Glance
Security Impact
CVSS: 5.6
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L).
How to Fix CVE-2026-46420
To remediate this vulnerability, upgrade all affected Setup PHP dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade shivammathur/setup-php to 2.37.1
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for shivammathur/setup-php
How to Check if You Are Affected
To determine whether your application is affected by CVE-2026-46420, inspect your project dependencies for Setup PHP:
inspect dependencies for shivammathur/setup-php
Analyze the terminal output to locate any version of Setup PHP in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 2.37.1), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection'), where the product constructs all or part of an os command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended os command when it is sent to a downstream component. In Setup PHP, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-46420 Affected Setup PHP Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
shivammathur/setup-php
|
GitHub Actions |
≥ 2.25.0
< 2.37.1
|
2.37.1
|
References
Frequently Asked Questions
What is CVE-2026-46420?
Which Setup PHP versions are affected?
What version fixes CVE-2026-46420?
Is shivammathur/setup-php affected?
What is the CVSS score of CVE-2026-46420?
What CWE is associated with CVE-2026-46420?
How can I check GitHub Actions dependencies for CVE-2026-46420?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-pqwm-q9pv-ph8r",
"modified" : "2026-05-20T15:31:52Z",
"published" : "2026-05-20T15:31:52Z",
"aliases" : [ "CVE-2026-46420" ],
"summary" : "Setup PHP: Command Injection in Repository-Derived PHP Version Resolution",
"details" : "### Summary\n\nA command injection vulnerability was identified in `shivammathur/setup-php` when the action resolves the PHP version from repository-controlled files and uses that value while generating the platform setup script.\n\nIn affected versions, `setup-php` may read the PHP version from:\n\n- `.php-version`\n- `composer.lock` via `platform-overrides.php`\n- `composer.json` via `config.platform.php`\n\nIf an attacker can influence one of these files and the workflow executes `setup-php` in a trusted context, they may be able to execute commands on the GitHub Actions runner.\n\n### Impact\n\nThis issue is exploitable when `setup-php` is run after checking out attacker-controlled repository contents and resolves the PHP version from repository files.\n\nThe most significant example is a privileged workflow such as `pull_request_target` that checks out untrusted pull request code before invoking `setup-php`. Similar risk can also arise in other workflows that operate on attacker-controlled refs, branches, or repository contents in a trusted context.\n\nThis is not a separate security boundary when an attacker can already modify the workflow definition itself or directly control the `php-version` workflow input, since that level of access already permits arbitrary command execution in GitHub Actions.\n\n### Technical details\n\nIn affected versions, repository-derived PHP version values were insufficiently constrained before being incorporated into the generated shell or PowerShell setup script executed by the action. This could allow attacker-controlled values from supported repository files to influence script execution in trusted workflow contexts.\n\n### Remediation\n\nIf you are using `shivammathur/setup-php@v2`, no action is needed on your end. Users who pin the setup-php release version or release version SHA should upgrade to a patched version.\n\nThe fix validates PHP version inputs, constrains manifest-derived versions, hardens script generation at the execution, and includes additional checks in related input-handling paths.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "GitHub Actions",
"name" : "shivammathur/setup-php"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "2.25.0"
}, {
"fixed" : "2.37.1"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/shivammathur/setup-php/security/advisories/GHSA-pqwm-q9pv-ph8r"
}, {
"type" : "WEB",
"url" : "https://github.com/shivammathur/setup-php/commit/eeef37e059fb5368a5bc8ed8ce45ff54bd39b80b"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/shivammathur/setup-php"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-78" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-05-20T15:31:52Z",
"nvd_published_at" : null
}
}