CVE-2026-66373 は、Redis の stream に見つかった二重解放の脆弱性である。2026年7月23日、Redisはこの Redis 脆弱性を含む7本のセキュリティリリース(6.2.23 / 7.2.15 / 7.4.10 / 8.2.8 / 8.4.5 / 8.6.5 / 8.8.1)を、2時間足らずのあいだに立て続けに公開した。中身は stream の RESTORE ペイロードによる use-after-free と、RedisBloom/TDigest の境界外書き込みの2つである。前者には2日後の7月25日に CVSS v3.1 7.5 HIGH / CWE-415 が割り当てられたが、リリース当日のノートにはCVE番号もCVSSスコアも書かれていなかった。

きっかけは、Moonshot AIの Kimi K3 を使ったエージェント群がRedisの0dayを自動で見つけ、エクスプロイトまで書いたという研究者の投稿だった。ただしその「19件・90分」という数字は自己申告で、第三者検証はされていない。本記事は検証できる事実(Redis公式リリース、修正コミットの実際の差分、NVDの登録内容)と未検証の主張(発見件数・所要時間・自律性)を分けて整理し、最後に自分のRedisを確認する実行コマンドまで持っていく。

CVE-2026-66373のタイムライン。2026年4月20日の修正PR作成から、5月のCVE 5件公表、7月22日のPoC公開、7月23日の7本一斉リリース、7月25日のNVD登録までを時系列で示す
CVE-2026-66373をめぐる時系列。日時はすべてGitHub API・NVD APIの実測値(UTC)。出典: redis/redis リリース、NVD、Hacker News
30秒でわかる CVE-2026-66373(2026年7月26日時点)
  • 何が起きた:Redisのstreamで、細工した RESTORE ペイロードにより1つのNACK(保留エントリ)を2つのconsumerが共有できてしまう。両方を XGROUP DELCONSUMER で消すと二重解放が起き、リモートコード実行に至りうる
  • 影響:Redis 8.8.0 未満。修正版は 6.2.23 / 7.2.15 / 7.4.10 / 8.2.8 / 8.4.5 / 8.6.5(8.8.0 で既に修正済み)
  • もう1件:RedisBloom/TDigest の境界外書き込み。修正は 8.2.8 / 8.4.5 / 8.6.5 / 8.8.1 と RedisBloom 2.4.26 / 2.6.31 / 2.8.23こちらは執筆時点でCVE番号なし
  • 前提条件:認証済みで RESTORE を実行できること。NVDも「unusual case」と書いており、無条件に踏めるものではない(AC:H / PR:L)
  • 事実と主張:Redisのリリースと修正差分、CVE登録は一次ソースで確認済み。「19件を90分で」「27分でエクスプロイト」は研究者の自己申告で未検証
  • 運用上の要点:リリース当日はCVE番号が無かった。CVE番号を起点にした脆弱性管理では2日間まったく気づけない

サプライチェーン全体での依存関係の追い方と、CVE公開前後の対応フローの整理は サプライチェーンセキュリティ2026|攻撃手法・防御ツール・実践チェックリスト にまとめている。

何が起きたのか — CVE-2026-66373 公表までの時系列

まず、確認できる日時だけを並べる。以下はすべてGitHub APIとNVD APIから取得した実測値で、表記はUTCである(日本時間は+9時間)。

