CVE-2026-5366 Git Argument Injection in prefecthq/prefect
CriticalCVSS 9.9
EPSS 1.0%
- Published
- Updated
- Exploit status
- No public exploit known
Description
Prefect version 3.6.23 is vulnerable to remote code execution due to improper handling of user-controlled input in the GitRepository storage class. The commit_sha parameter, which is passed to git commands, lacks validation and does not include a -- separator to distinguish user input from git flags. This allows attackers to inject arbitrary git flags, such as --upload-pack, enabling execution of external programs. Additionally, the directories parameter can be exploited to inject git flags during sparse-checkout operations. These vulnerabilities allow any user with deployment creation permissions to execute arbitrary commands on worker machines, compromising shared work pools in multi-tenant environments.
Affected products
| Product | Affected versions | Fixed in |
|---|---|---|
| pypi prefect(PyPI) | >= 3.1.11, < 3.6.25 | 3.6.25 |
| pypi prefect(PyPI) | = 3.1.11 | No fix listed |
| pypi prefect(PyPI) | = 3.1.12 | No fix listed |
| pypi prefect(PyPI) | = 3.1.12.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.1.12.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.1.12.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.1.12.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.1.12.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.1.13 | No fix listed |
| pypi prefect(PyPI) | = 3.1.13.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.1.13.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.1.13.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.1.13.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.1.13.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.1.13.dev6 | No fix listed |
| pypi prefect(PyPI) | = 3.1.14 | No fix listed |
| pypi prefect(PyPI) | = 3.1.14.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.1.14.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.1.14.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.1.14.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.1.15 | No fix listed |
| pypi prefect(PyPI) | = 3.1.15.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.1.15.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.1.15.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.1.15.dev4 | No fix listed |
Show 175 more
| Product | Affected versions | Fixed in |
|---|---|---|
| pypi prefect(PyPI) | = 3.1.15.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.1.15.dev6 | No fix listed |
| pypi prefect(PyPI) | = 3.1.16.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.1.16.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.1.16.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.1.16.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.1.16.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.1.16.dev6 | No fix listed |
| pypi prefect(PyPI) | = 3.1.16.dev7 | No fix listed |
| pypi prefect(PyPI) | = 3.2.0 | No fix listed |
| pypi prefect(PyPI) | = 3.2.1 | No fix listed |
| pypi prefect(PyPI) | = 3.2.10 | No fix listed |
| pypi prefect(PyPI) | = 3.2.10.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.2.10.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.2.10.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.2.10.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.2.11 | No fix listed |
| pypi prefect(PyPI) | = 3.2.12 | No fix listed |
| pypi prefect(PyPI) | = 3.2.12.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.2.12.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.2.12.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.2.12.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.2.13 | No fix listed |
| pypi prefect(PyPI) | = 3.2.13.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.2.13.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.2.13.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.2.14 | No fix listed |
| pypi prefect(PyPI) | = 3.2.14.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.2.14.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.2.14.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.2.15 | No fix listed |
| pypi prefect(PyPI) | = 3.2.15.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.2.15.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.2.15.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.2.15.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.2.15.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.2.15.dev6 | No fix listed |
| pypi prefect(PyPI) | = 3.2.15.dev7 | No fix listed |
| pypi prefect(PyPI) | = 3.2.15.dev8 | No fix listed |
| pypi prefect(PyPI) | = 3.2.15.dev9 | No fix listed |
| pypi prefect(PyPI) | = 3.2.16.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.2.2 | No fix listed |
| pypi prefect(PyPI) | = 3.2.2.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.2.2.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.2.3 | No fix listed |
| pypi prefect(PyPI) | = 3.2.4 | No fix listed |
| pypi prefect(PyPI) | = 3.2.5 | No fix listed |
| pypi prefect(PyPI) | = 3.2.6 | No fix listed |
| pypi prefect(PyPI) | = 3.2.7 | No fix listed |
| pypi prefect(PyPI) | = 3.2.7.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.2.8 | No fix listed |
| pypi prefect(PyPI) | = 3.2.8.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.2.8.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.2.8.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.2.8.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.2.9 | No fix listed |
| pypi prefect(PyPI) | = 3.3.0 | No fix listed |
| pypi prefect(PyPI) | = 3.3.1 | No fix listed |
| pypi prefect(PyPI) | = 3.3.2 | No fix listed |
| pypi prefect(PyPI) | = 3.3.2.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.3.2.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.3.3 | No fix listed |
| pypi prefect(PyPI) | = 3.3.3.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.3.4 | No fix listed |
| pypi prefect(PyPI) | = 3.3.4.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.3.4.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.3.4.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.3.5 | No fix listed |
| pypi prefect(PyPI) | = 3.3.5.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.3.5.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.3.5.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.3.5.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.3.6 | No fix listed |
| pypi prefect(PyPI) | = 3.3.6.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.3.6.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.3.6.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.3.6.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.3.7 | No fix listed |
| pypi prefect(PyPI) | = 3.3.7.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.3.8.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.3.8.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.3.8.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.3.8.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.0 | No fix listed |
| pypi prefect(PyPI) | = 3.4.1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.1.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.1.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.1.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.1.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.1.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.4.10 | No fix listed |
| pypi prefect(PyPI) | = 3.4.10.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.11 | No fix listed |
| pypi prefect(PyPI) | = 3.4.11.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.11.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.11.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.11.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.11.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.4.12 | No fix listed |
| pypi prefect(PyPI) | = 3.4.12.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.12.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.12.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.12.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.13 | No fix listed |
| pypi prefect(PyPI) | = 3.4.13.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.13.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.13.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.14 | No fix listed |
| pypi prefect(PyPI) | = 3.4.14.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.14.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.14.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.14.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.15 | No fix listed |
| pypi prefect(PyPI) | = 3.4.15.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.15.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.15.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.15.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.16 | No fix listed |
| pypi prefect(PyPI) | = 3.4.16.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.16.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.16.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.16.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.16.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.4.16.dev6 | No fix listed |
| pypi prefect(PyPI) | = 3.4.17 | No fix listed |
| pypi prefect(PyPI) | = 3.4.18 | No fix listed |
| pypi prefect(PyPI) | = 3.4.18.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.18.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.18.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.18.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.18.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.4.19 | No fix listed |
| pypi prefect(PyPI) | = 3.4.19.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.19.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.19.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.19.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.19.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.4.2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.2.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.2.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.2.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.2.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.2.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.4.20 | No fix listed |
| pypi prefect(PyPI) | = 3.4.20.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.20.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.21 | No fix listed |
| pypi prefect(PyPI) | = 3.4.21.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.21.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.21.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.21.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.21.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.4.22 | No fix listed |
| pypi prefect(PyPI) | = 3.4.23 | No fix listed |
| pypi prefect(PyPI) | = 3.4.23.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.23.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.23.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.24 | No fix listed |
| pypi prefect(PyPI) | = 3.4.24.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.24.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.24.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.24.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.24.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.4.25 | No fix listed |
| pypi prefect(PyPI) | = 3.4.25.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.25.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.25.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.25.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.25.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.4.26.dev1 | No fix listed |
| pypi prefect(PyPI) | = 3.4.26.dev2 | No fix listed |
| pypi prefect(PyPI) | = 3.4.26.dev3 | No fix listed |
| pypi prefect(PyPI) | = 3.4.26.dev4 | No fix listed |
| pypi prefect(PyPI) | = 3.4.26.dev5 | No fix listed |
| pypi prefect(PyPI) | = 3.4.26.dev6 | No fix listed |
References
- nvd.nist.gov third-party-advisory vendor-advisory
- github.com patch
- github.com patch
- github.com product
- huntr.com exploit third-party-advisory
- github.com