OWN NEWS GATHER
← 戻る
The Hacker News

AIエージェントがRedisのゼロデイ脆弱性を発見、RCEエクスプロイト構築を受けて緊急アップデートが公開

要点

  • AIエージェント「Kimi K3」がRedisに存在する複数のゼロデイ脆弱性を発見し、リモートコード実行(RCE)が可能であることを示す概念実証(PoC)コードを構築した。

  • Redisはこれを受けて、2026年7月23日に脆弱性を修正するための7つのセキュリティリリースを急遽公開した。

  • 発見された脆弱性は、「Redis Streams」におけるメモリの二重解放(ダブルフリー)の問題と、「RedisBloom」のTDigestローダーにおける境界外書き込みの問題の2系統である。

  • いずれの攻撃経路もデータベースを復元する「RESTORE」コマンドの実行を前提とするため、修正版へのアップデートのほか、暫定対策として同コマンドの制限が推奨されている。

  • 2026年7月24日時点において、これらの脆弱性を悪用した実際のサイバー攻撃(野生での悪用)は報告されていない。

  • インメモリデータベース管理システム「Redis」において、AIエージェント「Kimi K3」が新たなゼロデイ脆弱性(開発元が修正プログラムを提供する前に発見された脆弱性)を発見し、リモートで任意のコマンドを実行できる(RCE:遠隔からシステムを不正に操作して任意のコードを実行させること)概念実証(PoC:脆弱性の存在を証明するための実証用プログラム)コードを構築したことが明らかになった。これを受けてRedisは2026年7月23日、複数のバージョン向けに計7つのセキュリティ修正版を急遽リリースした。研究チームによるPoCの公開に伴い、Redis側もメモリ破損がリモートコード実行につながるおそれがあるとして、利用者に対して速やかなアップデートを呼びかけている。

  • 今回のセキュリティリリースは、Redisのバージョン「6.2.22」「7.4.9」「8.6.4」「8.8.0」に対して、認証を通過した状態からリモートコード実行が可能であることを示すPoCスクリプトが公開されたことに対応したものだ。公開された攻撃経路はいずれも、データベースのバックアップデータを復元する「RESTORE」コマンドを起点としている。

  • 脆弱性は大きく分けて2つの経路が存在する。

  • 1つ目の経路は、時系列データなどを扱う「Redis Streams」機能に存在する共有オブジェクトのバグだ。これは、内部的に破損したRDB(Redis Database:Redisのメモリ上のデータをディスクに保存するバイナリファイル形式)オブジェクトを読み込ませることで、2つのコンシューマ(データを処理する主体)が同一の保留エントリレコード(内部名「streamNACK」)を参照するように仕向けるものだ。この状態で1つ目のコンシューマを削除すると該当オブジェクトがメモリ上から解放され、もう1つのコンシューマには無効なメモリ領域を指す「ダングリングポインタ(解放済みのメモリ領域を指したままになっている無効なポインタ)」が残る。その後、2つ目のコンシューマも削除されることで、すでに解放されたメモリ領域を再度解放しようとする「ダブルフリー(メモリの同じ領域を二重に解放してしまうバグ)」が発生する。公開された実証スクリプトは、このメモリ破損を利用して任意のメモリ空間へアクセスし、最終的にOSのシェルコマンドを実行する「system()」関数を呼び出す仕組みとなっている。

  • 2つ目の経路は、確率的データ構造を提供するモジュール「RedisBloom」に含まれる「TDigest」のRDBローダーに存在する境界外書き込みの脆弱性だ。境界外書き込みとは、割り当てられたメモリの範囲外にデータを書き込んでしまうメモリ破損バグの一種である。このローダーは、シリアライズされた圧縮値に基づいてメモリの割り当てを行うが、ロードするデータ量を決定する際には、攻撃者が改ざん可能な別の容量フィールドの値をそのまま信頼してしまう。これにより、実際に割り当てられた小さなメモリ領域に対して、不整合なメタデータに基づき大量のデータを書き込もうとするため、境界外への書き込みが発生する。バージョン「8.8.0」向けのPoCスクリプトでは、この仕様のズレを利用してメモリの読み書きを行う仕組みを構築し、Redisや標準Cライブラリ(libc)のメモリアドレスを特定した上で、データベースのハッシュ関数を改ざんして「system()」関数を実行させるように設計されている。

  • Redisが公開した修正プログラムでは、これらの問題に対してそれぞれ異なるアプローチで対処が行われている。

  • バージョン「6.2.23」「7.2.15」「7.4.10」では、Redis Streamsにおける共有NACKの使用後フリー(Use-After-Free)脆弱性が修正された。

  • また、バージョン「8.2.8」「8.4.5」「8.6.5」では、Streamsの問題と、RedisBloomおよびTDigestにおける境界外書き込みの問題の双方が修正されている。

  • さらに、バージョン「8.8.1」ではRedisBloomおよびTDigestローダーの修正が行われた。なお、Streams側の保護ガードについては、バージョン「8.8.0」の時点で既に組み込まれていたという。

  • 今回の脆弱性について、セキュリティ関係者の間では注意が呼びかけられている。特に、PoCの対象となった「6.2.22」および「7.4.9」は、Redisが今年5月にユーザーに対してインストールを推奨していたセキュリティアップデート版であったが、これらのバージョンにはStreamsの重複所有権をチェックする保護ガードが含まれていなかったことが判明している。

  • 現時点での対策として、Redisは導入しているブランチに応じた最新の修正版へアップグレードすることを強く推奨している。修正版の適用が困難な場合の暫定的な回避策として、厳密に必要としないアカウントからは「RESTORE」コマンドの実行権限を剥奪すること、および信頼できないネットワークからのアクセスを遮断することが挙げられている。「RESTORE」コマンドの利用を制限することで、今回公開された2つの攻撃経路の双方を効果的に遮断できるという。

  • なお、7月24日時点において、Redisのリリースノートや公開されたPoCリポジトリのいずれからも、実際の攻撃活動での悪用事例は報告されていない。また、今回の脆弱性に対して新しいCVE(共通脆弱性識別子:セキュリティ脆弱性を特定するための国際的な識別番号)のレコードは発行されておらず、以前に報告された「CVE-2026-25589」などの不完全な修正に起因するバグファミリーの一部として分類されている。

元URL