概要
Pingora HTTPプロキシフレームワークのデフォルトキャッシュキー実装において、キャッシュポイズニングの脆弱性(CVE-2026-2836)が報告されました。この問題は、デフォルトのHTTPキャッシュキーがURIパスのみを使用して生成され、ホストヘッダー(オーソリティ)などの重要な要素が考慮されていないことに起因します。このデフォルト設定に依存している運用者は、キャッシュポイズニング攻撃に対して脆弱であり、意図しないクロスオリジン応答がユーザーに提供される可能性があります。
影響範囲
この脆弱性は、Pingoraのアルファ版プロキシキャッシュ機能を利用しており、かつデフォルトのCacheKey実装に依存しているユーザーに影響を与えます。CloudflareのCDNインフラストラクチャは、独自のキャッシュキー実装を使用しており、この脆弱性の影響を受けなかったと報告されています。
想定される影響
- テナント間のデータ漏洩(Cross-tenant data leakage): マルチテナント環境において、キャッシュを汚染することで、あるテナントのユーザーが別のテナントからのキャッシュ応答を受け取る可能性があります。
- キャッシュポイズニング攻撃(Cache poisoning attacks): 共有キャッシュエントリを汚染することにより、正規のユーザーに悪意のあるコンテンツが提供される可能性があります。
攻撃成立条件・悪用状況
この脆弱性は、Pingoraのデフォルトキャッシュキー実装が、キャッシュキーの生成にURIパスのみを使用し、ホストヘッダーなどの重要な要素を含まないために発生します。これにより、異なるホスト名に対するリクエストであっても、URIパスが同じであれば同じキャッシュエントリが使用される可能性があります。現在のところ、この脆弱性の具体的な悪用状況については詳細な報告はありません。
推奨対策(優先度付き)
今すぐできる対策
- Pingoraのアップグレード: Pingora v0.8.0以降のバージョンへのアップグレードを強く推奨します。これらのバージョンでは、安全でないデフォルトのキャッシュキー実装が削除されています。
中長期的な対策
- カスタムキャッシュキーの実装: アップグレード後、ユーザーはホストヘッダー、オリジンサーバーのHTTPスキーム、その他キャッシュが変化すべき属性など、適切な要素を含む独自のコールバックを明示的に実装する必要があります。
一時的な緩和策
Pingoraの以前のバージョンを使用しており、直ちにアップグレードできない場合は、デフォルトのCacheKeyの使用を削除し、少なくともホストヘッダー/オーソリティおよびアップストリームピアのHTTPスキームを含む独自のキャッシュキーを実装することで、脆弱性を緩和できる可能性があります。
確認方法
具体的な確認方法は提供されていませんが、ご自身のPingoraのバージョンを確認し、キャッシュキーの実装がデフォルトのCacheKeyに依存していないか、またはカスタム実装にホストヘッダーなどの重要な要素が含まれているかを確認することが重要です。