{"id":"CVE-2026-59946","aliases":["BIT-composer-2026-59946","DEBIAN-CVE-2026-59946","EUVD-2026-42360","GHSA-gjfg-22fp-rrxx","RHSA-2026:34854","SUSE-SU-2026:23116-1","SUSE-SU-2026:23138-1","SUSE-SU-2026:3105-1","SUSE-SU-2026:4283-1","SUSE-SU-2026:4589-1","UBUNTU-CVE-2026-59946","openSUSE-SU-2026:11268-1","openSUSE-SU-2026:21520-1"],"status":"published","title":"Composer: Path traversal in package bin field lets dependencies chmod arbitrary host files","description":"Composer is a dependency Manager for the PHP language. Prior to 2.2.29 and 2.10.2, a Composer package bin entry containing .. path segments can resolve outside the package install directory and cause Composer's binary installation flow to chmod an existing host file to a world-readable and world-executable mode during composer install, update, or require. This issue is fixed in versions 2.2.29 and 2.10.2.","severity":{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00141,"percentile":0.03476,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-22","CWE-732"],"published":"2026-07-08T19:32:38Z","modified":"2026-10-28T02:30:26Z","fixes":[{"ecosystem":"Packagist","package":"composer/composer","fixed_in":["2.10.2","2.2.29"],"sources":["ghsa","osv"]},{"ecosystem":"Bitnami","package":"composer","fixed_in":["2.2.29","2.10.2"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"composer","fixed_in":["2.10.2-1"],"sources":["osv"]},{"ecosystem":"Red Hat:hummingbird:1","package":"composer","fixed_in":["0:2.10.2-1.hum1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"Packagist","package":"composer/composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.0"},{"fixed":"2.10.2"}]}]},{"source":"ghsa","ecosystem":"Packagist","package":"composer/composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.0.0"},{"fixed":"2.2.29"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"composer","ranges":[{"type":"SEMVER","events":[{"introduced":"1.0.0"},{"fixed":"2.2.29"},{"introduced":"2.3.0"},{"fixed":"2.10.2"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.10.0-1","2.10.0~rc1-1","2.10.0~rc1-2","2.10.0~rc1-3","2.10.0~rc2-1","2.10.1-1","2.10.1-2","2.10.2-1","2.10.3-1","2.5.5-1","2.5.5-1+deb12u1","2.5.5-1+deb12u2","2.5.5-1+deb12u3","2.5.5-1+deb12u4","2.5.5-1+deb12u5","2.5.6-1","2.5.7-1","2.5.8-1","2.6.2-1","2.6.3-1","2.6.4-1","2.6.5-1","2.6.6-1","2.7.1-1","2.7.1-2","2.7.2-1","2.7.4-1","2.7.6-1","2.7.6-2","2.7.6-3","2.7.7-1","2.7.7-2","2.7.8-1","2.7.9-1","2.8.0-1","2.8.1-1","2.8.10-1","2.8.11-1","2.8.11-2","2.8.12-1","2.8.2-1","2.8.3-1","2.8.4-1","2.8.4-2","2.8.4-3","2.8.5-1","2.8.6-1","2.8.8-1","2.8.9-1","2.9.0~rc1-1","2.9.1-1","2.9.2-1","2.9.3-1","2.9.4-1","2.9.5-1","2.9.7-1","2.9.8-1"]},{"source":"osv","ecosystem":"Debian:13","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.10.0-1","2.10.0~rc1-1","2.10.0~rc1-2","2.10.0~rc1-3","2.10.0~rc2-1","2.10.1-1","2.10.1-2","2.10.2-1","2.10.3-1","2.8.10-1","2.8.11-1","2.8.11-2","2.8.12-1","2.8.8-1","2.8.8-1+deb13u1","2.8.8-1+deb13u2","2.8.8-1+deb13u3","2.8.9-1","2.9.0~rc1-1","2.9.1-1","2.9.2-1","2.9.3-1","2.9.4-1","2.9.5-1","2.9.7-1","2.9.8-1"]},{"source":"osv","ecosystem":"Debian:14","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.10.2-1"}]}],"versions":["2.10.0-1","2.10.0~rc1-1","2.10.0~rc1-2","2.10.0~rc1-3","2.10.0~rc2-1","2.10.1-1","2.10.1-2","2.8.10-1","2.8.11-1","2.8.11-2","2.8.12-1","2.8.8-1","2.8.9-1","2.9.0~rc1-1","2.9.1-1","2.9.2-1","2.9.3-1","2.9.4-1","2.9.5-1","2.9.7-1","2.9.8-1"]},{"source":"osv","ecosystem":"Packagist","package":"composer/composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.0"},{"fixed":"2.10.2"}]}],"versions":["2.10.0","2.10.0-RC1","2.10.0-RC2","2.10.1","2.3.0","2.3.1","2.3.10","2.3.2","2.3.3","2.3.4","2.3.5","2.3.6","2.3.7","2.3.8","2.3.9","2.4.0","2.4.0-RC1","2.4.1","2.4.2","2.4.3","2.4.4","2.5.0","2.5.1","2.5.2","2.5.3","2.5.4","2.5.5","2.5.6","2.5.7","2.5.8","2.6.0","2.6.1","2.6.2","2.6.3","2.6.4","2.6.5","2.6.6","2.7.0","2.7.1","2.7.2","2.7.3","2.7.4","2.7.5","2.7.6","2.7.7","2.7.8","2.7.9","2.8.0","2.8.1","2.8.10","2.8.11","2.8.12","2.8.2","2.8.3","2.8.4","2.8.5","2.8.6","2.8.7","2.8.8","2.8.9","2.9.0","2.9.0-RC1","2.9.1","2.9.2","2.9.3","2.9.4","2.9.5","2.9.6","2.9.7","2.9.8"]},{"source":"osv","ecosystem":"Packagist","package":"composer/composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.0.0"},{"fixed":"2.2.29"}]}],"versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.1.0","1.1.0-RC","1.1.1","1.1.2","1.1.3","1.10.0","1.10.0-RC","1.10.1","1.10.10","1.10.11","1.10.12","1.10.13","1.10.14","1.10.15","1.10.16","1.10.17","1.10.18","1.10.19","1.10.2","1.10.20","1.10.21","1.10.22","1.10.23","1.10.24","1.10.25","1.10.26","1.10.27","1.10.28","1.10.3","1.10.4","1.10.5","1.10.6","1.10.7","1.10.8","1.10.9","1.2.0","1.2.0-RC","1.2.1","1.2.2","1.2.3","1.2.4","1.3.0","1.3.0-RC","1.3.1","1.3.2","1.3.3","1.4.0","1.4.1","1.4.2","1.4.3","1.5.0","1.5.1","1.5.2","1.5.3","1.5.4","1.5.5","1.5.6","1.6.0","1.6.0-RC","1.6.1","1.6.2","1.6.3","1.6.4","1.6.5","1.7.0","1.7.0-RC","1.7.1","1.7.2","1.7.3","1.8.0","1.8.1","1.8.2","1.8.3","1.8.4","1.8.5","1.8.6","1.9.0","1.9.1","1.9.2","1.9.3","2.0.0","2.0.0-RC1","2.0.0-RC2","2.0.0-alpha1","2.0.0-alpha2","2.0.0-alpha3","2.0.1","2.0.10","2.0.11","2.0.12","2.0.13","2.0.14","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8","2.0.9","2.1.0","2.1.0-RC1","2.1.1","2.1.10","2.1.11","2.1.12","2.1.14","2.1.2","2.1.3","2.1.4","2.1.5","2.1.6","2.1.7","2.1.8","2.1.9","2.2.0","2.2.0-RC1","2.2.1","2.2.10","2.2.11","2.2.12","2.2.13","2.2.14","2.2.15","2.2.16","2.2.17","2.2.18","2.2.19","2.2.2","2.2.20","2.2.21","2.2.22","2.2.23","2.2.24","2.2.25","2.2.26","2.2.27","2.2.28","2.2.3","2.2.4","2.2.5","2.2.6","2.2.7","2.2.8","2.2.9"]},{"source":"osv","ecosystem":"Red Hat:hummingbird:1","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:2.10.2-1.hum1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 16.0","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.8.9-160000.4.1"}]}],"bundled":7},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server for SAP applications 16.0","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.8.9-160000.4.1"}]}],"bundled":7},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 16.0","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.8.9-160000.4.1"}]}],"bundled":7},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server for SAP applications 16.0","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.8.9-160000.4.1"}]}],"bundled":7},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Module for Web and Scripting 15 SP7","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.4-150600.3.12.1"}]}],"bundled":9},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 15 SP6-LTSS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.4-150600.3.12.1"}]}],"bundled":9},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server for SAP Applications 15 SP6","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.4-150600.3.12.1"}]}],"bundled":9},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.21.1"}]}],"bundled":6},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.21.1"}]}],"bundled":6},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.21.1"}]}],"bundled":6},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.21.1"}]}],"bundled":6},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 15 SP4-LTSS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.21.1"}]}],"bundled":6},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 15 SP5-LTSS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.21.1"}]}],"bundled":6},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server for SAP Applications 15 SP4","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.21.1"}]}],"bundled":6},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server for SAP Applications 15 SP5","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.21.1"}]}],"bundled":6},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.24.1"}]}],"bundled":3},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.24.1"}]}],"bundled":3},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.24.1"}]}],"bundled":3},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.24.1"}]}],"bundled":3},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 15 SP4-LTSS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.24.1"}]}],"bundled":3},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 15 SP5-LTSS","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.24.1"}]}],"bundled":3},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server for SAP Applications 15 SP4","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.24.1"}]}],"bundled":3},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server for SAP Applications 15 SP5","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.30-150400.3.24.1"}]}],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.0.0~alpha10+20150602-1","1.0.0~alpha10+20150602-2","1.0.0~alpha11-1","1.0.0~alpha11-1ubuntu1","1.0.0~alpha11-2","1.0.0~alpha11-3","1.0.0~beta1-1ubuntu1","1.0.0~beta2-1","1.0.0~beta2-1ubuntu0.1~esm1","1.0.0~beta2-1ubuntu0.1~esm2"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.5.1-1","1.5.2-1","1.6.2-1","1.6.3-1","1.6.3-1ubuntu0.1~esm1","1.6.3-1ubuntu0.1~esm2"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.9.0-2","1.9.1-1","1.9.2-1","1.9.3-1","1.10.0-1","1.10.1-1","1.10.1-1ubuntu0.1~esm1","1.10.1-1ubuntu0.1~esm2"]},{"source":"osv","ecosystem":"Ubuntu:Pro:22.04:LTS","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.9-2ubuntu2","2.0.9-2ubuntu3","2.0.13-1ubuntu1","2.1.12-1ubuntu1","2.2.6-2ubuntu4","2.2.6-2ubuntu4+esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:24.04:LTS","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.5.8-1","2.6.5-1","2.6.6-1","2.7.1-2","2.7.1-2ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.8.6-1","2.8.8-1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.9.5-1","2.10.1-2","2.10.2-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"composer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.8.8-1","2.9.5-1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.10.2-1.1"}]}],"bundled":3},{"source":"osv","ecosystem":"openSUSE:Leap 16.0","package":"php-composer2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.8.9-160000.4.1"}]}],"bundled":7}],"products":[{"vendor":"composer","product":"composer"}],"references":[{"url":"https://github.com/composer/composer/security/advisories/GHSA-gjfg-22fp-rrxx","tags":["x_refsource_CONFIRM","web","advisory","article","report"]},{"url":"https://github.com/composer/composer/commit/502c6c4f699802d9cf464728b3e8a95674f919a0","tags":["x_refsource_MISC","web","fix","article"]},{"url":"https://github.com/composer/composer/commit/c50b1efd13ebd73f6dca19b31424c5a02bf93cc1","tags":["x_refsource_MISC","web","fix","article"]},{"url":"https://github.com/composer/composer/releases/tag/2.10.2","tags":["x_refsource_MISC","web","article"]},{"url":"https://github.com/composer/composer/releases/tag/2.2.29","tags":["x_refsource_MISC","web","article"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-59946","tags":["web","advisory"]},{"url":"https://github.com/advisories/GHSA-gjfg-22fp-rrxx"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59946.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-59946","tags":["advisory"]},{"url":"https://github.com/composer/composer","tags":["package"]},{"url":"https://access.redhat.com/errata/RHSA-2026:34854","tags":["advisory"]},{"url":"https://images.redhat.com/","tags":["article"]},{"url":"https://access.redhat.com/security/cve/CVE-2026-59946","tags":["report"]},{"url":"https://access.redhat.com/security/updates/classification/","tags":["article"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_34854.json","tags":["advisory"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2498194","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-59946","tags":["advisory","report"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-202623116-1/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1271122","tags":["report"]},{"url":"https://bugzilla.suse.com/1271129","tags":["report"]},{"url":"https://bugzilla.suse.com/1271151","tags":["report"]},{"url":"https://bugzilla.suse.com/1271504","tags":["report"]},{"url":"https://bugzilla.suse.com/1271729","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2025-67746","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-40176","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-40261","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-45793","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-59946","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-59947","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-59948","tags":["web"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-202623138-1/","tags":["advisory"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-20263105-1/","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2024-35241","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-35242","tags":["web"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-20264283-1/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1271123","tags":["report"]},{"url":"https://bugzilla.suse.com/1271130","tags":["report"]},{"url":"https://bugzilla.suse.com/1271152","tags":["report"]},{"url":"https://bugzilla.suse.com/1278257","tags":["report"]},{"url":"https://bugzilla.suse.com/1279898","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2026-59944","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-84361","tags":["web"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-20264589-1/","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-59946","tags":["report"]},{"url":"","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-59946","title":"Composer: Path traversal in package bin field lets dependencies chmod arbitrary host files","description":"Composer is a dependency Manager for the PHP language. Prior to 2.2.29 and 2.10.2, a Composer package bin entry containing .. path segments can resolve outside the package install directory and cause Composer's binary installation flow to chmod an existing host file to a world-readable and world-executable mode during composer install, update, or require. This issue is fixed in versions 2.2.29 and 2.10.2.","status":"published","published":"2026-07-08T19:32:38.089Z","modified":"2026-07-09T14:41:23.436Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-22","CWE-732"],"updated_at":"2026-11-02T14:19:58.560602Z"}],"euvd":[{"id":"EUVD-2026-42360","description":"Composer is a dependency Manager for the PHP language. Prior to 2.2.29 and 2.10.2, a Composer package bin entry containing .. path segments can resolve outside the package install directory and cause Composer's binary installation flow to chmod an existing host file to a world-readable and world-executable mode during composer install, update, or require. This issue is fixed in versions 2.2.29 and 2.10.2.","status":"published","published":"2026-07-08T19:32:38Z","modified":"2026-07-09T14:41:23Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T18:20:04.126011Z"}],"ghsa":[{"id":"GHSA-gjfg-22fp-rrxx","title":"Composer: Path traversal in package bin field lets dependencies chmod arbitrary host files","description":"## Summary\n\nA Composer package declares its executables in the `bin` field of its `composer.json`. When Composer installs a package, it processes each `bin` entry and changes the file mode of the corresponding file so it is executable.\n\nIf a `bin` entry contains `..` path segments, it can resolve to a path outside the package's own install directory. A malicious package can use this to make Composer run `chmod` against a file that already exists elsewhere on the machine. The resulting mode is world-readable and world-executable (0755 under the common umask of 022). This happens when the package is installed, e.g. during `composer install`, `composer update`, and `composer require`. Any dependency can trigger it, including a transitive dependency several levels deep.\n\nThe vulnerability *changes file permissions only, and does not read, modify, or execute the contents of the target file, and it is not remote code execution*. The impact is to confidentiality: a file with deliberately restrictive permissions, such as a private key at mode 0600, can be made readable by other users on the same host.\n\n## Am I affected?\n\nWe reviewed packagist.org data and found no evidence that any published package exploited this vulnerability. If you install packages only from packagist.org, you are not affected by any known exploitation.\n\nYou are potentially affected if *all* of the following are true:\n\n- Your Composer project depends, directly or transitively, on a package you do not fully trust.\n- A file you rely on for its restrictive permissions already exists at a path the Composer process can write to. Examples include SSH private keys, `.env` files, `~/.aws/credentials`, and `.netrc`.\n\nThe most likely way to be affected is to add or update a dependency that is malicious or has been compromised, then run an install on a machine that holds sensitive, permission-restricted files.\n\nTwo points to note:\n\n- `--no-scripts`, `--no-plugins`, and an `allow-plugins` allow-list do not prevent this. The permission change happens during normal binary installation, outside the plugin and script trust model.\n- Impact scales with privilege: As a regular user, only files owned by that user can be affected, which typically means your own secrets becoming readable by other local users on a shared machine. As root (for example, a CI container with no non-root user, or `sudo composer install`), any file on the system can be affected, including system credential stores.\n\n## Patched versions\n\nThe fix makes Composer reject any package whose binary entry contains a `..` path segment. During install/update the operation aborts before any file permission is changed, and the same check now also applies when a package is published to Packagist.org, so such packages are refused upstream.\n\nFixed in 2.2.29 (2.2 LTS line) and 2.10.2 (current 2.x line). Composer 1.x is end of life and will not be patched. 1.x users should upgrade to a patched 2.x release.\n\n## Workarounds\n\nUpgrading to a patched release is the only complete fix. There is no configuration option that disables the vulnerable behavior.","status":"published","published":"2026-07-20T21:57:40Z","modified":"2026-07-20T21:57:41Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N","level":"medium"}],"cwes":["CWE-22","CWE-732"],"updated_at":"2026-11-02T14:40:48.410776Z"}],"nvd":[{"id":"CVE-2026-59946","description":"Composer is a dependency Manager for the PHP language. Prior to 2.2.29 and 2.10.2, a Composer package bin entry containing .. path segments can resolve outside the package install directory and cause Composer's binary installation flow to chmod an existing host file to a world-readable and world-executable mode during composer install, update, or require. This issue is fixed in versions 2.2.29 and 2.10.2.","status":"published","published":"2026-07-08T20:16:59.707Z","modified":"2026-07-10T19:14:18.563Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-22","CWE-732"],"updated_at":"2026-11-02T14:12:28.4135Z"}],"osv":[{"id":"CVE-2026-59946","title":"Composer: Path traversal in package bin field lets dependencies chmod arbitrary host files","description":"Composer is a dependency Manager for the PHP language. Prior to 2.2.29 and 2.10.2, a Composer package bin entry containing .. path segments can resolve outside the package install directory and cause Composer's binary installation flow to chmod an existing host file to a world-readable and world-executable mode during composer install, update, or require. This issue is fixed in versions 2.2.29 and 2.10.2.","status":"published","published":"2026-07-08T19:32:38.089Z","modified":"2026-10-28T02:30:26.53367964Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N","level":"medium"}],"cwes":["CWE-22","CWE-732"],"updated_at":"2026-11-02T15:45:12.496548Z"},{"id":"DEBIAN-CVE-2026-59946","description":"Composer is a dependency Manager for the PHP language. Prior to 2.2.29 and 2.10.2, a Composer package bin entry containing .. path segments can resolve outside the package install directory and cause Composer's binary installation flow to chmod an existing host file to a world-readable and world-executable mode during composer install, update, or require. This issue is fixed in versions 2.2.29 and 2.10.2.","status":"published","published":"2026-07-08T20:16:59.707Z","modified":"2026-10-01T03:02:41.687525495Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T15:45:57.932517Z"},{"id":"GHSA-gjfg-22fp-rrxx","title":"Composer: Path traversal in package bin field lets dependencies chmod arbitrary host files","description":"## Summary\n\nA Composer package declares its executables in the `bin` field of its `composer.json`. When Composer installs a package, it processes each `bin` entry and changes the file mode of the corresponding file so it is executable.\n\nIf a `bin` entry contains `..` path segments, it can resolve to a path outside the package's own install directory. A malicious package can use this to make Composer run `chmod` against a file that already exists elsewhere on the machine. The resulting mode is world-readable and world-executable (0755 under the common umask of 022). This happens when the package is installed, e.g. during `composer install`, `composer update`, and `composer require`. Any dependency can trigger it, including a transitive dependency several levels deep.\n\nThe vulnerability *changes file permissions only, and does not read, modify, or execute the contents of the target file, and it is not remote code execution*. The impact is to confidentiality: a file with deliberately restrictive permissions, such as a private key at mode 0600, can be made readable by other users on the same host.\n\n## Am I affected?\n\nWe reviewed packagist.org data and found no evidence that any published package exploited this vulnerability. If you install packages only from packagist.org, you are not affected by any known exploitation.\n\nYou are potentially affected if *all* of the following are true:\n\n- Your Composer project depends, directly or transitively, on a package you do not fully trust.\n- A file you rely on for its restrictive permissions already exists at a path the Composer process can write to. Examples include SSH private keys, `.env` files, `~/.aws/credentials`, and `.netrc`.\n\nThe most likely way to be affected is to add or update a dependency that is malicious or has been compromised, then run an install on a machine that holds sensitive, permission-restricted files.\n\nTwo points to note:\n\n- `--no-scripts`, `--no-plugins`, and an `allow-plugins` allow-list do not prevent this. The permission change happens during normal binary installation, outside the plugin and script trust model.\n- Impact scales with privilege: As a regular user, only files owned by that user can be affected, which typically means your own secrets becoming readable by other local users on a shared machine. As root (for example, a CI container with no non-root user, or `sudo composer install`), any file on the system can be affected, including system credential stores.\n\n## Patched versions\n\nThe fix makes Composer reject any package whose binary entry contains a `..` path segment. During install/update the operation aborts before any file permission is changed, and the same check now also applies when a package is published to Packagist.org, so such packages are refused upstream.\n\nFixed in 2.2.29 (2.2 LTS line) and 2.10.2 (current 2.x line). Composer 1.x is end of life and will not be patched. 1.x users should upgrade to a patched 2.x release.\n\n## Workarounds\n\nUpgrading to a patched release is the only complete fix. There is no configuration option that disables the vulnerable behavior.","status":"published","published":"2026-07-20T21:57:40Z","modified":"2026-07-20T22:00:25.381259105Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N","level":"medium"}],"cwes":["CWE-22","CWE-732"],"updated_at":"2026-11-02T15:46:47.822182Z"},{"id":"RHSA-2026:34854","title":"Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update","status":"published","published":"2026-07-30T10:14:29Z","modified":"2026-10-06T10:08:51Z","cvss":[{"version":"3.1","score":5.6,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T15:53:19.963895Z"},{"id":"UBUNTU-CVE-2026-59946","description":"Composer is a dependency Manager for the PHP language. Prior to 2.2.29 and 2.10.2, a Composer package bin entry containing .. path segments can resolve outside the package install directory and cause Composer's binary installation flow to chmod an existing host file to a world-readable and world-executable mode during composer install, update, or require. This issue is fixed in versions 2.2.29 and 2.10.2.","status":"published","published":"2026-07-08T20:16:00Z","modified":"2026-10-17T12:56:00.353240454Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T16:56:41.911783Z"},{"id":"BIT-composer-2026-59946","title":"Composer: Path traversal in package bin field lets dependencies chmod arbitrary host files","description":"Composer is a dependency Manager for the PHP language. Prior to 2.2.29 and 2.10.2, a Composer package bin entry containing .. path segments can resolve outside the package install directory and cause Composer's binary installation flow to chmod an existing host file to a world-readable and world-executable mode during composer install, update, or require. This issue is fixed in versions 2.2.29 and 2.10.2.","status":"published","published":"2026-07-14T08:40:58.63Z","modified":"2026-07-27T09:00:07.259349312Z","updated_at":"2026-11-02T15:28:28.70813Z"},{"id":"openSUSE-SU-2026:11268-1","title":"php-composer2-2.10.2-1.1 on GA media","description":"These are all security issues fixed in the php-composer2-2.10.2-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-07-14T00:00:00Z","modified":"2026-07-15T10:00:12.751965948Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"openSUSE-SU-2026:21520-1","title":"Security update for php-composer2","description":"This update for php-composer2 fixes the following issues:\n\n- CVE-2026-45793: Github Actions issued `GITHUB_TOKEN` disclosure in GitHub Actions logs (bsc#1271504).\n- CVE-2026-59946: path traversal in package `bin` field lets dependencies `chmod` arbitrary host files (bsc#1271151).\n- CVE-2026-59947: URL-embedded HTTP-Basic username leaks to verbose logs  (bsc#1271129).\n- CVE-2026-59948: arbitrary file write outside `vendor`directory via malicious transitive package name (bsc#1271122).\n\nChanges for php-composer2:\n\n- fix byte-swapped signature on s390x can cause broken or unsupported signature (bsc#1271729).\n","status":"published","published":"2026-08-03T21:09:33Z","modified":"2026-08-04T18:30:06.533473107Z","updated_at":"2026-11-02T16:58:41.885092Z"},{"id":"SUSE-SU-2026:23116-1","title":"Security update for php-composer2","description":"This update for php-composer2 fixes the following issues:\n\n- CVE-2026-45793: Github Actions issued `GITHUB_TOKEN` disclosure in GitHub Actions logs (bsc#1271504).\n- CVE-2026-59946: path traversal in package `bin` field lets dependencies `chmod` arbitrary host files (bsc#1271151).\n- CVE-2026-59947: URL-embedded HTTP-Basic username leaks to verbose logs  (bsc#1271129).\n- CVE-2026-59948: arbitrary file write outside `vendor`directory via malicious transitive package name (bsc#1271122).\n\nChanges for php-composer2:\n\n- fix byte-swapped signature on s390x can cause broken or unsupported signature (bsc#1271729).\n","status":"published","published":"2026-08-03T21:09:28Z","modified":"2026-08-14T18:23:44.579269455Z","updated_at":"2026-11-02T15:54:03.503431Z"},{"id":"SUSE-SU-2026:23138-1","title":"Security update for php-composer2","description":"This update for php-composer2 fixes the following issues:\n\n- CVE-2026-45793: Github Actions issued `GITHUB_TOKEN` disclosure in GitHub Actions logs (bsc#1271504).\n- CVE-2026-59946: path traversal in package `bin` field lets dependencies `chmod` arbitrary host files (bsc#1271151).\n- CVE-2026-59947: URL-embedded HTTP-Basic username leaks to verbose logs  (bsc#1271129).\n- CVE-2026-59948: arbitrary file write outside `vendor`directory via malicious transitive package name (bsc#1271122).\n\nChanges for php-composer2:\n\n- fix byte-swapped signature on s390x can cause broken or unsupported signature (bsc#1271729).\n","status":"published","published":"2026-08-03T21:09:28Z","modified":"2026-08-14T18:23:45.792589446Z","updated_at":"2026-11-02T15:54:03.503431Z"},{"id":"SUSE-SU-2026:3105-1","title":"Security update for php-composer2","description":"This update for php-composer2 fixes the following issues:\n\n- CVE-2026-45793: Github Actions issued `GITHUB_TOKEN` disclosure in GitHub Actions logs (bsc#1271504).\n- CVE-2026-59946: path traversal in package `bin` field lets dependencies `chmod` arbitrary host files (bsc#1271151).\n- CVE-2026-59947: URL-embedded HTTP-Basic username leaks to verbose logs  (bsc#1271129).\n- CVE-2026-59948: arbitrary file write outside `vendor`directory via malicious transitive package name (bsc#1271122).\n","status":"published","published":"2026-07-17T13:32:56Z","modified":"2026-07-18T08:45:10.042125924Z","updated_at":"2026-11-02T15:54:04.987808Z"},{"id":"SUSE-SU-2026:4283-1","title":"Security update for php-composer2","description":"This update for php-composer2 fixes the following issues:\n\n- CVE-2026-45793: GitHub OAuth tokens failing regex validation can cause credential disclosure (bsc#1271504).\n- CVE-2026-59944: path traversal and link following issue can make files world readable and executable (bsc#1279898).\n- CVE-2026-59946: package bin entries with path segments can cause unintended host file permission modifications\n  (bsc#1271152).\n- CVE-2026-59947: unsanitized URL credential handling in debug output within Composer can allow sensitive token\n  disclosure (bsc#1271130).\n- CVE-2026-59948: missing package name validation during dependency resolution in Composer can allow path traversal\n  (bsc#1271123).\n- CVE-2026-84361: arbitrary code execution via malicious Perforce source URL (bsc#1278257).\n\nChanges for php-composer2:\n\n- version update to 2.2.30:\n\n * Fixed command injection via malicious Perforce url (GHSA-rvx4-ffvw-m9q3)\n * Sanitize URL-embedded usernames/token in a few more places (#13045)\n * Fixed matching of gitlab URLs to avoid possible credential leak to the wrong domain (#13042)\n  \n- fix a regression on s390x due last change (bsc#1271729).\n\n- version update to 2.2.29:\n\n * Validate package names (GHSA-499r-g7pc-vmp9)\n * Validate package bin paths against path traversal (GHSA-gjfg-22fp-rrxx)\n * Sanitize URL-embedded usernames/token in verbose output (GHSA-g6xq-892h-64w3)\n * Only follow HTTP redirects from HTTP responses (#12948)\n * Prevent phar metadata unserialization on unsafe PHP versions (#12946)\n * Sanitize JSON parse errors in http responses to avoid leaking response body data (#12959)\n * Fixed GitHub token validation to be even more relaxed (#12856)\n  \n- version update to 2.2.28.\n","status":"published","published":"2026-09-22T08:35:35Z","modified":"2026-09-23T09:15:06.105248697Z","updated_at":"2026-11-02T15:54:05.838224Z"},{"id":"SUSE-SU-2026:4589-1","title":"Security update for php-composer2","description":"This update for php-composer2 fixes the following issues:\n\n- CVE-2026-59946: package bin entries with path segments can cause unintended host file permission modifications\n  (bsc#1271152).\n- CVE-2026-59947: unsanitized URL credential handling in debug output within Composer can allow sensitive token\n  disclosure (bsc#1271130).\n- CVE-2026-59948: missing package name validation during dependency resolution in Composer can allow path traversal\n  (bsc#1271123).\n","status":"published","published":"2026-10-08T12:15:37Z","modified":"2026-10-09T18:15:03.734565504Z","updated_at":"2026-11-02T15:54:05.838224Z"}]}}