日時(UTC) 出来事 一次ソース
2026-04-20 10:33 redis/redis に PR #15081「Reject corrupt stream RDB with shared NACK across consumers」が作成される GitHub PR API
2026-04-23 12:46 PR #15081 が unstable ブランチにマージされる 同上
2026-05-05 Redisが5件のCVE(CVE-2026-23479 / 25243 / 25588 / 25589 / 23631)を同時公表 Redis公式アドバイザリ
2026-07-22 22:26 PoCリポジトリ berabuddies/redis-poc が作成される GitHub Repo API
2026-07-23 17:10 Hacker Newsに「Kimi K3 exploited the latest Redis server」が投稿(220ポイント) HN Algolia API
2026-07-23 17:52〜18:02 Redis 6.2.23 / 7.2.15 / 7.4.10 を公開 GitHub Releases API
2026-07-23 19:18〜19:20 RedisBloom 2.4.26 / 2.6.31 / 2.8.23 を公開 同上
2026-07-23 19:20〜19:30 Redis 8.2.8 / 8.4.5 / 8.6.5 / 8.8.1 を公開 同上
2026-07-24 The Hacker News、heise online が報道 各媒体
2026-07-25 01:16 NVDが CVE-2026-66373 を公開(status: Received) NVD API
この事件の実測値。リリース7本、公開所要1時間38分、CVE登録まで2日、修正量8行、RedisBloom側のCVE 0件
本件の主要な数字。いずれもGitHub API・NVD APIから取得した実測値で、研究者の自己申告値は含めていない。出典: redis/redis リリース、NVD

この並びで目を引くのは2点ある。

ひとつは7月23日のリリース密度だ。6.2.23 の公開が17:52、最後の 8.8.1 が19:30。1時間38分のあいだに7本のRedis本体リリースと3本のRedisBloomリリースが出ている。Redisが5月に5件のCVEをまとめて出したときは事前に調整されたアドバイザリブログが伴っていたが、今回はリリースノートのみで、公式ブログでの解説記事は確認できていない。

もうひとつはCVE番号が後から来たことだ。7月23日のリリースノートには、CVE-IDもCVSSスコアも書かれていない。7.4.10のリリースノートは全文でこれだけである。

Update urgency: SECURITY: There is a security fix in the release.
Security fixes
A crafted stream RESTORE payload can make two consumers share the same NACK, leading to a use-after-free that may result in Remote Code Execution

CVE-2026-66373がNVDに登録されたのは、その約2日後の7月25日01:16 UTCだ。しかもNVD上のステータスは執筆時点で Received(受領済み・NVDによる解析待ち)で、CVSSスコアも一次評価元のNVDではなく [email protected] がSecondaryとして付けたものである。

つまり「CVEフィードを監視して、番号が出たら対応する」という運用だけを回している組織は、Redisが修正版を出してからNVDに載るまでの約2日間、この脆弱性の存在をまったく検知できなかった

これは今回に限った話ではない。OSSの脆弱性対応では、ベンダーのリリースノートが常にCVEデータベースより先に出る。CVEを起点にするのではなく、使っているミドルウェアのリリースフィードを直接監視することが、この2日間を埋める唯一の手段になる。

「AIが0dayを発見した」の主張と、一次ソースで確認できる事実

ここが本件でいちばん混乱しやすい部分なので、切り分けを明示する。

未検証の主張と一次ソースで確認できる事実の対比図。左に自己申告の件数・時間・自律性、右にRedis公式リリース・修正差分・NVD登録を配置
本件で「確認できること」と「確認できていないこと」の切り分け。出典: The Hacker News、heise online、redis/redis リリース、NVD

主張の側(第三者検証なし)

研究者 Chaofan Shou 氏がX上で公表した内容として、The Hacker News と heise online が共通して伝えているのは次の2点である。

・Kimi K3 のエージェント群が、Redis 8.8.0 に対して19件の0dayを約90分で発見したとされる
・別の実行では、Redis 8.8.0 のエクスプロイトを27分で生成したとされる

The Hacker News はこの数字について「件数、所要時間、そして主張されている自律性の度合いは、いずれも自己申告のままである」と明記している。heise online も、重大度評価とCVEエントリが当時まだ存在しないことを指摘している。

なお、エージェントの体数など、これより踏み込んだ具体的な数字も一部で流通している。ただし本記事が確認した範囲(The Hacker News、heise online、CyberSecurityNews)では裏付けが取れなかったため、扱わない。

「AIが発見した」の証明は原理的に難しい

ある脆弱性がAIによって見つかったのか、人間が当たりを付けた箇所をAIに探索させたのか、あるいは人間が見つけた後にAIで再現させたのかは、外部からは区別できない。再現手順とログが公開されない限り、この種の主張は検証不能なままになる。今回もPoCコードは公開されているが、「どうやって見つけたか」の実行ログは公開されていない。

