GHSA-pqwm-q9pv-ph8r

Suggest an improvement
Source
https://github.com/advisories/GHSA-pqwm-q9pv-ph8r
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-pqwm-q9pv-ph8r/GHSA-pqwm-q9pv-ph8r.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-pqwm-q9pv-ph8r
Aliases
  • CVE-2026-46420
Published
2026-05-20T15:31:52Z
Modified
2026-05-20T15:45:44.871056520Z
Severity
  • 5.6 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L CVSS Calculator
Summary
Setup PHP: Command Injection in Repository-Derived PHP Version Resolution
Details

Summary

A 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.

In affected versions, setup-php may read the PHP version from:

  • .php-version
  • composer.lock via platform-overrides.php
  • composer.json via config.platform.php

If 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.

Impact

This issue is exploitable when setup-php is run after checking out attacker-controlled repository contents and resolves the PHP version from repository files.

The 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.

This 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.

Technical details

In 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.

Remediation

If 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.

The fix validates PHP version inputs, constrains manifest-derived versions, hardens script generation at the execution, and includes additional checks in related input-handling paths.

Database specific
{
    "nvd_published_at": null,
    "cwe_ids": [
        "CWE-78"
    ],
    "severity": "MODERATE",
    "github_reviewed": true,
    "github_reviewed_at": "2026-05-20T15:31:52Z"
}
References

Affected packages

GitHub Actions / shivammathur/setup-php

Affected ranges

Type
ECOSYSTEM
Events
Introduced
2.25.0
Fixed
2.37.1

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-pqwm-q9pv-ph8r/GHSA-pqwm-q9pv-ph8r.json"