-
【2026年4月】PHP初心者は要確認!Composerの脆弱性ニュースと、すぐできる安全対策
-
-
-
mmm
2026.04.16(木曜日)
-
こんにちは!普段はフロントエンドを中心に開発している制作エンジニアです。
今回は2026年4月14日に公開されたPHPのパッケージ管理ツール「Composer」の脆弱性について取り上げます。
- CVE-2026-40261 (危険度を示すスコア: 8.8 / 10段階中)
- CVE-2026-40176 (危険度を示すスコア: 7.8 / 10段階中)
ニュースなどで「危険度が高い!」と聞くとヒヤッとしますよね。 ただ、公式の発表や状況をひも解いていくと、
「今すぐ全員が被害に遭うわけではないが、仕組みを正しく知って、早めにアップデートをしておくべき」
という状況が見えてきます。
PHP初心者の方に向けて、今回何が起きたのか、そして手元のパソコンでどう対応すればいいのかを分かりやすく解説します!
1. そもそもどんなバグが発見されたの?
今回見つかったのは、「悪意のあるプログラムを読み込むと、自分のパソコンやサーバーで勝手に危険な命令(コマンド)が実行されてしまう」というバグです。これを専門用語で「コマンドインジェクション」と呼びます。
Composerの内部にある「Perforce(パーフォース)」というマイナーなツールの処理に不具合がありました。一番怖いのは、あなたのパソコンにPerforceが入っていなくても、Composerを使っているだけでバグが発動してしまうという点です。
ただし、このバグが発動する条件は限られています。大きく分けて以下の2つのケースです。
ケースA:危険なパッケージをダウンロードした時(CVE-2026-40261)
誰かが悪意を持って作ったパッケージ(ライブラリ)をインストールした時に発動します。
ただし、普通にインストールする分には大丈夫です。以下のような「特殊な条件(ソースコードを直接ダウンロードする条件)」の時にだけリスクがあります。
- –prefer-source というオプションを付けてコマンドを実行した
- dev- が付いた開発中のバージョンをインストールした(※自動的に上記のオプションが付いた状態になるため)
ケースB:ネットで拾った「怪しいプロジェクト」を動かした時(CVE-2026-40176)
こちらは、悪意のある人が作ったcomposer.json(パッケージの設計図)を読み込んだ時に発動します。
ポイントは、「プロジェクトの一番大元(ルート)にあるcomposer.jsonを実行した時だけ」発動するという点です。 つまり、「ネット上で出所がよく分からない怪しいPHPプロジェクトをダウンロードしてきて、自分のパソコンで『composer install』を叩いた時」などに被害に遭う可能性があります。
ポイントは、そのcomposer.json内に 「Perforce VCSリポジトリ」として設定された記述が含まれている必要がある点です。つまり、ごく一般的なcomposer.jsonであればリスクはありません。あくまで「Perforceの設定が仕込まれた悪意あるプロジェクト」が対象です。
2. 実は、公式がすでに対応済み!(知らぬ間に被害に遭う確率は低い)
「じゃあ、自分がいつも使っているパッケージに危険なコードが混ざっていたらどうしよう……」と不安になるかもしれません。
でも、安心してください。 実は、脆弱性の詳細が世間に発表される数日前の4月10日時点で、Composerの公式ダウンロード元である Packagist(パッケージスト)側が、危険な処理ができないようにシステムをブロックしてくれています。
そのため、普通に公式からパッケージをダウンロードしている分には、知らぬ間に被害に遭う可能性は極めて低くなっています。
ただし、この保護が有効なのは Packagist.org(公式)経由でパッケージを取得している場合のみです。会社や個人で Satis・Private Packagist Self-Hosted などの独自リポジトリを運用している場合は、Packagist側のブロックは適用されません。その場合は特に、Composer本体の即時アップデートが重要です。
なお、Composerチームの調査によると、今回の脆弱性が公開前に実際に悪用されたケースは確認されていません。
3. 初心者が自分のパソコンでやるべき3つの対応策
公式が対応してくれたとはいえ、私たちのパソコンに入っているComposer本体にバグが残っているのは事実です。安全に開発を続けるために、以下の対応をしておきましょう。
① Composer本体を最新版にアップデートする(必須!)
すでにこのバグを直した安全なバージョンが公開されています。 ターミナル(黒い画面)を開いて、以下のコマンドを実行し、安全なバージョン(2.9.6 または 2.2.27 LTS)へアップデートしましょう。
composer self-update
(※環境によっては composer.phar self-updateで実行してください)
② アップデートできない時の「一時的な回避策」
会社のルールなどで「どうしても今すぐアップデートできない!」という場合は、危険なダウンロード方法(ケースA)を強制的にブロックする設定をしておきましょう。
ターミナルで以下のコマンドを打つと、安全な方法でのダウンロードに固定できます。
composer config preferred-install dist
また、ケースBへの対策として、「出所不明な怪しいプロジェクトのcomposer.jsonは、むやみに 『composer install』しない(事前に中身を見る)」という基本ルールを徹底しましょう。
③ 今後のための「安全確認コマンド」を知っておく
これを機に、ぜひPHP初心者の方に知っておいてほしい便利なコマンドがあります。
composer audit コマンド
ターミナルで『composer audit』と打つと、今自分のプロジェクトに入っているパッケージの中に「危険なバグがある古いもの」が混ざっていないか、自動でチェックしてくれます。たまに実行して、安全確認をする習慣をつけましょう。
おわりに
セキュリティのニュースは難しい言葉が多くて焦ってしまいますが、今回のように「どんな時に危険なのか」「公式はどう対応したのか」を整理すると、落ち着いて対処できます。
出所が分からないコードを自分のパソコンで動かすのは、どんな時でもリスクが伴います。
これを機にご自身のパソコンに入っているComposerのバージョンを確認し、定期的にself-updateで最新状態を保つ習慣をつけてみてくださいね!