公開日: 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 による予期しないコマンド実行
#### 修復方法(アップグレードなし)
**方法 1 — ACL による RESTORE のブロック:**(CVE-2026-25243 と同様)```bash
redis-cli ACL SETUSER default -restore
redis-cli ACL SAVE
方法2 — 移除RedisTimeSeries模块(如果不需要):```bash redis-cli MODULE UNLOAD timeseries
Sau đó xóa dòng sau khỏi `redis.conf`:```
loadmodule /path/to/redistimeseries.so
方法3 — 仅升级模块(不升级Redis):
下载已修补的模块版本:
redis-cli MODULE UNLOAD timeseries redis-cli MODULE LOAD /path/to/new/redistimeseries.so
### CVE-2026-25589
| 属性 | 値 |
| ----------- | ------------------------------------------------------------------------------ |
| **タイトル** | RedisBloom モジュールを使用した RESTORE における無効なメモリアクセス |
| **CVSS 4.0** | **7.7 (HIGH)** |
| **CWE** | CWE-20 + CWE-122 + CWE-787 (Out-of-Bounds Write) + CWE-190 (Integer Overflow) |
| **ベクター** | `AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N` |
| **条件** | 認証済み + RESTORE 権限 + **RedisBloom モジュールがロード済み** |
| **範囲** | Redis OSS/CE + RedisBloom モジュール |
#### 技術的説明
この脆弱性は、RedisBloom モジュールが RESTORE ペイロードを処理する際の複数のサブイシューで構成されています。
1. **Out-Of-Bounds read/write** (Daniel Firer) — 割り当てられたメモリ範囲外の読み取り/書き込み
2. **Integer overflow、heap buffer overflow、および OOB read/write** (Joseph Surin) — 整数オーバーフローによるヒープバッファオーバーフロー
RedisBloom モジュールがロードされている場合、攻撃者は特別に細工された RESTORE ペイロードを送信し、Bloom filter、Cuckoo filter、Count-Min Sketch、または Top-K データのデシリアライズ処理中に上記のエラーを悪用できます。
#### 検出の兆候
- RedisBloom モジュールに関連するスタックトレースを伴う Redis のクラッシュ
- RedisBloom モジュールがロードされている (`MODULE LIST` に bf/bloom が表示される)
- Bloom filter 内のデータが破損している、または異常に変更されている
#### 修正方法 (アップグレードなし)
**方法 1 — ACL による RESTORE のブロック:** (CVE-2026-25243 と同様)```bash
redis-cli ACL SETUSER default -restore
redis-cli ACL SAVE
方法2 — 卸载RedisBloom模块(如果不需要):```bash redis-cli MODULE UNLOAD bf
`redis.conf` から次の行を削除します:```
loadmodule /path/to/redisbloom.so
方法3 — 仅升级模块(不升级Redis):
下载已修补的模块版本:
---
### CVE-2026-23631
| 属性 | 値 |
| ------------- | ---------------------------------------------------------------- |
| **タイトル** | Master-Replica 同期を介した Lua Use-After-Free |
| **CVSS 4.0** | **6.1 (MEDIUM)** |
| **CWE** | CWE-416 (Use After Free) |
| **ベクター** | `AV:N/AC:H/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N` |
| **条件** | 認証済み + **replica** で `replica-read-only` = **disabled** |
| **影響範囲** | Lua スクリプティングを備えたすべての Redis OSS/CE、**replica のみ** |
| **コードネーム** | "DarkReplica" (Yoni Shiraz, Wiz Zeroday Cloud) |
#### 技術的説明
認証済みの攻撃者は、master-replica 同期メカニズムを悪用して特別に細工された Lua スクリプトを送信し、replica 上の Lua エンジンで use-after-free を引き起こす可能性があります。
**重要な条件:** このバグは、`replica-read-only disabled`(つまり書き込み可能な replica)で構成された **replica にのみ影響**します。これはデフォルト構成ではありません — デフォルトの `replica-read-only` は `yes` です。
replica が読み取り専用モード(デフォルト)で構成されている場合、インスタンスは**影響を受けません**。
#### 兆候
- Lua エンジンからのスタックトレースを伴う replica 上の Redis クラッシュ
- replica 上の `replica-read-only` = `no` 構成
- replica 上での不明なコマンド実行
- replica への許可されていないネットワーク接続
#### 緩和策(アップグレードなし)
**方法 1 — replica-read-only を有効にする(推奨、これがデフォルトです):**```bash
# Runtime
redis-cli CONFIG SET replica-read-only yes
# Trong redis.conf:
replica-read-only yes
方法2 — 通过ACL阻止Lua脚本执行:```bash redis-cli ACL SETUSER default -@scripting redis-cli ACL SETUSER default -eval -evalsha -script -function -fcall -fcall_ro redis-cli ACL SAVE
**方法3 — 禁用Lua命令(需要重启Redis):**```bash
# Thêm vào redis.conf:
rename-command EVAL ""
rename-command EVALSHA ""
rename-command SCRIPT ""
rename-command FUNCTION ""
rename-command FCALL ""
rename-command FCALL_RO ""
--scan → 診断、全CVEをチェック--fix-... → 特定のCVEに対する修正措置を適用```
$ ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh
→ hiển thị banner + HELP + thoát### システム要件
- **OS:** Linux(Ubuntu、Debian、CentOS、RHEL、...)
- **ツール:** `redis-cli`(通常は `redis-tools` または `redis` パッケージに含まれています)
- **権限:** `redis.conf` ファイルの読み取り/書き込み権限(修正用)
- **接続:** チェック対象の Redis インスタンスへのネットワーク接続
### redis-cli のインストール(未導入の場合)```bash
# Ubuntu/Debian
sudo apt update && sudo apt install -y redis-tools
# CentOS/RHEL 7
sudo yum install -y redis
# CentOS/RHEL 8+/Fedora
sudo dnf install -y redis
# Hoặc từ source
wget https://download.redis.io/releases/redis-stable.tar.gz
tar xzf redis-stable.tar.gz
cd redis-stable && make redis-cli
sudo cp src/redis-cli /usr/local/bin/
chmod +x CVE-2026-25589-25588-25243-23631-23479-REDIS.sh
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --help
#### 2. 全CVEスキャン(診断)```bash
# Local Redis
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan
# Redis từ xa
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-H 192.168.1.100 -p 6379 -a "your_password"
# Với ACL user
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-H 10.0.0.50 -p 6380 -u admin -a "admin_password"
# Qua Unix socket
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-s /var/run/redis/redis-server.sock
# Kèm xuất báo cáo
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-o redis_cve_report_$(date +%Y%m%d).txt
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-cve-23479 ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-cve-25243 -H 10.0.0.1 -a mypassword ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-cve-25588 ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-cve-25589 ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-cve-23631 -c /etc/redis/redis.conf
#### 4. グループでのクイック修正(推奨)```bash
# Chan RESTORE → bao ve 3/5 CVE (25243 + 25588 + 25589)
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-restore
# Chan blocking commands → bao ve CVE-2026-23479
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-blocking
# Chan Lua + bat replica-read-only → bao ve CVE-2026-23631
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-lua
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all
-c /etc/redis/redis.conf
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all --no-backup
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all
-H 10.0.0.1 -p 6379 -a mypassword
### 完全なパラメータ表
#### アクションパラメータ(ACTION)— 必須
| パラメータ | 機能 | 保護されるCVE数 |
| ----------------- | --------------------------------------- | ----------------------------- |
| *(パラメータなし)* | 使用方法を表示 | — |
| `--scan` | 5つのCVEすべてを診断スキャン | — |
| `--fix-all` | すべてのCVEを修正 | **5/5** |
| `--fix-restore` | **[高速]** RESTOREコマンドのみブロック | **3/5** (25243, 25588, 25589) |
| `--fix-blocking` | **[高速]** blockingコマンドのみブロック | **1/5** (23479) |
| `--fix-lua` | **[高速]** Luaをブロック + replica-read-onlyを有効化 | **1/5** (23631) |
| `--fix-cve-23479` | CVE-2026-23479を修正 | 1/5 |
| `--fix-cve-25243` | CVE-2026-25243を修正 | 1/5 |
| `--fix-cve-25588` | CVE-2026-25588を修正 | 1/5 |
| `--fix-cve-25589` | CVE-2026-25589を修正 | 1/5 |
| `--fix-cve-23631` | CVE-2026-23631を修正 | 1/5 |
#### 接続パラメータ
| パラメータ | 説明 | デフォルト |
| --------------------- | ----------------------- | ------------ |
| `-H, --host HOST` | Redisホストアドレス | `127.0.0.1` |
| `-p, --port PORT` | Redisポート | `6379` |
| `-a, --pass PASS` | Redisパスワード | *(空)* |
| `-u, --user USER` | ACLユーザー名 | `default` |
| `-s, --socket PATH` | Unixソケットパス | *(空)* |
#### 追加パラメータ
| パラメータ | 説明 | デフォルト |
| --------------------- | --------------------------------------- | -------------------------- |
| `-h, --help` | ヘルプを表示 | — |
| `-c, --config FILE` | redis.confのパス | `/etc/redis/redis.conf` |
| `-o, --output FILE` | レポートをファイルに出力(`--scan`のみ)| *(空)* |
| `--redis-cli PATH` | redis-cliバイナリのパス | `redis-cli` (PATHから) |
| `--no-backup` | 修正前にconfigをバックアップしない | `false` |
### 終了コード(Exit Codes)
| コード | 意味 |
| ------ | ------------------------------------------------------- |
| `0` | 成功 — CVEが検出されないか、修正が完了 |
| `1` | エラー: redis-cliが見つからないか、接続できない |
| `2` | `--scan`が少なくとも1つのCVEを検出 — 修正が必要 |
### スキャン時の出力結果(`--scan`)```
╔══════════════════════════════════════════════════════════════════════╗
║ REDIS CVE SCANNER & MITIGATION TOOL ║
╚══════════════════════════════════════════════════════════════════════╝
[*] THONG TIN REDIS INSTANCE
Host:Port : 127.0.0.1:6379
Version : 7.2.5
Mode : standalone
Role : master
Modules : timeseries bf
═══════════════════════════════════════════════════════════════════════
[1/5] CVE-2026-23479 - Use-after-free trong Unblock Client Flow
CVSS 7.7 (HIGH) | RCE
═══════════════════════════════════════════════════════════════════════
[✗] CO KHA NANG BI ANH HUONG - Redis 7.2.5 (can >= 7.2.14)
... (CVE 2-5 tuong tu)
╔══════════════════════════════════════════════════════════════════════╗
║ TOM TAT KET QUA ║
╚══════════════════════════════════════════════════════════════════════╝
[✗] CVE-2026-23479 - VULNERABLE
[✗] CVE-2026-25243 - VULNERABLE
[✗] CVE-2026-25588 - VULNERABLE
[✗] CVE-2026-25589 - VULNERABLE
[✓] CVE-2026-23631 - OK
Ket qua: 1 PASS / 4 VULNERABLE
═══════════════════════════════════════════════════════════════════════
[!] Phat hien 4 CVE. Su dung cac tuy chon --fix-... de khac phuc.
VD: ./script.sh --fix-restore # Chan RESTORE (3 CVE)
VD: ./script.sh --fix-blocking # Chan blocking (1 CVE)
VD: ./script.sh --fix-lua # Chan Lua (1 CVE)
VD: ./script.sh --fix-all # Khac phuc toan bo
═══════════════════════════════════════════════════════════════════════
--fix-restore 実行時の出力結果```╔══════════════════════════════════════════════════════════════════════╗ ║ REDIS CVE SCANNER & MITIGATION TOOL ║ ╚══════════════════════════════════════════════════════════════════════╝
[*] THONG TIN REDIS INSTANCE Host:Port : 127.0.0.1:6379 Version : 7.2.5 ...
╔══════════════════════════════════════════════════════════════════════╗ ║ FIX NHANH: Chan RESTORE (CVE-2026-25243 + 25588 + 25589) ║ ╚══════════════════════════════════════════════════════════════════════╝ Bao ve 3/5 CVE chi voi 1 lenh chan RESTORE
[+] Da backup redis.conf toi: /etc/redis/redis.conf.cve-backup-20260508_120000 [*] Chan RESTORE qua ACL (khong can restart) => ACL SETUSER default -restore ... OK => ACL SAVE ... OK
[*] rename-command RESTORE "" (can restart) => Vo hieu hoa: rename-command RESTORE "" [!] CAN RESTART REDIS de rename-command co hieu luc
[✓] Da chan RESTORE. Cac CVE duoc bao ve:
---
## 一般的な修復方法
### 方法1: ACL(Redis >= 6.0)— 推奨
これは**最も安全かつ柔軟な方法**であり、Redisの再起動は不要です。```bash
# Tao ACL user an toan cho ung dung
redis-cli ACL SETUSER app_user on >StrongPassword123 ~* \
+@read \ # Quyen doc du lieu
+@write \ # Quyen ghi du lieu
-@dangerous \ # CHAN tat ca lenh nguy hiem (gồm RESTORE)
-@admin \ # CHAN lenh quan tri
-@scripting \ # CHAN Lua scripting
-@blocking \ # CHAN blocking commands
-@keyspace \ # CHAN keyspace notifications
-@pubsub # CHAN pub/sub (neu khong dung)
# Vo hieu hoa default user
redis-cli ACL SETUSER default off
# Luu ACL vinh vien
redis-cli ACL SAVE
redis.confに以下の行を追加します:```conf
rename-command RESTORE ""
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 XREAD "" rename-command XREADGROUP ""
rename-command EVAL "" rename-command EVALSHA "" rename-command SCRIPT "" rename-command FUNCTION "" rename-command FCALL "" rename-command FCALL_RO ""
その後、Redisを再起動します:```bash
sudo systemctl restart redis-server
# hoặc
sudo service redis-server restart
protected-mode yes bind 127.0.0.1 192.168.1.10 # Chi lang nghe IP tin cay
iptables -A INPUT -p tcp --dport 6379 -s 127.0.0.1 -j ACCEPT iptables -A INPUT -p tcp --dport 6379 -s 10.0.0.0/8 -j ACCEPT iptables -A INPUT -p tcp --dport 6379 -j DROP
iptables-save > /etc/iptables/rules.v4
### 方法4:以最小权限运行Redis```bash
# Tao user redis khong co shell
sudo useradd -r -s /bin/false redis
# Chown thu muc Redis
sudo chown -R redis:redis /var/lib/redis
sudo chown -R redis:redis /etc/redis
# Chay Redis duoi user redis
sudo -u redis redis-server /etc/redis/redis.conf
redis-cli MODULE LIST
redis-cli MODULE UNLOAD timeseries # CVE-2026-25588 redis-cli MODULE UNLOAD bf # CVE-2026-25589
---
## リスク評価 — 内部Redisシステム / Sentinel
このセクションは、ファイアウォール(Fortinet、iptablesなど)で保護され、**インターネットへの直接接続がない**内部ネットワーク上で動作する**Redis Sentinel**クラスタまたはスタンドアロンRedisに関するものです。
### 概要
| 現在の保護レベル | リスク軽減効果? | アップグレードは必要か? |
| ------------------------------- | -------------------------------------------------------------- | ---------------------------------------- |
| インターネットアクセスなし | **はい** — 外部からの攻撃者を排除 | 緊急ではない |
| Fortinetファイアウォール(IPS/DPI搭載) | **はい** — 送信元IPをフィルタリング、IPSが異常なペイロードを検出可能 | 緊急ではない |
| iptables(送信元IP制限) | **はい** — 許可されたIPのみがRedisポートに接続可能 | 緊急ではない |
| **上記3つの対策の組み合わせ** | **悪用確率を非常に低く抑える** | **緊急ではないが、計画を立てるべき** |
### 重要ポイント: なぜファイアウォールだけでは不十分なのか?
5つのCVEすべてに共通点があります: 攻撃者はRedisに対して**認証済み**である必要があります(PR:L — CVSSベクターにおける特権レベル: 低)。ファイアウォールは許可されていないIPからの接続をブロックしますが、以下の脅威からは**保護しません**:
| 脅威 | 発生可能性 | 悪用された場合の影響 |
| ------------------------------------------------------------------------------------------------------------------ | ----------------------------- | ---------------------------------------------------------------------------- |
| **悪意のある内部従業員** — 内部ネットワークへのアクセス権 + Redisパスワードを知っている | 低いが排除はできない | Redisサーバー上での**RCE**、特権昇格、データ窃取 |
| **内部マシンの乗っ取り(ラテラルムーブメント)** — 攻撃者がネットワーク内の任意の1台に侵入し、そこからRedisを攻撃 | 中程度 | Redisデータ全体が窃取/改変/削除される; 攻撃者はバックドアを仕掛ける可能性 |
| **ファイアウォールの設定ミス** — 誤ったルール変更によりRedisポートが外部に公開される | 低い | インターネットへの直接公開と同等に |
| **サプライチェーン / サードパーティ** — パートナーやベンダーが内部ネットワークへのVPN接続を持っている | 低い | RCE、データ流出 |
| **ファイアウォール/ネットワーク自体の脆弱性** — 攻撃者が別の脆弱性を通じてファイアウォールを突破 | 非常に低い | 内部システム全体が影響を受ける |
### 定量的リスク分析```
Rủi ro = Xác suất khai thác × Hậu quả
Với firewall + air-gap:
= (RẤT THẤP: 0.5% - 2%/năm) × (NGHIÊM TRỌNG: RCE toàn hệ thống, mất toàn bộ dữ liệu)
= RỦI RO TRUNG BÌNH — vẫn đáng quan tâm
Redis Sentinel クラスタには、独自のリスクが追加されます:
| Sentinel 攻撃ベクトル | 説明 | 関連 CVE |
|---|---|---|
| Sentinel 乗っ取り — 攻撃者が Sentinel ノードを乗っ取り、そこから悪意のあるレプリカへフェイルオーバーさせる | Sentinel は専用ポート(通常 26379)で通信するため、個別に保護されていない場合 | CVE-2026-23631(レプリカが replica-read-only no の場合) |
| レプリカ昇格 — 乗っ取られたレプリカがマスターに昇格される | クラスタ全体のデータが改ざんされる | 全 RESTORE CVE(25243、25588、25589) |
| マスター-レプリカ同期 — 攻撃者が同期フローを傍受する | 同期中にデータが盗まれる | CVE-2026-23631 |
| 優先度 | アクション | 実行時間 | ダウンタイムが必要か |
|---|---|---|---|
| P0 — 今すぐ | 全ノード(マスター + レプリカ + Sentinel)でチェックスクリプトを実行: ./CVE-...sh -H <ip> -p <port> -a <pass> | ノードあたり 2〜5 分 | なし |
| P0 — 今すぐ | 全レプリカで replica-read-only yes を確認: redis-cli CONFIG GET replica-read-only | ノードあたり 1 分 | なし |
| P1 — 今週中 | ACL で RESTORE をブロック(再起動不要): redis-cli ACL SETUSER default -restore; redis-cli ACL SAVE | ノードあたり 2 分 | なし |
| P1 — 今週中 | ACL で @blocking コマンドをブロック(CVE-2026-23479) | ノードあたり 2 分 | なし |
| P1 — 今週中 | Lua を使用しない場合、ACL で @scripting コマンドをブロック(CVE-2026-23631) | ノードあたり 2 分 | なし |
| P2 — 次のメンテナンス窓口 | redis.conf に rename-command RESTORE ""、rename-command EVAL "" などを追加 | 10 分(再起動あり) | あり(Redis 再起動) |
| P2 — 次のメンテナンス窓口 | Redis をパッチ適用済みバージョン(6.2.22、7.2.14、7.4.9、8.2.6、8.4.3、8.6.3)にアップグレード | クラスタあたり 30〜60 分 | あり(クラスタ全体の再起動) |
redis-cli -h <node_ip> -p 6379 -a ACL SETUSER app_user on >StrongPass123 ~*
+@read +@write
-@dangerous -@admin -@scripting -@blocking
-restore -debug
redis-cli -h <node_ip> -p 6379 -a ACL SETUSER default off
redis-cli -h <node_ip> -p 6379 -a ACL SAVE
redis-cli -h <node_ip> -p 6379 -a --user app_user --pass StrongPass123 PING
Dưới đây là bản dịch sang tiếng Nhật cho chunk 71/91:
---
- **`--no-verify`**: Bỏ qua xác minh chữ ký và checksum khi tải xuống (mặc định: `false`).
- **`--proxy`**: Chỉ định proxy HTTP(S) để sử dụng cho các yêu cầu mạng (ví dụ: `http://proxy.example.com:8080`).
- **`--timeout`**: Đặt thời gian chờ tối đa (tính bằng giây) cho mỗi yêu cầu mạng (mặc định: `30`).
- **`--retries`**: Số lần thử lại tối đa cho các yêu cầu mạng bị lỗi (mặc định: `3`).
- **`--verbose`**: Bật đầu ra chi tiết để gỡ lỗi (mặc định: `false`).
### Ví dụ sử dụng
```bash
# Tải xuống và cài đặt công cụ với cấu hình mặc định
kitploit install metasploit
# Cài đặt một phiên bản cụ thể của công cụ
kitploit install nmap --version 7.94
# Cài đặt nhiều công cụ cùng lúc
kitploit install sqlmap nikto wpscan
# Cài đặt công cụ vào thư mục tùy chỉnh
kitploit install hydra --install-dir /opt/tools
# Cập nhật tất cả các công cụ đã cài đặt
kitploit update --all
# Liệt kê tất cả các công cụ có sẵn
kitploit list
# Tìm kiếm công cụ theo tên hoặc mô tả
kitploit search "web scanner"
# Xem thông tin chi tiết về một công cụ
kitploit info burpsuite
# Gỡ cài đặt một công cụ
kitploit uninstall aircrack-ng
Sau khi cài đặt, Kitploit sẽ tạo cấu trúc thư mục sau:
~/.kitploit/
├── config.yaml # Tệp cấu hình chính
├── tools/ # Thư mục chứa các công cụ đã cài đặt
│ ├── metasploit/
│ ├── nmap/
│ └── ...
├── cache/ # Bộ nhớ cache cho các bản tải xuống
└── logs/ # Tệp nhật ký hoạt động
Tệp config.yaml cho phép bạn tùy chỉnh hành vi của Kitploit. Dưới đây là một ví dụ:
# Cấu hình Kitploit
install_dir: ~/.kitploit/tools
cache_dir: ~/.kitploit/cache
log_dir: ~/.kitploit/logs
default_timeout: 30
default_retries: 3
verify_signatures: true
proxy: ""
verbose: false
Kitploit có thể được tích hợp vào các pipeline CI/CD để tự động hóa việc cài đặt và cập nhật các công cụ bảo mật. Dưới đây là một ví dụ về GitHub Actions:
name: Security Tools Setup
on:
push:
branches: [ main ]
jobs:
setup-tools:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Kitploit
run: |
curl -sSL https://raw.githubusercontent.com/kitploit/kitploit/main/install.sh | bash
- name: Install Security Tools
run: |
kitploit install nmap sqlmap nikto
- name: Run Security Scan
run: |
nmap -sV target.example.com
Nếu bạn gặp sự cố khi sử dụng Kitploit, hãy tham khảo các mẹo sau:
--no-verify nếu bạn tin tưởng nguồn tải xuống.Chúng tôi hoan nghênh mọi đóng góp từ cộng đồng! Nếu bạn muốn thêm công cụ mới hoặc cải thiện Kitploit, vui lòng:
Kitploit được phát hành dưới giấy phép MIT. Xem tệp LICENSE để biết thêm chi tiết.
Lưu ý: Kitploit chỉ nên được sử dụng cho mục đích giáo dục và kiểm tra bảo mật hợp pháp. Người dùng chịu trách nhiệm tuân thủ tất cả các luật và quy định hiện hành.
Đây là phần cuối của tài liệu README cho Kitploit.```bash
redis-cli -h <sentinel_ip> -p 26379 -a <sentinel_pass> ACL SETUSER default
-@dangerous -@admin -@scripting -@blocking -restore
redis-cli -h <sentinel_ip> -p 26379 -a <sentinel_pass> ACL SAVE
### 決定フロー: 今すぐアップグレードする必要があるか?```
Hệ thống Redis của bạn có public-facing không?
├── CÓ → NÂNG CẤP NGAY hoặc áp dụng workaround TRONG 24H
└── KHÔNG (nội bộ / air-gapped)
├── Có dùng Lua scripting (EVAL/EVALSHA)?
│ ├── CÓ → CVE-2026-23631: Kiểm tra replica-read-only, chặn @scripting qua ACL
│ └── KHÔNG → Rủi ro thấp hơn
├── Có dùng RedisTimeSeries hoặc RedisBloom module?
│ ├── CÓ → CVE-2026-25588/25589: Chặn RESTORE qua ACL, nâng cấp module
│ └── KHÔNG → Không bị ảnh hưởng bởi 25588/25589
├── Có dùng blocking commands (BLPOP, XREAD, ...)?
│ ├── CÓ → CVE-2026-23479: Chặn @blocking qua ACL hoặc rename-command
│ └── KHÔNG → Chặn @blocking để an toàn (không ảnh hưởng)
└── KẾT LUẬN:
├── Áp dụng ACL workaround NGAY TRONG TUẦN (không downtime)
└── Lên kế hoạch nâng cấp TRONG MAINTENANCE WINDOW TIẾP THEO
ファイアウォール+ネットワーク分離により、悪用の確率は非常に低くなるが、悪用された場合の影響は依然としてシステム全体のRCEである。 修正コストがほぼゼロ(再起動不要のACL数行を追加するだけ)であるため、保護対策の適用はリスク管理上有利な判断である。慌てて緊急アップグレードする必要はないが、今週中にACLの回避策を適用し、次のメンテナンスウィンドウでアップグレードを計画すべきである。
| カテゴリ | 説明 | CVEへの影響 |
|---|---|---|
@dangerous | 危険なコマンド(RESTORE、FLUSHDB、FLUSHALL、KEYS、SHUTDOWN、DEBUG、CONFIGを含む) | CVE-2026-25243、25588、25589 |
@blocking | ブロッキングコマンド(BLPOP、BRPOP、BZPOPMIN、XREAD、WAITなど) | CVE-2026-23479 |
@scripting | Luaスクリプティング(EVAL、EVALSHA、SCRIPT、FUNCTION、FCALL) | CVE-2026-23631 |
@admin | 管理コマンド(CONFIG、ACL、CLIENT、CLUSTER、MONITOR、SHUTDOWNなど) | 一般的な保護 |
@keyspace | keyspace関連コマンド(KEYS、SCAN、FLUSHDB、FLUSHALLなど) | 一般的な保護 |
@read | データ読み取りコマンド(GET、HGET、LRANGE、SMEMBERS、ZRANGEなど) | 安全 |
@write | データ書き込みコマンド(SET、HSET、LPUSH、SADD、ZADDなど) | 安全 |
redis-cli ACL SETUSER admin on >AdminPass123 ~* +@all
redis-cli ACL SETUSER app on >AppPass123 ~*
+@read
+@write
-@dangerous
-@admin
-@scripting
-@blocking
-restore
-debug
redis-cli ACL SETUSER reader on >ReaderPass123 ~*
+@read
-@dangerous
-@admin
-@scripting
redis-cli ACL SETUSER default off
redis-cli ACL SAVE
redis-cli ACL LIST
### 効果的なACLチェック```bash
# Liet ke tat ca ACL rules
redis-cli ACL LIST
# Kiem tra quyen cua mot user
redis-cli ACL GETUSER app
# Kiem tra user hien tai
redis-cli ACL WHOAMI
# Xem log vi pham ACL
redis-cli ACL LOG
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan
-H <redis_host> -p -a
-o report_$(date +%Y%m%d_%H%M%S).txt
### 2. 複数のRedisインスタンスを一括チェック
`redis_hosts.txt`ファイルを作成します:```
# Format: host:port:password:user
10.0.0.1:6379:pass1:default
10.0.0.2:6379:pass2:default
10.0.0.3:6380:pass3:admin
Script kiểm tra hàng loạt:```bash #!/bin/bash
BATCH_RESULT="batch_result_$(date +%Y%m%d_%H%M%S).txt"
while IFS=':' read -r host port pass user; do [[ "$host" =~ ^#.* ]] && continue # Bo qua comment [[ -z "$host" ]] && continue # Bo qua dong trong
echo "============================================" | tee -a "$BATCH_RESULT"
echo "Kiem tra: $host:$port" | tee -a "$BATCH_RESULT"
echo "============================================" | tee -a "$BATCH_RESULT"
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-H "$host" -p "${port:-6379}" \
-a "${pass:-}" -u "${user:-default}" \
2>&1 | tee -a "$BATCH_RESULT"
echo "" | tee -a "$BATCH_RESULT"
done < redis_hosts.txt
echo "Bao cao tong hop: $BATCH_RESULT"
### 3. cronへの統合(毎日のチェック)```bash
# Them vao crontab (chay hang ngay luc 7:00 AM)
0 7 * * * /opt/scripts/CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-H 127.0.0.1 -p 6379 -a mypassword \
-o /var/log/redis/cve_report_$(date +\%Y\%m\%d).txt \
> /dev/null 2>&1
redis-security-scan:
stage: security
image: redis:7-alpine
script:
- chmod +x CVE-2026-25589-25588-25243-23631-23479-REDIS.sh
- ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan
-H $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASS
-o cve_report.txt
artifacts:
paths:
- cve_report.txt
when: always
allow_failure: true
---
## よくある質問(FAQ)
### Q: `--fix-...` を適用した後、Redis を再起動する必要がありますか?
**A:** はい、`rename-command` の変更については、Redis の再起動後にのみ有効になります。`CONFIG SET` による変更(`protected-mode`、`replica-read-only` など)は即座に有効になります。`ACL SETUSER` + `ACL SAVE` による変更は即座に有効になり、**再起動は不要です**。ACL のみを使用する場合(`--fix-restore`、`--fix-blocking`、`--fix-lua`)、再起動は必要ありません。スクリプトは多層防御のため、常に ACL(ランタイム)と rename-command(再起動が必要)を同時に適用します。
### Q: RESTORE のブロックは通常の運用に影響しますか?
**A:** `RESTORE` コマンドは通常、以下の場合にのみ使用されます:
- バックアップからのデータ復元
- インスタンス間のデータ移行
- カスタムデータ同期
アプリケーションが RESTORE を使用しない場合、このコマンドをブロックしても安全です。使用する場合は、RESTORE 権限を持つ専用の ACL ユーザーを作成し、管理目的のみに使用してください。
### Q: Redis < 6.0 を使用していますが、ACL が利用できません。どうすればよいですか?
**A:** Redis < 6.0 の場合、`rename-command` のみを使用してコマンドを無効化できます。手順は以下のとおりです:
1. `rename-command RESTORE ""` を redis.conf に追加する
2. blocking コマンド用の `rename-command` を追加する
3. `protected-mode yes` を有効にする
4. 強力なパスワードで `requirepass` を設定する
5. ファイアウォールで接続を制限する
6. Redis を再起動する
### Q: RedisTimeSeries/RedisBloom モジュールがロードされているかどうかを確認するにはどうすればよいですか?
**A:** 次のコマンドを実行します:```bash
redis-cli MODULE LIST
出力には、読み込み済みモジュールのリストとバージョンが表示されます。timeseries または bf が表示されない場合、そのモジュールは読み込まれていません。
--fix-all / --fix-restore / --fix-... は本番環境で安全ですか?A: fix コマンドは安全な変更を実行します:
--no-backup を使用しない限り)-restore、-@blocking、-@scripting):即座に有効になり、ダウンタイムなし、簡単に元に戻せます推奨事項:本番環境では、まず --fix-restore、--fix-blocking、--fix-lua を使用することを優先してください(ACL のみで、再起動は不要です)。その後、rename-command を使用して再起動するためのメンテナンスウィンドウをスケジュールしてください。
--fix-... による変更を元に戻す(ロールバック)にはどうすればよいですか?A:
CONFIG SET を使用した場合:Redis を再起動すると、ファイルから設定が復元されますACL SETUSER を使用した場合:ACL SETUSER <user> +<cmd> を使用して権限を復元しますA: はい、可能であれば。 パッチ適用済みバージョンへのアップグレードが最も根本的な解決策です。このスクリプトは以下のようなケースを対象としています:
A: 緊急のアップグレードは不要ですが、回避策を適用し、アップグレードを計画すべきです。理由は以下の通りです:
-restore -@blocking -@scripting を追加するのに 2 分かかり、ダウンタイムはありません推奨ロードマップ:
rename-command を追加詳細は リスク評価 — 内部 Redis システム / Sentinel を参照してください。
免責事項: このドキュメントは、Redis セキュリティアドバイザリおよび NVD などの公開情報に基づいて作成されています。ユーザーは、適用前にご自身の環境に適した修正措置を確認し、検証する責任を負います。