概要
React RouterおよびRemixにサーバー上の機密ファイルへのアクセスまたは改変を許してしまう可能性のある重大な脆弱性が発見されました。この脆弱性は複数のパッケージに影響を及ぼし、CVSSスコア8.8/10の「Critical(緊急)」と評価されています。
脆弱性の詳細
このセキュリティ上の問題は、createFileSessionStorage()関数における未署名クッキーの不適切な処理に起因します。開発者がユーザーセッション管理のために未署名クッキーを使用している場合、攻撃者はディレクトリトラバーサルシーケンス(例:../)を含む悪意のあるセッションクッキーを細工し、意図されたセッションディレクトリ外のファイルを読み書きすることが可能になります。
影響を受けるパッケージ
@react-router/node(バージョン 7.0.0 から 7.9.3)@remix-run/node(バージョン 2.17.1 まで)@remix-run/deno(バージョン 2.17.1 まで)
この脆弱性を悪用する攻撃者は、設定ファイル、ソースコード、その他の重要なシステムデータを含むサーバー上の機密ファイルにアクセスできる可能性があります。また、意図しないディレクトリに悪意のあるデータを書き込むことで、重要な設定ファイルや実行可能ファイルが上書きされた場合、コード実行やシステム侵害につながる可能性もあります。
攻撃の制限事項
ただし、この攻撃にはいくつかの制限があります。攻撃者はアプリケーションを介して任意のファイルを直接読み取ることはできません。代わりに、期待されるセッションファイル形式に一致するファイルを参照するセッションクッキーを細工する必要があります。一致するファイルが見つかった場合、そのデータはサーバーサイドセッションにロードされ、標準のアプリケーションロジックを通じて公開される可能性があります。
対策
影響を受けるパッケージを使用している開発者は、直ちに以下のパッチが適用されたバージョンへアップグレードする必要があります。
@react-router/node: バージョン 7.9.4 以降にアップデート@remix-run/node: バージョン 2.17.2 以降にアップデート@remix-run/deno: バージョン 2.17.2 以降にアップデート
最も効果的な緩和策は、署名付きクッキーを実装することです。これにより、セッションの整合性が暗号的に検証され、攻撃者がクッキーの内容を改変するのを防ぐことができます。
