Composer 2.11.0 は、インストールと再インストールのとき vendor/composer/installed.json のパッケージ名が vendor ディレクトリの外へ出る問題を塞ぐ(GHSA-c968-33g3-wh7p)。リポジトリ設定に直書きした HTTP ヘッダ(API トークンを含む)は、composer.lock と installed.json へ書かない(GHSA-fm2w-xgf2-f9fh)。

同じ版の修正:

  • システムの CA がルートを信頼していても、侵害された eMudhra の中間証明書を出す TLS は拒否する
  • パッケージが制御する bin パスと shebang はエスケープせず bin プロキシへ埋め込まない。シェルのメタ文字を含む bin パスは拒否する
  • secure-http が、厳密には不正な URL と git の :: 構文も拒否する
  • リポジトリのホスト名で始まるだけの別ホストの dist URL へ、カスタム HTTP ヘッダを送らない

2.10 で非推奨になった、dist の取得失敗時に source チェックアウトへ落ちる挙動は消える。一時的な source-fallback も削除。source から入れるときは preferred-install か --prefer-source。

config.policy を定義しているプロジェクトは、2.11.0 へ上げたあと lock が古いという警告が出る。lock を更新するまで残る。

cooldown は config.policy.cooldown.period。既定では無効。composer update と require が対象で、composer install は lock どおりに入る。期間中のセキュリティ修正も止まる。すぐ入れるときは composer update --no-cooldown vendor/package。アドバイザリとマルウェアのブロックは残る。

更新は composer self-update。

#参考文献