5月28日、Packagistチームが「Composer 2.10 Release」と題した記事を公開した。
PHPの依存関係管理ツールComposerの最新版2.10.0で、悪意のあるパッケージを自動検知・ブロックする機能が標準搭載された。この機能により、composer installやcomposer update実行時に、マルウェアを含むパッケージが依存関係解決から自動的に除外され、開発者のマシンやプロダクション環境への侵入を防ぐ。
近年、オープンソースパッケージエコシステムを標的としたサプライチェーン攻撃が急激に増加している。Sonatype社の2023年レポートによると、悪意のあるパッケージの数は前年比136%増加しており、PHPエコシステムも例外ではない。昨年だけでも人気のlaravel-langパッケージで攻撃者が開発者マシンを侵害し認証情報を窃取するマルウェアを含むバージョンを公開するなど、実害を伴う攻撃が相次いで発生している。
リアルタイムマルウェア検知でインストール前にブロック
Composer 2.10の最大の特徴は、マルウェア検知データベースと連携したリアルタイム防御機能である。セキュリティ企業Aikidoが提供するマルウェア検知データ(CC-BY 4.0ライセンス)を活用し、悪意のあるパッケージバージョンをインストール前に自動排除する。
特に重要なのは、既存のcomposer.lockファイルにマルウェアパッケージが含まれている場合でも、composer installが失敗する点だ。これにより、CI/CDパイプラインやプロダクション環境でマルウェアが静かに導入されることを防ぐ。この保護機能はPackagist.orgからパッケージをインストールする全てのユーザーに対してデフォルトで有効となる。
従来のFriendsOfPHP Security Advisoriesでは、脆弱性の公開プロセスに数日を要することが多く、迅速なマルウェア攻撃への対応が困難だった。新しいマルウェアフィルタリング機能では、攻撃を検知と同時に全ユーザーを保護できるため、被害の拡散を大幅に抑制できる。
実際の攻撃事例と対策効果
記事では具体的な攻撃事例として以下が挙げられている:
- laravel-langパッケージ攻撃:攻撃者が開発者のマシンを通じてGitHubリポジトリにアクセスし、認証情報窃取マルウェアを含むバージョンを公開
- intercom/intercom-php攻撃:人気パッケージに悪意のあるリリースが公開され、手動介入による迅速な対応でのみ被害拡大を阻止
これらの事例では、攻撃発覚から対策までの数時間〜数日の間に多数の開発者環境が感染リスクにさらされた。新機能により、こうした「空白時間」での被害を防げるようになる。
統一されたセキュリティポリシー設定
Composer 2.10では、config.policy設定でセキュリティアドバイザリ、放棄されたパッケージ、マルウェアの処理を統一的に制御できるようになった。各ポリシーは共通の構造を持つ:
- **
block**:該当パッケージバージョンの依存関係解決からの除外制御 - **
audit**:composer auditでの扱い方(ignore、report、fail) - **
ignore**:パッケージ単位での例外設定
デフォルト設定では:
- マルウェア:更新・監査・インストール時すべてでブロック
- セキュリティアドバイザリ:更新・監査時はブロック、インストールは可能
- 放棄されたパッケージ:監査時のみ報告
特定ポリシーを無効化する場合:
{
"config": {
"policy": {
"abandoned": false,
"malware": {
"block": false
}
}
}
}
開発効率向上の新機能
ワイルドカード対応の--with制約
composer updateの--withフラグでワイルドカードが使用可能になった:
composer update --with "acme/*:^2.0"
これにより、ベンダー名前空間全体への一括バージョン制約適用が可能となり、SymfonyやLaravelなどのフレームワークの新メジャーバージョン移行作業が大幅に効率化される。
create-project時の追加パッケージ指定
create-projectコマンドで--requireパラメータが利用可能:
composer create-project laravel/laravel my-project --require="laravel/telescope:^4.0"
プロジェクト初期化時に必要なパッケージを一括インストールできるため、開発環境セットアップが簡素化される。
パフォーマンス改善
- プラグインオートロード最適化によるクラスマップ再生成回数削減
- PoolOptimizerメモリ使用量削減により大規模プロジェクトでの動作安定性向上
--bump-after-update修正:実際に更新されたパッケージのみバージョン制約更新
今回のアップデートは、PHPエコシステムの安全性向上に大きく貢献する重要なリリースである。特にマルウェア自動検知機能は、サプライチェーン攻撃が現実的脅威となっている現在において、開発者とエンドユーザーの両方を保護する画期的な機能といえる。Composer 2.10への更新は、セキュリティ面で即座に実施すべきアップグレードである。
詳細はComposer 2.10 Releaseを参照していただきたい。