New PHP Composer Vulnerability Let Attackers Execute Arbitrary Commands
2026/04/15 CyberSecurityNews — PHP Composer が公開したのは、2件のコマンド・インジェクションの脆弱性 CVE-2026-40176/CVE-2026-40261 に対処するための緊急セキュリティ・アップデートである。PHP Composer は世界中の開発者に利用される依存関係管理ツールであるため、コード実行に関わる脆弱性は極めて深刻な存在となる。Perforce Version Control System (VCS) ドライバの脆弱性を悪用する攻撃者は、被害者のマシン上で任意のコマンド実行を可能にする。

Nils Adermann による公式セキュリティ・アドバイザリによると、この脆弱性はシェル・コマンド構築時の値エスケープの不備に起因する。現時点において、この件に関する実環境での悪用は確認されていない。
ユーザーにとって必要なことは、Composer バージョン 2.9.6 または長期サポート版 2.2.27 へと速やかにアップデートすることだ。
PHP Composer 脆弱性
これら 2 件の問題は、信頼できないプロジェクトや悪意のパッケージ・メタデータを扱う開発者に対して深刻なリスクをもたらす。
- CVE-2026-40176:Perforce コマンド生成に使用される内部メソッドに影響を及ぼす脆弱性であり、セキュリティ研究者 saku0512 により発見された。悪意の “composer.json” ファイル内のポート/ユーザー/クライアントなどの接続パラメータを操作する攻撃者は、任意のコマンド注入を可能にする。信頼できないプロジェクト・ディレクトリで、開発者が Composer コマンドを手動で実行した場合にのみ、この攻撃は成立する。通常の依存関係インストールでは、自動的に発動しない。
- CVE-2026-40261:ソース参照パラメータをシステムシェル・コマンドに追加する際の、不適切なエスケープ処理に起因する脆弱性であり、研究者 Koda Reef により報告された。この脆弱性を悪用する汚染されたパッケージ・メタデータの配布を、侵害された Composer リポジトリ、および、悪意の Composer リポジトリが容易にする。さらに重要なのは、ターゲット環境に Perforce ソフトウェアが存在しなくても、注入されたコマンドを Composer が実行しようとする点である。そのため、ソースから悪意の依存関係をインストールするだけで悪用可能となる。
Composer のセキュリティ・チームは、PHP 開発者エコシステムを保護するために、Packagist.org および Private Packagist 環境に対して大規模スキャンを実施したが、これら脆弱性を悪用する既存パッケージは確認されなかった。
予防措置として、2026年04月10日 以降のプラットフォームにおいては、Perforce ソース・メタデータの公開は完全に無効化されている。
対策
最も効果的な対策は、即時のパッチ適用である。ターミナルで “composer.phar self-update” を実行することで、安全なバージョンへの更新が可能である。速やかなアップデートが困難な場合には、以下の暫定対策を実施すべきである。
- –prefer-dist フラグの使用およびコンフィグ変更により、ソースからの依存関係インストールを回避する。
- 信頼済み/検証済みの Composer パッケージ・リポジトリのみを使用する。
- 信頼できないプロジェクトの “composer.json” を実行前に精査し、Perforce 関連フィールドが正当な値であることを確認する。
自己ホスト型の Private Packagist 環境を利用する開発者は、自環境内の悪意のメタデータ検出機能を取り込んだ、アップデートの提供に備える必要がある。
訳者後書:今回の緊急アップデートにおける主な原因は、PHP の依存関係管理ツールである Composer が、外部のプログラム (Perforce) とインタラクションのための命令を作る際も、文字の処理 (エスケープ) が不十分だったことにあります。具体的には脆弱性 CVE-2026-40176/CVE-2026-40261 により、設定ファイルである “composer.json” やパッケージの管理データに悪意の記号を混ぜることで、開発者のコンピュータ上でプログラムを実行させることが可能になっていました。特に、Perforce というソフトウェアをインストールしていなくても、Composer 経由で攻撃が成立してしまう点が極めて危険です。ご利用のチームは、ご注意ください。よろしければ、PHP Composer での検索結果を、ご参照ください。
You must be logged in to post a comment.