{"id":"CVE-2026-114134","aliases":["DEBIAN-CVE-2026-114134","EUVD-2026-117785","GHSA-cg8m-r9f2-5wm2","ROOT-APP-PYPI-CVE-2026-114134"],"status":"published","title":"Black: GitHub Action installs unvalidated required-version from pyproject.toml","description":"Black is the uncompromising Python code formatter. Prior to 26.10.1, the Black GitHub Action with use_pyproject: true accepts tool.black.required-version from pyproject.toml without validating that it is a released Black version specifier. An attacker who can submit a pull request can change that field to a direct reference to attacker-controlled code, causing the workflow to install and execute the code in the victim repository's GitHub Actions context. This issue is fixed in version 26.10.1.","severity":{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00404,"percentile":0.35133,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-829"],"published":"2026-10-22T16:18:57Z","modified":"2026-11-08T19:00:09Z","fixes":[{"ecosystem":"PyPI","package":"black","fixed_in":["26.10.1"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:14","package":"black","fixed_in":["26.10.1-1"],"sources":["osv"]},{"ecosystem":"Root:PyPI","package":"black","fixed_in":["26.10.0+aikido.1","26.3.1+aikido.1","26.5.1+aikido.1","25.12.0+aikido.2"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"black","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"26.10.1"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"black","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["23.1.0-1","23.10.0-1","23.10.1-1","23.11.0-1","23.3.0-1","23.3.0-1~exp1","23.7.0-1","23.9.1-1","24.1.1-1","24.10.0-1","24.10.0-2","24.10.0-3","24.2.0-1","24.4.0-1","24.4.0-2","24.4.2-1","24.4.2-2","24.4.2-2~0exp0","24.8.0-1","25.1.0-0exp","25.1.0-1","25.1.0-2","25.1.0-3","25.11.0-1","25.12.0-1","25.12.0-2","25.9.0-1","26.1.0-1","26.10.0-1","26.10.0-2","26.10.1-1","26.3.1-1","26.5.1-1","26.5.1-2"]},{"source":"osv","ecosystem":"Debian:13","package":"black","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["25.1.0-3","25.1.0-3+deb13u1","25.11.0-1","25.12.0-1","25.12.0-2","25.9.0-1","26.1.0-1","26.10.0-1","26.10.0-2","26.10.1-1","26.3.1-1","26.5.1-1","26.5.1-2"]},{"source":"osv","ecosystem":"Debian:14","package":"black","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"26.10.1-1"}]}],"versions":["25.1.0-3","25.11.0-1","25.12.0-1","25.12.0-2","25.9.0-1","26.1.0-1","26.10.0-1","26.10.0-2","26.3.1-1","26.5.1-1","26.5.1-2"]},{"source":"osv","ecosystem":"PyPI","package":"black","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"26.10.1"}]}],"versions":["18.3a0","18.3a1","18.3a2","18.3a3","18.3a4","18.4a0","18.4a1","18.4a2","18.4a3","18.4a4","18.5b0","18.5b1","18.6b0","18.6b1","18.6b2","18.6b3","18.6b4","18.9b0","19.10b0","19.3b0","20.8b0","20.8b1","21.10b0","21.11b0","21.11b1","21.12b0","21.4b0","21.4b1","21.4b2","21.5b0","21.5b1","21.5b2","21.6b0","21.7b0","21.8b0","21.9b0","22.1.0","22.10.0","22.12.0","22.3.0","22.6.0","22.8.0","23.1.0","23.10.0","23.10.1","23.11.0","23.12.0","23.12.1","23.1a1","23.3.0","23.7.0","23.9.0","23.9.1","24.1.0","24.1.1","24.10.0","24.1a1","24.2.0","24.3.0","24.4.0","24.4.1","24.4.2","24.8.0","25.1.0","25.11.0","25.12.0","25.9.0","26.1.0","26.10.0","26.1a1","26.3.0","26.3.1","26.5.0","26.5.1"]},{"source":"osv","ecosystem":"Root:PyPI","package":"black","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"26.10.0+aikido.1"},{"fixed":"26.3.1+aikido.1"},{"fixed":"26.5.1+aikido.1"},{"fixed":"25.12.0+aikido.2"}]}]}],"products":[{"vendor":"psf","product":"black"}],"references":[{"url":"https://github.com/psf/black/security/advisories/GHSA-cg8m-r9f2-5wm2","tags":["x_refsource_CONFIRM","advisory","web"]},{"url":"https://github.com/psf/black/pull/5510","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/psf/black/commit/ac1f71563aeccf73cf13ece00f231d9d6c66a514","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/psf/black/releases/tag/26.10.1","tags":["web"]},{"url":"https://github.com/advisories/GHSA-cg8m-r9f2-5wm2"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/114xxx/CVE-2026-114134.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-114134","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-114134","tags":["advisory"]},{"url":"https://github.com/psf/black","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-114134","title":"Black: GitHub Action installs unvalidated required-version from pyproject.toml","description":"Black is the uncompromising Python code formatter. Prior to 26.10.1, the Black GitHub Action with use_pyproject: true accepts tool.black.required-version from pyproject.toml without validating that it is a released Black version specifier. An attacker who can submit a pull request can change that field to a direct reference to attacker-controlled code, causing the workflow to install and execute the code in the victim repository's GitHub Actions context. This issue is fixed in version 26.10.1.","status":"published","published":"2026-11-05T20:22:14.467Z","modified":"2026-11-09T17:42:32.837Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high","assessor":"cna"}],"cwes":["CWE-829"],"updated_at":"2026-11-09T19:34:28.960398Z"}],"euvd":[{"id":"EUVD-2026-117785","description":"Black is the uncompromising Python code formatter. Prior to 26.10.1, the Black GitHub Action with use_pyproject: true accepts tool.black.required-version from pyproject.toml without validating that it is a released Black version specifier. An attacker who can submit a pull request can change that field to a direct reference to attacker-controlled code, causing the workflow to install and execute the code in the victim repository's GitHub Actions context. This issue is fixed in version 26.10.1.","status":"published","published":"2026-11-05T20:22:14Z","modified":"2026-11-09T17:42:32Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"}],"updated_at":"2026-11-09T19:17:50.619241Z"}],"ghsa":[{"id":"GHSA-cg8m-r9f2-5wm2","title":"Black: GitHub Action installs unvalidated required-version from pyproject.toml","description":"### Summary\n\nThe GitHub Action bundled with Black can read the version from `tool.black.required-version` if `use_pyproject` is set to True. This version is not validated and therefore can be used to execute untrusted code in the context of a victim's repository.\n\n### Details\n\nThis is similar to the previous CVE-2026-31900. The value in `tool.black.required-version` is accepted as the version to be installed by the action without validation.\n\n### Proof of concept\n\nReproduction requires a victim to use Black's GitHub Action with `use_pyproject: true`. The attacker would then issue a PR to the victim's repository with `pyproject.toml` edited so that Black points to a malicious repository.\n\n### Impact\n\nThis is a remote code execution vulnerability impacting users using the GitHub Action bundled with psf/black and using the `use_pyproject: true` setting.","status":"published","published":"2026-10-22T16:18:57Z","modified":"2026-10-22T16:18:58Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-829"],"updated_at":"2026-11-02T14:41:34.690842Z"}],"nvd":[{"id":"CVE-2026-114134","description":"Black is the uncompromising Python code formatter. Prior to 26.10.1, the Black GitHub Action with use_pyproject: true accepts tool.black.required-version from pyproject.toml without validating that it is a released Black version specifier. An attacker who can submit a pull request can change that field to a direct reference to attacker-controlled code, causing the workflow to install and execute the code in the victim repository's GitHub Actions context. This issue is fixed in version 26.10.1.","status":"published","published":"2026-11-05T21:18:36.887Z","modified":"2026-11-09T18:17:20.997Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high","assessor":"secondary"}],"cwes":["CWE-829"],"updated_at":"2026-11-09T20:15:34.274131Z"}],"osv":[{"id":"CVE-2026-114134","title":"Black: GitHub Action installs unvalidated required-version from pyproject.toml","description":"Black is the uncompromising Python code formatter. Prior to 26.10.1, the Black GitHub Action with use_pyproject: true accepts tool.black.required-version from pyproject.toml without validating that it is a released Black version specifier. An attacker who can submit a pull request can change that field to a direct reference to attacker-controlled code, causing the workflow to install and execute the code in the victim repository's GitHub Actions context. This issue is fixed in version 26.10.1.","status":"published","published":"2026-11-05T20:22:14.467Z","modified":"2026-11-11T02:30:51.942615328Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-829"],"updated_at":"2026-11-07T03:08:00.941926Z"},{"id":"DEBIAN-CVE-2026-114134","description":"Black is the uncompromising Python code formatter. Prior to 26.10.1, the Black GitHub Action with use_pyproject: true accepts tool.black.required-version from pyproject.toml without validating that it is a released Black version specifier. An attacker who can submit a pull request can change that field to a direct reference to attacker-controlled code, causing the workflow to install and execute the code in the victim repository's GitHub Actions context. This issue is fixed in version 26.10.1.","status":"published","published":"2026-11-05T21:18:36.887Z","modified":"2026-11-10T09:47:34.924820649Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high"}],"updated_at":"2026-11-08T19:09:06.023033Z"},{"id":"GHSA-cg8m-r9f2-5wm2","title":"Black: GitHub Action installs unvalidated required-version from pyproject.toml","description":"### Summary\n\nThe GitHub Action bundled with Black can read the version from `tool.black.required-version` if `use_pyproject` is set to True. This version is not validated and therefore can be used to execute untrusted code in the context of a victim's repository.\n\n### Details\n\nThis is similar to the previous CVE-2026-31900. The value in `tool.black.required-version` is accepted as the version to be installed by the action without validation.\n\n### Proof of concept\n\nReproduction requires a victim to use Black's GitHub Action with `use_pyproject: true`. The attacker would then issue a PR to the victim's repository with `pyproject.toml` edited so that Black points to a malicious repository.\n\n### Impact\n\nThis is a remote code execution vulnerability impacting users using the GitHub Action bundled with psf/black and using the `use_pyproject: true` setting.","status":"published","published":"2026-10-22T16:18:57Z","modified":"2026-10-22T16:30:30.132713769Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-829"],"updated_at":"2026-11-02T15:46:44.927642Z"},{"id":"ROOT-APP-PYPI-CVE-2026-114134","title":"CVE-2026-114134 in black - Patched by Root","description":"Root has patched CVE-2026-114134 in the black package for Root:PyPI. Multiple fixed versions available.","status":"published","published":"2026-10-28T09:56:40Z","modified":"2026-10-28T10:15:02.806331041Z","updated_at":"2026-11-02T15:53:27.940619Z"}]}}