したがって本記事は「AIがRedisの0dayを発見した」を事実として扱わない。事実として扱うのは、Redisに実際に脆弱性があり、修正されたことだけである。

事実の側(一次ソースで確認済み)

一方で、次はすべてAPI経由で直接確認できた。

・Redisが2026年7月23日に7本のセキュリティリリースを公開したこと(GitHub Releases API)
・各リリースノートの記述内容(前掲の引用は7.4.10の全文)
・7.4.9→7.4.10の差分で src/rdb.c が8行追加されたこと、および tests/integration/corrupt-dump.tcl に回帰テストが17行追加されたこと(GitHub Compare API)
・NVDにCVE-2026-66373が2026-07-25 01:16 UTCに登録され、CVSS 7.5 HIGH / CWE-415(Double Free)が付いていること
・PoCリポジトリ berabuddies/redis-poc が2026-07-22 22:26 UTCに作成され、執筆時点で397スターであること

読者の3つの問いへの答え
何が起きたか:Redisのstreamに二重解放の穴があり、7月23日に7本の修正版が出た。CVE-2026-66373は2日後に採番された。
何を解決すべきか:認証済みユーザーが RESTORE を叩ける環境では、RCEに至りうる。更新とACL制限の両方が要る。
何を教訓にできるか:CVE番号を待つ運用では2日遅れる。ミドルウェアのリリースフィードを直接見る体制が要る。

CVE-2026-66373 の技術的な中身 — 共有NACKによる二重解放

NVDの記述を訳すと、脆弱性の成立条件はこうなる。

Redis 8.8.0 未満において、認証済みの攻撃者が RESTORE を実行できるという例外的なケースで、同一のNACK(保留エントリ)が複数のconsumerから参照される RESTORE ペイロードを介してリモートコード実行を許す。両方のconsumerを XGROUP DELCONSUMER で削除すると二重解放に至るためである。なお本件は CVE-2026-25243 の修正が不完全であったために存在する。

Redis Streams の consumer group は、まだACKされていないメッセージを PEL(Pending Entries List) で管理する。PELにはグローバルなものと、consumerごとのものがある。実体である streamNACK 構造体はグローバルPELが保持し、各consumerのPELは同じ構造体を指すポインタを持つ設計だ。つまり「1つのNACKは、ちょうど1つのconsumerに所有される」という不変条件がある。

RDBのロード処理は、この不変条件を信じていた。細工したRDBペイロードを RESTORE で流し込むと、consumerA と consumerB の両方のPELが同一の streamNACK を指す状態を作れてしまう。あとは両方のconsumerを消すだけでいい。

