公開日: 2026-05-08 著者: TonyCao ([email protected]) 出典: Redis Security Advisory
2026年5月5日、Redis Ltd.はRedis OSS/CEの全バージョンに影響を与える5件の重大なセキュリティ脆弱性に関するセキュリティアドバイザリを公開しました。これらのCVEはすべて、悪用に成功した場合に**リモートコード実行(RCE)**につながる可能性があります。
| # | CVEコード | CVSS | 深刻度 | エラータイプ | 悪用条件 |
|---|---|---|---|---|---|
| 1 | CVE-2026-23479 | 7.7 | HIGH | Use-After-Free | 認証済み、blockingコマンド実行権限あり |
| 2 | CVE-2026-25243 | 7.7 | HIGH | Invalid Memory Access | 認証済み、RESTORE実行権限あり |
| 3 | CVE-2026-25588 | 7.7 | HIGH | Invalid Memory Access | 認証済み、RESTORE権限 + RedisTimeSeriesモジュールあり |
| 4 | CVE-2026-25589 | 7.7 | HIGH | Invalid Memory Access | 認証済み、RESTORE権限 + RedisBloomモジュールあり |
| 5 | CVE-2026-23631 | 6.1 | MEDIUM | Use-After-Free | 認証済み、replica-read-only = disabledのレプリカ |
共通点: すべてのCVEは、攻撃者がRedisインスタンスに対して認証済みであることを要求します。CVE-2026-23631は、
replica-read-only disabled設定のレプリカにのみ影響します。
| バージョンライン | 修正済みバージョン(最低) |
|---|---|
| 6.2.x | 6.2.22 |
| 7.2.x | 7.2.14 |
| 7.4.x | 7.4.9 |
| 8.2.x | 8.2.6 |
| 8.4.x | 8.4.3 |
| 8.6.x | 8.6.3 |
| モジュール | 最低バージョン |
|---|---|
| RedisTimeSeries | 1.12.14 / 1.10.24 / 1.8.23 |
| RedisBloom | 2.8.20 / 2.6.28 / 2.4.23 |
| バージョン | パッチ |
|---|---|
| 8.0.6 | 8.0.10-64 |
| 7.22.2 | 7.22.2-79 |
| 7.8.6 | 7.8.6-253 |
| 7.4.6 | 7.4.6-279 |
| 7.2.4 | 7.2.4-153 |
すべてのRedis Cloudデプロイメントは、アドバイザリ公開時点で自動的にパッチ適用済みです。
| 属性 | 値 |
|---|---|
| タイトル | Unblock Client FlowにおけるUse-After-Free |
| CVSS 4.0 | 7.7(HIGH) |
| CWE | CWE-416(Use After Free) |
| ベクター | AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
| 条件 | 認証済みの攻撃者、blockingコマンド実行権限あり |
| 範囲 | すべてのRedis OSS/CE、Redis Software <= 8.0.6 |
ブロックされたクライアント(例:BLPOPで待機中)が、ブロックされたコマンドの再実行中にevictされた場合、processCommandAndResetClient関数がエラーを返す可能性があります。現在のコードはこのケースを正しく処理しておらず、解放済みメモリ領域を参照するポインタ(use-after-free)が発生します。攻撃者はこのUAFを悪用してリモートコード実行(RCE)を行う可能性があります。
unblock client、processCommandAndResetClient関連の関数を含むスタックトレースを伴うRedisサーバークラッシュredis-serverプロセスによる不明なコマンドの実行BLPOP, BRPOP, BRPOPLPUSH, BLMOVE, BLMPOP, BZPOPMIN, BZPOPMAX, BZMPOP, WAIT, WAITAOF, XREAD, XREADGROUP
#### 修復方法(アップグレードなし)
**方法1 — ACLによるブロック(推奨):**```bash
# Chặn toàn bộ nhóm lệnh blocking
redis-cli ACL SETUSER default -@blocking
# Hoặc chặn từng lệnh cụ thể
redis-cli ACL SETUSER default -BLPOP -BRPOP -BRPOPLPUSH -BLMOVE -BLMPOP \
-BZPOPMIN -BZPOPMAX -BZMPOP \
-WAIT -WAITAOF \
-XREAD -XREADGROUP
# Lưu ACL
redis-cli ACL SAVE
方法2 — 通过rename-command禁用(需要重启Redis):```bash
rename-command BLPOP "" rename-command BRPOP "" rename-command BRPOPLPUSH "" rename-command BLMOVE "" rename-command BLMPOP "" rename-command BZPOPMIN "" rename-command BZPOPMAX "" rename-command BZMPOP "" rename-command WAIT "" rename-command WAITAOF "" rename-command XREAD "" rename-command XREADGROUP ""
**方法3 — 启用protected-mode并限制连接:**```bash
redis-cli CONFIG SET protected-mode yes
# Trong redis.conf:
protected-mode yes
bind 127.0.0.1
| 属性 | 値 |
|---|---|
| タイトル | RESTORE コマンドにおける無効なメモリアクセス |
| CVSS 4.0 | 7.7 (HIGH) |
| CWE | CWE-20 (不適切な入力検証) + CWE-122 (ヒープバッファオーバーフロー) |
| ベクター | AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
| 条件 | 認証済みの攻撃者で、RESTORE の実行権限を持つこと |
| 影響範囲 | すべての Redis OSS/CE、Redis Software <= 8.0.6 |
この脆弱性は、以下の 2 つのサブ問題で構成されます。
認証済みの攻撃者が特別に細工した RESTORE ペイロードを送信して上記の欠陥を悪用すると、redis-server プロセスのコンテキストで RCE につながる可能性があります。
方法 1 — ACL による RESTORE のブロック(推奨):```bash
redis-cli ACL SETUSER default -restore
redis-cli ACL SETUSER default -@dangerous
redis-cli ACL SAVE
**方法2 — 禁用RESTORE(需要重启Redis):**```bash
# Thêm vào redis.conf:
rename-command RESTORE ""
方法3 — 为应用程序创建独立的用户ACL:```bash
redis-cli ACL SETUSER app_user on >StrongPass123 ~*
+@read +@write
-@dangerous
-@admin
-@scripting
-@blocking
-restore
-debug
redis-cli ACL SAVE
---
### CVE-2026-25588
| 属性 | 値 |
| ------------- | ------------------------------------------------------------------ |
| **タイトル** | RedisTimeSeries モジュールを使用した RESTORE における無効なメモリアクセス |
| **CVSS 4.0** | **7.7 (HIGH)** |
| **CWE** | CWE-20 + CWE-122 |
| **ベクター** | `AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N` |
| **条件** | 認証済み + RESTORE 権限 + **RedisTimeSeries モジュールがロード済み** |
| **影響範囲** | Redis OSS/CE + RedisTimeSeries モジュール |
#### 技術的説明
**RedisTimeSeries モジュール**がロードされたインスタンスで `RESTORE` コマンドが使用されると、特別に細工されたシリアライズペイロードが time-series データの処理中に無効なメモリアクセスを引き起こす可能性があります。この脆弱性は、RedisTimeSeries モジュールが RESTORE ペイロードからデータをデシリアライズする方法に存在します。
#### 識別の兆候
- RedisTimeSeries モジュールに関連するスタックトレースを伴う Redis のクラッシュ
- RedisTimeSeries モジュールがロードされている(`MODULE LIST` に timeseries が表示される)
- redis-server による予期しないコマンド実行
#### 修復方法(アップグレードなし)