5月27日、Packagistチームが「An Update on Composer & Packagist Supply Chain Security」と題した記事を公開した。
Laravel攻撃事件が決定打に
5月22日、PHPの人気フレームワークLaravelの言語パック「laravel-lang」が攻撃を受けた。攻撃者はGitHubアカウントを乗っ取り、悪意のあるコードを含む新しいバージョンを公開。同様の手口で4月30日には「intercom/intercom-php」も標的となった。laravel-langパッケージは月間数百万ダウンロードを誇る基幹パッケージで、被害の可能性があるプロジェクト数は膨大だった。
これらの事件を受け、月間数億回のダウンロードを誇るPHP最大のパッケージリポジトリ「Packagist.org」が包括的なセキュリティ強化に踏み切る。
近年、npm(JavaScript)やPyPI(Python)といったパッケージマネージャーを狙ったサプライチェーン攻撃が急増している。攻撃者は盗まれたアクセストークンや乗っ取ったアカウントを使い、正当なパッケージに悪意のあるコードを仕込む。一度感染すれば、そのパッケージを使う数万のプロジェクトに被害が拡散する仕組みだ。
多要素認証を「今すぐ」有効化せよ
記事では冒頭で緊急性の高い警告を発している:
Packagist.orgでパッケージを維持管理している場合で、MFAを有効にしていない場合は、今すぐ有効にしてほしい。
約6ヶ月後からは、パッケージメンテナーのMFA状況が透明性ログで公開され、プロフィールでも確認可能になる。つまり、パッケージの利用者は「このメンテナーはセキュリティに真剣に取り組んでいるか」を可視化できる。最終的にはすべてのPackagist.orgアカウントでMFAが必須となる予定だ。
バージョンの不変性で「後出し攻撃」を阻止
今週のアップデートで最も重要な変更は、安定版パッケージの不変性だ。一度公開された非開発版は、上流でのre-taggingやGitリポジトリでの強制プッシュがあっても、Packagist.org上では書き換えられなくなる。
なぜこれほど重要なのか:
- 既存バージョンへのバックドア仕込みを防止:攻撃者が広く使用されている既存バージョンに悪意のあるコードを後から仕込む手法を阻止
- サードパーティツールとの整合性維持:セキュリティスキャナーやSBOM(Software Bill of Materials)ツールが取得したメタデータと実際のパッケージ内容の乖離を防ぐ
- 事後調査の確実性:攻撃発生時に「当時実行されていたコード」が消失することを防ぐ
Composer 2.10で統一セキュリティポリシー
今週リリース予定のComposer 2.10では、依存関係ポリシーフレームワークが導入される。これは脆弱性勧告、放棄されたパッケージ、マルウェアを統一的に扱う仕組みだ。
注目は今後実装予定の最小リリース期間ポリシー(クールダウン期間)。公開からN時間または日数が経過していないバージョンのインストールを拒否する機能で、最近の攻撃パターンに対する効果的な防御手段とされている。開発者はComposerの公式ドキュメントで詳細な設定方法を確認できる。
既に稼働中の対策
マルウェア自動検知
2026年3月から、セキュリティ企業Aikidoのマルウェア検知機能を統合済み。悪意のあるバージョンが検出されると、Packagist.orgのUIに警告が表示され、Composerのパッケージメタデータにも反映される。
透明性ログ
透明性ログでは、パッケージ所有権の変更、メンテナーの追加・削除、バージョン参照の変更などセキュリティ関連イベントを記録。この仕組みはドイツ主権技術庁(Sovereign Tech Agency)の資金提供で開発され、最近のLaravel攻撃対応で実際に威力を発揮した。
長期計画:予防重視への転換
Packagist.orgチームは、攻撃検知後の迅速対応から予防中心のアプローチへの転換を図っている。手動対応は短期的な解決策に過ぎず、自動化された防御機構の構築が長期目標だ。
今後は組織的パッケージ所有権(企業での適切なマルチユーザー管理)、FIDO2サポート(ハードウェアベース認証)、段階的リリースフローなどの実装が予定されている。これらの機能はPHP-FIG(PHP Framework Interop Group)などコミュニティとの連携により標準化も視野に入れている。
PHPエコシステムの安全性向上は、全世界のWebアプリケーション開発に直結する重要課題だ。開発者にとっては、MFAの有効化とComposer 2.10への更新が当面の対応となる。
詳細はAn Update on Composer & Packagist Supply Chain Securityを参照していただきたい。