概要
JavaScriptモジュールバンドラーであるRollupに、パス・トラバーサルによる任意のファイル書き込みの脆弱性(CVE-2026-27606)が報告されました。この脆弱性は、Rollupのコアエンジンにおけるファイル名サニタイズの不備に起因するとされています。
攻撃者は、CLIからの名前付き入力、手動チャンクエイリアス、または悪意のあるプラグインなどを通じて出力ファイル名を操作し、パス・トラバーサルシーケンス(../)を使用することで、ビルドプロセスがアクセス権を持つホストファイルシステム上の任意のファイルを上書きできる可能性があります。これにより、最終的に永続的なリモートコード実行(RCE)につながる深刻な影響が懸念されます。
影響範囲
Rollupの以下のバージョンが本脆弱性の影響を受けます。
- バージョン 2.80.0 未満
- バージョン 3.30.0 未満
- バージョン 4.59.0 未満(特にv4.xおよび現在のソースコードにも存在すると報告されています)
本脆弱性が修正されたバージョンは以下の通りです。
- バージョン 2.80.0
- バージョン 3.30.0
- バージョン 4.59.0
想定される影響
本脆弱性が悪用された場合、攻撃者はビルドプロセスがアクセス権を持つホストシステム上の任意のファイルを上書きできる可能性があります。特に、重要なシステム設定ファイルやユーザー設定ファイルが上書きされることで、永続的なリモートコード実行(RCE)につながる危険性が指摘されています。これにより、システムが完全に制御されたり、機密情報が窃取されたりするなどの重大な被害が発生する可能性があります。
攻撃成立条件・悪用状況
攻撃は、攻撃者がRollupの出力ファイル名を制御できる状況下で成立します。具体的には、CLIからの名前付き入力、手動チャンクエイリアス、または悪意のあるプラグインの使用などが挙げられています。
現時点では、この脆弱性の具体的な悪用状況に関する詳細な情報は公開されていません。しかし、脆弱性の性質上、悪用される可能性は十分に考えられます。
推奨対策
【最優先で実施】Rollupのアップデート
影響を受けるバージョンのRollupを使用している場合は、速やかに以下の修正済みバージョンへアップデートしてください。アップデートは、最も効果的かつ推奨される対策です。
- バージョン 2.80.0 以降
- バージョン 3.30.0 以降
- バージョン 4.59.0 以降
一時的な緩和策
現時点では、根本的な解決策はアップデートのみとされています。ただし、Rollupのビルドプロセスを実行する環境において、不要なファイルシステムへの書き込み権限を最小限に制限することで、被害範囲を限定できる可能性があります。また、信頼できないソースからのプラグインや入力の使用を避けることも重要です。
確認方法
ご自身のプロジェクトで使用しているRollupのバージョンを確認してください。通常、プロジェクトのpackage.jsonファイルや、依存関係管理ツール(npm, yarnなど)でバージョン情報を確認できます。