flowchart TD A["攻撃者が細工した stream RDB
consumerA と consumerB の PEL が
同じ NACK を指すように仕込む"] --> B["RESTORE で流し込む"] B --> C{"RDBロード時に
NACK の所有者を検査するか"} C -->|"修正前:検査なし"| D["ポインタを黙って上書き
2つの consumer が
同じ NACK を共有"] C -->|"修正後:所有者ありなら拒否"| E["Bad data format エラー
ロードを中止"] D --> F["XGROUP DELCONSUMER consumerA"] F --> G["NACK が free される"] G --> H["XGROUP DELCONSUMER consumerB"] H --> I["同じ領域を再び free
=二重解放(CWE-415)"] I --> J["ヒープ状態を操作できれば
リモートコード実行へ"] E --> K["安全に失敗"]

修正の中身は8行のガード

実際の修正は極めて短い。7.4.9→7.4.10の差分を取ると、変更されたのは10ファイル・7コミットで、そのうち脆弱性を直接塞いでいるのは src/rdb.c8行の追加だけだった。

/* If the NACK already has a consumer assigned, the
 * payload is corrupt — each global PEL entry must be
 * claimed by exactly one consumer. */
if (nack->consumer != NULL) {
    rdbReportCorruptRDB("Stream consumer PEL entry already has a consumer assigned");
    decrRefCount(o);
    return NULL;
}

nack->consumer が既に埋まっていたらRDBを壊れているものとして拒否する、それだけである。あわせて tests/integration/corrupt-dump.tcl に、2つのconsumerが同じエントリを参照するstreamを作って RESTORE が失敗することを確かめる回帰テストが追加されている。

「不完全な修正」の系譜

ここで時系列に戻ると、興味深いことがわかる。このガードを追加したPR #15081は、2026年4月23日に unstable へマージされていた。7月に新しく書かれたコードではない。

NVDがCVE-2026-66373の参照として挙げているのは、このPR #15081 と、8.6.4...8.8.0 のコンペア画面である。そしてCVEの記述は「CVE-2026-25243 の修正が不完全だったために存在する」と述べている。CVE-2026-25243 は5月に公表された5件のうちのひとつで、同じく RESTORE 経由の脆弱性だった。

整理すると、5月に塞いだつもりの穴が塞ぎきれておらず、より完全なガードは開発版に入っていたが、安定版ブランチには7月23日まで降りてこなかった——という構図になる。

ただし、PR #15081そのものが「不完全な修正」だったのか、それとも「不完全な修正を完全にするもの」だったのかは、公開情報からは断定できない。NVDは参照として挙げているだけで、どちらとは書いていない。ここは推測を書かずに、確認できる事実(4月にマージ、7月に各安定版へ反映、CVEは不完全修正が原因と記述)だけを提示しておく。

CVE番号が付いていないもう一つの修正 — RedisBloom/TDigest

7月23日のリリースには、実はもう1件の脆弱性修正が含まれている。そしてこちらは執筆時点でCVE番号が存在しない

2つの脆弱性の攻撃経路の比較図。streamの共有NACK二重解放とRedisBloom TDigestの境界外書き込みが、どちらもRESTOREコマンドを入口にしていることを示す
7月23日に修正された2件は、どちらも RESTORE によるRDBデシリアライズを入口にしている。出典: redis/redis および RedisBloom のリリースノート

8.8.1 のリリースノートに書かれているのは次の1行だけだ。

RedisBloom/RedisBloom#1044 Crafted RESTORE payloads in RedisBloom and TDigest may trigger out-of-bounds writes, potentially leading to remote code execution

参照されているRedisBloomのPR #1044 は「MOD-13409 Harden RDB loading(backport to 8.8)」というタイトルで、2026-07-23 17:54 UTC にマージされている。PR本文によれば、変更内容は次の3点である。

・Bloom と Cuckoo の RDB メタデータ、およびシリアライズされたバッファサイズを、確保・コピーの前に検証する
・TDigest の capacity とノードカウンタを、シリアライズされたノードを読む前に検証する
・壊れたRDBを狙った回帰テストを追加する

要するに、ヘッダに書かれた「これだけのサイズがあります」という自己申告を信じてメモリを確保していたところに、実データとの整合性チェックが入った形だ。攻撃者が capacity フィールドだけを大きく書き換えれば、確保した領域を超えて書き込める。これが境界外書き込みになる。

NVDに対して “RedisBloom” をキーワードに2026年6月1日以降を検索しても、該当するCVEは0件だった(2026年7月26日時点)。つまりこの脆弱性は、CVE番号を持たないまま修正だけが出荷されている状態にある。

スキャナに映らない脆弱性

依存関係スキャナやコンテナイメージスキャナの多くは、CVEデータベースとの照合で判定する。CVE番号が存在しない脆弱性は、スキャナが「問題なし」と報告する。RedisBloom/TDigest の境界外書き込みはまさにこの状態にある。

RedisBloom(およびRedis 8.x に統合された確率的データ構造)を使っている環境では、スキャナの結果ではなく、モジュールのバージョンを直接確認する必要がある。

なお、6.2.23 / 7.2.15 / 7.4.10 のリリースノートにはRedisBloomの記述が無い。これらの系列ではRedisBloomは本体に同梱されない独立モジュールであり、RedisBloom 2.4.26 / 2.6.31 / 2.8.23 として別途リリースされているためだ。本体を更新してもモジュールは更新されない点に注意がいる。

自分のRedisが影響を受けるか確認する

ここからは手を動かす部分になる。確認は「バージョン」「モジュール」「攻撃前提の成立可否」の3段構えで見る。

1. バージョンを確認する

# バイナリから直接
redis-server --version

# 稼働中のインスタンスに問い合わせる(推奨・実際に動いているものが分かる)
redis-cli INFO server | grep -E 'redis_version|redis_mode|os'

# Docker で動かしている場合
docker exec <container_name> redis-server --version

# Kubernetes の場合
kubectl exec <pod> -- redis-cli INFO server | grep redis_version

redis-server --version はディスク上のバイナリを見るだけなので、パッケージを更新したがプロセスを再起動していない環境では、実際に動いているバージョンと食い違う。redis-cli INFO server で稼働中の値を確認するほうが確実である。

2. 影響範囲マトリクス

得られたバージョンを次の表に当てる。

系列 stream 共有NACK(CVE-2026-66373) RedisBloom/TDigest 境界外書き込み(CVE未採番) 上げるべき版
6.2.x 6.2.23 未満は影響あり 本体同梱なし(モジュール側で対応) 6.2.23
7.2.x 7.2.15 未満は影響あり 本体同梱なし(モジュール側で対応) 7.2.15
7.4.x 7.4.10 未満は影響あり 本体同梱なし(モジュール側で対応) 7.4.10
8.2.x 8.2.8 未満は影響あり 8.2.8 未満は影響あり 8.2.8
8.4.x 8.4.5 未満は影響あり 8.4.5 未満は影響あり 8.4.5
8.6.x 8.6.5 未満は影響あり 8.6.5 未満は影響あり 8.6.5
8.8.x 8.8.0 で修正済み 8.8.1 未満は影響あり 8.8.1
RedisBloom(独立モジュール) 対象外 2.4.26 / 2.6.31 / 2.8.23 未満は影響あり 該当系列の最新

8.8系だけ挙動が違う点に注意がいる。CVE-2026-66373の記述が「Redis before 8.8.0」であるとおり、stream側は 8.8.0 で既に修正済みだ。だから 8.8.1 のリリースノートにはRedisBloomの修正しか載っていない。逆に言えば 8.8.0 を使っている環境は、stream側は安全だがRedisBloom側は影響を受ける。

3. モジュールと攻撃前提を確認する

# ロードされているモジュールとバージョンを一覧(bf = RedisBloom)
redis-cli MODULE LIST

# 認証が掛かっているか(空なら誰でも接続できる)
redis-cli CONFIG GET requirepass

# default ユーザーが RESTORE を実行できるか
redis-cli ACL GETUSER default

# 全ユーザーの権限を俯瞰する
redis-cli ACL LIST

# 外部から到達可能になっていないか
redis-cli CONFIG GET bind
redis-cli CONFIG GET protected-mode

MODULE LIST の出力に bf という名前のモジュールがあれば、それがRedisBloomである。Redis 8.x では確率的データ構造が本体に統合されているため、明示的にロードしていなくても機能が有効になっている場合がある。

ACL GETUSER default の結果に +@all+restore が含まれていれば、認証を通った相手は RESTORE を実行できる。ここが今回の脆弱性の入口になる。

バージョンだけで判定しないこと
この脆弱性は 認証済みかつ RESTORE 実行可能 が前提である(NVDのCVSSベクタも PR:L=低権限が必要、AC:H=攻撃複雑度は高い)。バージョンが範囲内でも、requirepass が設定され RESTORE がACLで禁止されていれば、直ちに踏まれるものではない。逆に、バージョンを上げても Redis がインターネットに露出し認証も無いなら、この脆弱性とは別の問題として危険な状態が続く。

対策 — 更新先バージョンとACLによる暫定緩和

恒久対策:該当バージョンへ更新する

最優先は前掲マトリクスの「上げるべき版」への更新である。Docker で運用している場合、公式イメージのタグ選択に注意がいる。

# 現在のイメージのバージョンを確認
docker exec <container> redis-server --version

# 更新(タグを固定している場合は、その系列の最新版が出ているか確認する)
docker pull redis:8.8.1
docker pull redis:7.4.10

# 更新後、稼働中のプロセスが新版になったか必ず再確認する
docker exec <container> redis-cli INFO server | grep redis_version

マイナーバージョンで固定しているタグ(redis:8.6 など)を使っている場合、そのタグが修正版を指すように更新されているかを確認してから pull する。系列そのものがサポート外なら、更新しても修正は入らない。

RedisBloom を独立モジュールとして使っている6.2/7.2/7.4系では、本体とモジュールを別々に更新する必要がある。本体を 7.4.10 にしても、モジュールが RedisBloom 2.8.20 のままなら境界外書き込みは残る。

暫定緩和:RESTORE をACLで塞ぐ

すぐに更新できない場合、攻撃の入口である RESTORE を落とすことで時間を稼げる。

# default ユーザーから RESTORE を剥奪する
redis-cli ACL SETUSER default -restore

# stream の consumer 操作もあわせて制限する場合
redis-cli ACL SETUSER default -restore -xgroup

# 設定を永続化する(redis.conf 側にも反映が必要)
redis-cli ACL SAVE

ただしこれは応急処置であることを明確にしておきたい。RESTORE はレプリケーションやマイグレーション(MIGRATE コマンド)で内部的に使われるため、運用機能を壊す可能性がある。クラスタ構成でスロット移行を行っている環境では、事前に影響を確認してから適用する必要がある。

PoCが公開されている状態である

berabuddies/redis-poc は2026年7月22日に公開され、執筆時点で397スターを集めている。リポジトリの説明は「RCE PoC for Redis 6.2.22, 7.4.9, 8.6.4, 8.8.0」で、ライセンス表記は無い

さらにREADMEには、修正版である 8.8.1 に対してTopKモジュールのワイルドポインタを突く手法(CVE-2026-25589の修正が不完全であることを利用すると自称)も掲げられている。ただしこの主張についてRedis側の確認は取れておらず、対応するCVE番号も存在しない。「8.8.1に上げれば絶対に安全」とは断定できないし、「8.8.1が破られたことが確定した」とも言えない、という状態である。

いずれにせよ、PoCが公開済みで攻撃コストが下がっている以上、更新は先送りにしない方がよい。The Hacker News・Redisのリリースノートのいずれも、2026年7月24日時点で実際の悪用は報告されていないとしている。

ネットワーク層での防御

Redisはそもそもインターネットに直接晒す設計ではない。今回を機に次を確認しておきたい。

bind を必要なインターフェースに限定し、protected-mode yes を維持する
requirepass または ACL による認証を必ず設定する
・セキュリティグループ/ファイアウォールで 6379 番の到達範囲をアプリケーションサーバに限定する
・管理用に別ユーザーを作り、アプリケーション用ユーザーからは RESTORE を含む危険なコマンドを剥奪しておく

AIエージェントが脆弱性探索の側に回ることの意味は ClaudeがFreeBSDのカーネルRCE脆弱性CVE-2026-4747を完全自動生成 でも扱っている。自動化された探索を前提にした基準づくりについては OWASP APTS|AIエージェント時代の自律型ペネトレーションテスト基準を読む が参考になる。

5月のRedis CVE 5件との関係と、この事件が残したもの

2026年5月と7月のRedis脆弱性の系譜図。どちらもRESTOREコマンドを攻撃面としており、7月のCVE-2026-66373は5月のCVE-2026-25243の不完全修正に起因することを示す
2か月で再燃した同じ攻撃面。CVE-2026-66373 の NVD 記述は CVE-2026-25243 の不完全修正を明示している。出典: NVD、Redis公式アドバイザリ

5月に公表された5件(Redis RCE脆弱性5件まとめ CVE-2026-23479ほか|全バージョン影響・即パッチ必須 で詳述している)のうち3件は RESTORE 経由だった。今回の2件も、stream側・RedisBloom側ともに入口は RESTORE である。

観点 2026年5月の5件 2026年7月の2件
CVE番号 5件すべて公表と同時に採番 stream側は2日後に採番、RedisBloom側は未採番
公式アドバイザリ Redis公式ブログで解説記事あり リリースノートのみ
主な攻撃面 RESTORE 3件 / unblock client 1件 / Lua 1件 RESTORE 2件
発見の経緯 複数の研究チーム(実名でクレジット) AIエージェントによる発見と主張(未検証)
脆弱性の種別 UAF・不正メモリアクセス 二重解放(CWE-415)・境界外書き込み
相互の関係 CVE-2026-66373 は CVE-2026-25243 の不完全修正に起因(NVD明記)

同じコマンドの、同じデシリアライズ経路が2か月で2度破られている。RESTORE はシリアライズされたバイト列を受け取ってメモリ上のデータ構造を復元する処理であり、攻撃者が構造体のレイアウトを直接指定できるという点で本質的に危険な面を持つ。5月の修正でも7月の修正でも、入っているのは「ヘッダの自己申告を信じる前に実データと突き合わせる」という同種のガードだ。

この事件から実務的に持ち帰れるのは、AIの能力評価の話よりも、次の3点だと考えている。

1. CVE番号は遅れて来る。 ベンダーのリリースが先、CVEが後。今回は2日、RedisBloom側は執筆時点でまだ来ていない。CVE照合型のスキャナだけに依存すると、この期間は空白になる。使っているミドルウェアのリリースフィードを直接購読する運用が要る。

2. 攻撃コストの下がり方が変わった。 「AIが19件を90分で」という主張の真偽はさておき、PoCが事件から1日で公開され400近いスターを集めるという速度は事実である。防御側の「パッチ適用までの猶予」は縮む方向にしか動かない。

3. 同じ攻撃面は繰り返し狙われる。 一度脆弱性が出た経路は、修正が不完全なら必ず再訪される。今回はNVD自身が「不完全な修正が原因」と明記した。自組織のインシデント対応でも、修正後に同じ経路を再テストする工程を入れる価値がある。

まとめ

CVE-2026-66373(CVSS 7.5 HIGH / CWE-415)は、stream の RESTORE ペイロードで同一NACKを2つのconsumerに共有させ、XGROUP DELCONSUMER で二重解放を起こす脆弱性。Redis 8.8.0 未満が対象
・修正版は 6.2.23 / 7.2.15 / 7.4.10 / 8.2.8 / 8.4.5 / 8.6.5 / 8.8.1。2026年7月23日に1時間38分で一斉公開された
RedisBloom/TDigest の境界外書き込みは執筆時点でCVE番号が無い。CVE照合型のスキャナには映らないため、モジュール版数の直接確認が必要
・「AIエージェントが19件の0dayを90分で発見」は研究者の自己申告で第三者検証なし。Redisのリリース・修正差分・NVD登録は一次ソースで確認済み
・確認は redis-cli INFO server でバージョン、MODULE LIST でモジュール、ACL GETUSER defaultRESTORE の可否を見る3段構え
・すぐ更新できない場合の暫定緩和は ACL SETUSER default -restore。ただし MIGRATE やスロット移行を壊す可能性があるため事前確認が要る

参照ソース

redis/redis — Release 7.4.10(公式リリースノート) — stream共有NACK修正の記述全文、公開日時(2026-07-23 18:01 UTC)
redis/redis — Release 8.8.1(公式リリースノート) — RedisBloom/TDigest の境界外書き込み修正、8.8系だけ内容が異なる根拠
NVD — CVE-2026-66373 — CVSS v3.1 7.5 HIGH(AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H)、CWE-415、登録日時、CVE-2026-25243の不完全修正である旨
redis/redis PR #15081 — Reject corrupt stream RDB with shared NACK across consumersrdbLoadObject に入ったガードの実装と回帰テスト、2026-04-23 マージ
RedisBloom PR #1044 — MOD-13409 Harden RDB loading — Bloom/Cuckoo/TDigest のRDB検証追加、backport の経緯
Kimi K3 Agents Found Redis Zero-Days and Built RCE Exploit, Researchers Say(The Hacker News) — 研究者の主張と「自己申告のまま」という但し書き、悪用未報告の記述
Kimi K3: Chinese AI finds several zero-day vulnerabilities in redis database(heise online) — 報道時点でCVE・重大度評価が未整備だった旨