2.11.2 - released 2026-11-11

View the release on GitHub

Changelog

  • Security: Fixed arbitrary command execution via the prevent_url_access_callable transport option being loaded from composer.lock / vendor/composer/installed.json (GHSA-jhfp-4ppm-crmm)
  • Security: Fixed malicious zip archives being able to write files outside of the package directory via symlinked entries when extraction falls back from unzip to ZipArchive (GHSA-w6hj-6587-3jh5)
  • Security: Fixed inline repository HTTP credentials being sent to dist mirrors on other hosts supplied by a crafted composer.lock / vendor/composer/installed.json (GHSA-x82q-x274-r6pq)
  • Security: Updated the bundled symfony/filesystem to a version fixing a disclosed vulnerability present in the one shipped with 2.11.1 (GHSA-6prc-h956-hxjq)
  • Security: Fixed Authorization and Cookie headers set in request options, e.g. via a repository's http.header option, being resent when following a redirect to another origin (#13253)
  • Security: Fixed non-auth config settings being read from a project's auth.json and the COMPOSER_AUTH env var, and home being read from a project's composer.json, these are now ignored with a warning (#13208)
  • Security: Fixed IPs blocked by the prevent_ip_access_callable transport option only being rejected after the request had been sent, and rejected in-flight downloads not being stopped (#13255)
  • Added exclude-branches option to VCS repositories to skip branches matching the given patterns, e.g. bot-managed ones (#13235)
  • Added support for setting allow-git-fallback to false in GitLab, Bitbucket and Forgejo repositories to fail on API errors instead of falling back to a git clone (#13234)
  • Added a 30 seconds stall timeout so downloads from a server which accepts the connection but never responds are aborted and retried instead of hanging for 300 seconds, configurable or disabled via the COMPOSER_HTTP_STALL_TIMEOUT env var (#13243)
  • Improved performance of security advisory lookups by querying the API only once per package name (#13202)
  • Improved performance of VCS repository updates by skipping the default branch lookup when the git mirror is up to date (#13224)
  • Improved performance and memory usage of dependency resolution, package loading and sorting, and repository traversal (#13187, #13188, #13194, #13197, #13200, #13211, #13217, #13218)
  • Improved performance with micro-optimizations in path and URL handling, lock file and installed.php generation, archiving and TLS/HTTP helpers (#13189, #13190, #13191, #13192, #13193, #13195, #13196, #13198, #13214, #13215, #13216, #13220, #13222)
  • Fixed config failing with a schema error or corrupting composer.json by turning nested {} into [] when adding or removing dotted sub-keys (#13210)
  • Fixed config --unset, remove and require leaving in place or duplicating composer.json keys which are set to null (#13225)
  • Fixed dist URLs of codeberg.org packages and bitbucket zip archives not being updated when requiring a specific commit with dev-branch#hash (#13242)
  • Fixed an undefined array key warning hiding the real error when curl 8.23+ fails to parse a URL (#13252)