Redis RCEエクスプロイトのPoC、最近のセキュリティパッチを回避

Redis StreamsとRedisBloomにおけるメモリ破損の攻撃経路

セキュリティパッチを適用しても、既存の脆弱性が必ずしも完全に塞がれるとは限りません。新たに公開された一連のPoC(概念実証)により、Redisバージョン6.2.22、7.4.9、8.6.4、8.8.0、8.8.1においてリモートコード実行が可能であることが明らかになりました。特筆すべきは、このコードの一部が、いずれもCVSS 3.1で深刻度8.8とされるCVE-2026-25243およびCVE-2026-25589に対して過去に発行された修正を回避している点です。

バージョン6.2.22、7.4.9、8.6.4では、Redis Streamsのコンシューマーグループ内で共有されるネガティブ確認応答(NACK)を処理する際のダブルフリー(二重解放)のメモリ不具合を悪用します。この不具合によりプロセスのメモリ構造が破損し、サーバー上で任意のコマンド実行が可能になります。公開されたエクスプロイトは、CVE-2026-25243に対する過去の緩和策が適用されていても正常に機能します。

Redis 8.8.0については、研究者らが組み込みのRedisBloomモジュール内にあるTDigest構造体の別のメモリオーバーフロー脆弱性を利用しました。さらに、Redis 8.8.0および8.8.1のTopK構造体を標的とした別のエクスプロイトも存在し、CVE-2026-25589に対する不完全なパッチを回避します。ポインタが部分的にクリアされた後も、削除処理が割り当てられたメモリ境界を超えて要素へのアクセスを続けていたことが原因です。

実行の前提条件とPoCの信頼性

実行フローを引き起こすには、攻撃者がEVALRESTOREXGROUPの各コマンドを発行できる権限を持っている必要があります。8.8系のリリースブランチを標的とするエクスプロイトについては、さらにRedisBloomモジュールが有効になっている必要があります。これらのデモは特定のメモリレイアウトに大きく依存しているため、作成者らは外部トラフィックや同時実行コマンドが存在しない、素の状態の公式コンテナに対してコードを検証しました。技術的な詳細とサンプルコードは、GitHub上のRedis PoCエクスプロイトリポジトリで確認できます。

実証テストでは、対応するすべてのバージョンにおいて、これらのエクスプロイトが指定されたコマンドを一貫して実行することが確認されました。作成者らはこのコードを破壊的なものではないとしていますが、実行後にはデータベース内に残存するシステムキーや破損したメモリの痕跡が残ります。カスタムビルドにおいてメモリオフセットが不正な場合は、サーバーの不安定化やプロセスクラッシュを引き起こす可能性もあります。

テストにおけるガイドラインとセキュリティ上の推奨事項

この一連のツールは、あくまで許可を得たセキュリティ評価および研究目的での利用に限定して公開されています。作成者らは、新規かつ隔離されたインスタンス上でこれらのデモを実行すること、非公式ビルドについては独自にメモリオフセットを算出すること、そしてTDigestエクスプロイト実行後はRedis 8.8.0のデータベース状態を永続化しないことを推奨しています。

翻訳元: https://meterpreter.org/redis-rce-exploit-poc/

ソース: meterpreter.org