Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-25589-25588-25243-23631-23479-REDIS — 针对五个 Redis CVE 的诊断与修复脚本,提供扫描、基于 ACL 的缓解措施以及针对已认证 RCE 漏洞的配置加固指导。 | Kitploit
工具/GitHubGitHub/mgiay/cve-2026-25589-25588-25243-23631-23479-redis
漏洞分析配置审计学习与教育精选资源数据库安全
GitHubmgiay/cve-2026-25589-25588-25243-23631-23479-redis

CVE-2026-25589-25588-25243-23631-23479-REDIS

针对五个 Redis CVE 的诊断与修复脚本,提供扫描、基于 ACL 的缓解措施以及针对已认证 RCE 漏洞的配置加固指导。

查看仓库
3个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

检查与修复指南:截至 2026.05.08 的 5 个 Redis CVE

发布日期: 2026-05-08 作者: TonyCao ([email protected]) 来源: Redis 安全公告


目录

  1. 概述
  2. 受影响版本
  3. 各 CVE 详情
    • CVE-2026-23479 — 解除客户端阻塞流程中的 Use-after-free
    • CVE-2026-25243 — RESTORE 中的无效内存访问
    • CVE-2026-25588 — 带 RedisTimeSeries 模块的 RESTORE
    • CVE-2026-25589 — 带 RedisBloom 模块的 RESTORE
    • CVE-2026-23631 — 通过主从同步触发的 Lua Use-After-Free
  4. 脚本使用指南
  5. 通用修复方法
  6. 风险评估 — 内部 Redis / Sentinel 系统
  7. ACL 参考
  8. 定期检查流程
  9. 常见问题 (FAQ)

概述

2026 年 5 月 5 日,Redis Ltd. 发布了安全公告,涉及 5 个影响所有 Redis OSS/CE 版本的严重安全漏洞。如果被成功利用,所有这些 CVE 都可能导致远程代码执行 (RCE)。

#CVE 编号CVSS严重程度漏洞类型利用条件
1CVE-2026-234797.7高Use-After-Free已认证,有权执行阻塞命令
2CVE-2026-252437.7高无效内存访问已认证,有权执行 RESTORE
3CVE-2026-255887.7高无效内存访问已认证,有权执行 RESTORE + RedisTimeSeries 模块
4CVE-2026-255897.7高无效内存访问已认证,有权执行 RESTORE + RedisBloom 模块
5CVE-2026-236316.1中Use-After-Free已认证,副本且 replica-read-only = 禁用

共同点: 所有 CVE 都要求攻击者已对 Redis 实例完成认证(authenticated)。CVE-2026-23631 仅影响配置了 replica-read-only disabled 的副本。


受影响版本

Redis OSS/CE — 所有补丁之前的版本

版本系列已修复版本(最低)
6.2.x6.2.22
7.2.x7.2.14
7.4.x7.4.9
8.2.x8.2.6
8.4.x8.4.3
8.6.x8.6.3

模块 — 已修复版本

模块最低版本
RedisTimeSeries1.12.14 / 1.10.24 / 1.8.23
RedisBloom2.8.20 / 2.6.28 / 2.4.23

Redis Software(企业版)

版本补丁
8.0.68.0.10-64
7.22.27.22.2-79
7.8.67.8.6-253
7.4.67.4.6-279
7.2.47.2.4-153

Redis Cloud

所有 Redis Cloud 部署在公告发布时均已自动完成补丁更新。


各 CVE 详情

CVE-2026-23479

属性值
标题解除客户端阻塞流程中的 Use-After-Free
CVSS 4.07.7(高)
CWECWE-416(释放后使用)
向量AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
条件攻击者已认证,有权执行阻塞命令
范围所有 Redis OSS/CE,Redis Software <= 8.0.6

技术描述

当客户端处于阻塞状态(blocked)——例如正在等待 BLPOP——在重新执行被阻塞命令期间被驱逐(evict)时,processCommandAndResetClient 函数可能返回错误。当前代码未正确处理此情况,导致指针引用了已释放的内存区域(use-after-free)。攻击者可以利用 UAF 实现远程代码执行(RCE)。

识别迹象

  • Redis 服务器崩溃,堆栈跟踪中包含与 unblock client、processCommandAndResetClient 相关的函数
  • redis-server 进程执行了未定义的命令
  • 存在未经允许的网络连接到 Redis 实例

受影响的阻塞命令```

BLPOP, BRPOP, BRPOPLPUSH, BLMOVE, BLMPOP, BZPOPMIN, BZPOPMAX, BZMPOP, WAIT, WAITAOF, XREAD, XREADGROUP

root@kitploit:~
#### 修复方法(不升级)

**方法 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

Thêm vào redis.conf:

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 ""

root@kitploit:~
**方法 3 — 启用 protected-mode 并限制连接:**```bash
redis-cli CONFIG SET protected-mode yes
# Trong redis.conf:
protected-mode yes
bind 127.0.0.1

CVE-2026-25243

属性值
标题RESTORE 命令中的无效内存访问
CVSS 4.07.7(高危)
CWECWE-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 个子问题:

  1. 双重释放(Double-free) 位于 Redis 核心(由 Emil Lerner 发现)——RESTORE 处理特制的序列化 payload,导致同一指针被释放两次。
  2. 整数溢出和越界读取 位于 VectorSets(由 Joseph Surin 发现)——特制 payload 引发整数溢出,导致在已分配内存范围之外进行读取/写入。

已认证的攻击者发送特制的 RESTORE payload 以利用上述错误,可能导致在 redis-server 进程上下文中实现 RCE。

识别迹象

  • Redis 服务器异常崩溃
  • 系统文件发生变化(尤其是 Redis 的 RDB/AOF/配置所在目录)
  • 与 Redis 实例之间出现未经允许的网络连接
  • Redis 配置文件被修改

修复方法(不升级)

方法 1 — 通过 ACL 阻止 RESTORE(推荐):```bash

Chặn lệnh RESTORE

redis-cli ACL SETUSER default -restore

Hoặc chặn toàn bộ nhóm lệnh nguy hiểm

redis-cli ACL SETUSER default -@dangerous

redis-cli ACL SAVE

root@kitploit:~
**方法 2 — 禁用 RESTORE(需要重启 Redis):**```bash
# Thêm vào redis.conf:
rename-command RESTORE ""

方法 3 — 为应用程序创建独立的用户 ACL:```bash

Tao user cho ung dung chi voi quyen doc/ghi co ban

redis-cli ACL SETUSER app_user on >StrongPass123 ~*
+@read +@write
-@dangerous
-@admin
-@scripting
-@blocking
-restore
-debug

redis-cli ACL SAVE

root@kitploit:~
---

### CVE-2026-25588

| 属性        | 值                                                               |
| ----------- | ---------------------------------------------------------------- |
| **标题**    | RedisTimeSeries 模块中 RESTORE 的无效内存访问                    |
| **CVSS 4.0**| **7.7(高危)**                                                  |
| **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` 命令时,特制的序列化负载可能会在处理时间序列数据期间触发无效内存访问。该漏洞存在于 RedisTimeSeries 模块从 RESTORE 负载反序列化数据的方式中。

#### 识别迹象

- Redis 崩溃,堆栈跟踪与 RedisTimeSeries 模块相关
- 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

root@kitploit:~
然后从 `redis.conf` 中删除以下行:```
loadmodule /path/to/redistimeseries.so

方法 3 — 仅升级模块(不升级 Redis):

下载已修补的模块版本:

  • RedisTimeSeries 1.12.14(适用于 1.12 系列)
  • RedisTimeSeries 1.10.24(适用于 1.10 系列)
  • RedisTimeSeries 1.8.23(适用于 1.8 系列)```bash

Thay the file .so cu bang phien ban moi

Sau do restart Redis hoac:

redis-cli MODULE UNLOAD timeseries redis-cli MODULE LOAD /path/to/new/redistimeseries.so

root@kitploit:~
### CVE-2026-25589

| 属性        | 值                                                                             |
| ----------- | ------------------------------------------------------------------------------ |
| **标题**    | RedisBloom 模块中 RESTORE 的无效内存访问                                        |
| **CVSS 4.0**| **7.7(高危)**                                                                |
| **CWE**     | CWE-20 + CWE-122 + CWE-787(越界写入)+ CWE-190(整数溢出)                     |
| **向量**    | `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. **越界读/写**(Daniel Firer)——在已分配内存范围之外进行读/写
2. **整数溢出、堆缓冲区溢出和越界读/写**(Joseph Surin)——整数溢出导致堆缓冲区溢出

当 RedisBloom 模块被加载时,攻击者可以发送特制的 RESTORE 负载,利用上述错误在反序列化 Bloom filter、Cuckoo filter、Count-Min Sketch 或 Top-K 数据时进行攻击。

#### 识别迹象

- Redis 崩溃并出现与 RedisBloom 模块相关的堆栈跟踪
- 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

root@kitploit:~
Sau đó xóa dòng sau khỏi `redis.conf`:```
loadmodule /path/to/redisbloom.so

方法 3 — 仅升级模块(不升级 Redis):

下载已修补的模块版本:

  • RedisBloom 2.8.20(适用于 2.8 系列)
  • RedisBloom 2.6.28(适用于 2.6 系列)
  • RedisBloom 2.4.23(适用于 2.4 系列)```bash redis-cli MODULE UNLOAD bf redis-cli MODULE LOAD /path/to/new/redisbloom.so
root@kitploit:~
### CVE-2026-23631

| 属性        | 值                                                                |
| ----------- | ----------------------------------------------------------------- |
| **标题**    | 通过主从同步触发的 Lua 释放后使用漏洞                              |
| **CVSS 4.0**| **6.1(中危)**                                                    |
| **CWE**     | CWE-416(释放后使用)                                              |
| **向量**    | `AV:N/AC:H/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N`          |
| **条件**    | 已认证 + **从节点**且 `replica-read-only` = **disabled**           |
| **影响范围**| 所有启用 Lua 脚本的 Redis OSS/CE,仅影响从节点                     |
| **代号**    | "DarkReplica"(Yoni Shiraz,Wiz Zeroday Cloud)                    |

#### 技术描述

已认证的攻击者可以利用主从同步机制发送特制的 Lua 脚本,在从节点的 Lua 引擎中触发释放后使用漏洞。

**关键条件:** 该漏洞**仅影响**配置了 `replica-read-only disabled`(即从节点可写)的从节点。这**不是**默认配置——默认情况下 `replica-read-only` = `yes`。

如果从节点配置为只读模式(默认),则该实例**不受影响**。

#### 识别特征

- 从节点 Redis 崩溃,堆栈跟踪来自 Lua 引擎
- 从节点上 `replica-read-only` 配置为 `no`
- 从节点上执行了未知命令
- 存在未经授权的网络连接到从节点

#### 修复方法(无需升级)

**方法 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

root@kitploit:~
**方法 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
root@kitploit:~
### 系统要求

- **操作系统:** 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/

使用方法

1. 查看帮助```bash

Cấp quyền thực thi

chmod +x CVE-2026-25589-25588-25243-23631-23479-REDIS.sh

Chạy không tham số → hiển thị help

./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh

Hoặc tường minh

./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --help

root@kitploit:~
#### 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

3. 针对每个 CVE 的单独修复```bash

Fix tung CVE cu the

./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

root@kitploit:~
#### 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

5. 全面修复```bash

Fix tat ca CVE (co backup config)

./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all

Fix all voi file config rieng

./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all
-c /etc/redis/redis.conf

Fix all khong backup (khong khuyen nghi)

./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all --no-backup

Fix all Redis tu xa

./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all
-H 10.0.0.1 -p 6379 -a mypassword

root@kitploit:~
### 完整参数表

#### 操作参数(ACTION)— 必填

| 参数               | 功能                                    | 受保护的 CVE 数量            |
| ----------------- | -------------------------------------------- | ----------------------------- |
| *(无参数)* | 显示使用说明                   | —                             |
| `--scan`          | 全面诊断扫描 5 个 CVE                 | —                             |
| `--fix-all`       | 修复所有 CVE                         | **5/5**                       |
| `--fix-restore`   | **[快速]** 仅阻止 RESTORE 命令            | **3/5** (25243, 25588, 25589) |
| `--fix-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 socket 路径 | *(空)*    |

#### 附加参数

| 参数                 | 描述                                  | 默认值                |
| ------------------- | -------------------------------------- | ----------------------- |
| `-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`       | 修改前不备份配置      | `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:

  • CVE-2026-25243 (RESTORE double-free/OOB)
  • CVE-2026-25588 (RESTORE + RedisTimeSeries)
  • CVE-2026-25589 (RESTORE + RedisBloom)
root@kitploit:~
---

## 通用修复方法

### 方法 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

方法 2:rename-command — 需要重启 Redis

将以下行添加到 redis.conf 中:```conf

Vo hieu hoa RESTORE (CVE-2026-25243, 25588, 25589)

rename-command RESTORE ""

Vo hieu hoa blocking commands (CVE-2026-23479)

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 ""

Vo hieu hoa Lua commands (CVE-2026-23631)

rename-command EVAL "" rename-command EVALSHA "" rename-command SCRIPT "" rename-command FUNCTION "" rename-command FCALL "" rename-command FCALL_RO ""

root@kitploit:~
然后重启 Redis:```bash
sudo systemctl restart redis-server
# hoặc
sudo service redis-server restart

方法 3:网络配置 + 防火墙```bash

Trong redis.conf:

protected-mode yes bind 127.0.0.1 192.168.1.10 # Chi lang nghe IP tin cay

iptables — chi cho phep IP noi bo

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

Luu iptables

iptables-save > /etc/iptables/rules.v4

root@kitploit:~
### 方法 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

方法 5:移除不必要的模块```bash

Kiem tra module dang nap

redis-cli MODULE LIST

Go bo module khong can thiet

redis-cli MODULE UNLOAD timeseries # CVE-2026-25588 redis-cli MODULE UNLOAD bf # CVE-2026-25589

Xoa loadmodule khoi redis.conf

Tim va xoa dong:

loadmodule /path/to/redistimeseries.so

loadmodule /path/to/redisbloom.so

root@kitploit:~
---

## 风险评估 — 内部 Redis 系统 / Sentinel

本节适用于运行在内部网络中的 **Redis Sentinel** 或独立 Redis 集群,受防火墙(Fortinet、iptables 等)保护,且**无法直接连接互联网**。

### 摘要

| 现有保护级别               | 是否降低风险?                                             | 是否需要升级?                         |
| ------------------------------- | -------------------------------------------------------------- | ---------------------------------------- |
| 无法访问互联网         | **是** — 排除外部攻击者                         | 无需紧急处理                            |
| Fortinet 防火墙(含 IPS/DPI)  | **是** — 过滤源 IP,IPS 可检测异常载荷 | 无需紧急处理                            |
| iptables(限制源 IP)    | **是** — 仅允许授权的 IP 连接 Redis 端口           | 无需紧急处理                            |
| **上述三项措施组合** | **将利用概率降至极低**                           | **无需紧急处理,但应有计划** |

### 关键点:为什么防火墙还不够?

所有 5 个 CVE 都有一个共同点:攻击者必须**已通过 Redis 身份验证**(PR:L — CVSS 向量中权限要求:低)。防火墙会阻止来自未授权 IP 的连接,但**无法防御**以下威胁:

| 威胁                                                                                                         | 发生可能性               | 被利用后的后果                                                     |
| ------------------------------------------------------------------------------------------------------------------ | ----------------------------- | ---------------------------------------------------------------------------- |
| **恶意内部员工** — 拥有内部网络访问权限 + 知道 Redis 密码                                 | 低但无法排除 | **RCE** 于 Redis 服务器,权限提升,数据窃取             |
| **内部机器被接管(横向移动)** — 攻击者入侵网络中任意一台机器,进而攻击 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

Sentinel 集群的特定威胁模型

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-only1 分钟 / 节点否
P1 — 本周内通过 ACL 阻止 RESTORE(无需重启):redis-cli ACL SETUSER default -restore; redis-cli ACL SAVE2 分钟 / 节点否
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 分钟 / 集群是(重启整个集群)

示例:使用 ACL 保护整个 Sentinel 集群(无需停机)```bash

============================================

Chay tren TUNG node Redis (master + replica)

============================================

1. Tao ACL user an toan cho ung dung

redis-cli -h <node_ip> -p 6379 -a ACL SETUSER app_user on >StrongPass123 ~*
+@read +@write
-@dangerous -@admin -@scripting -@blocking
-restore -debug

2. Vo hieu hoa default user

redis-cli -h <node_ip> -p 6379 -a ACL SETUSER default off

3. Luu ACL

redis-cli -h <node_ip> -p 6379 -a ACL SAVE

4. Kiem tra lai

redis-cli -h <node_ip> -p 6379 -a --user app_user --pass StrongPass123 PING

root@kitploit:~
Tôi không thể dịch nội dung này vì không có văn bản đầu vào nào được cung cấp trong phần INPUT. Vui lòng cung cấp nội dung Markdown cần dịch.```bash
# ============================================
# Chay tren TUNG node Sentinel (port 26379)
# ============================================

# Sentinel thuong khong can RESTORE/EVAL — chan toan bo lenh nguy hiem
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

root@kitploit:~
### 结论

> **防火墙 + 网络隔离将利用成功率降至极低,但一旦被利用,后果仍是整个系统的 RCE。** 由于修复成本几乎为零(添加几行 ACL 无需重启),采取防护措施在风险管理上是明智的决定。**无需恐慌性紧急升级**,但**应在本周内应用 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 等)                                  | 安全                         |

### 完整 ACL 配置示例```bash
# 1. Tao admin user (day du quyen)
redis-cli ACL SETUSER admin on >AdminPass123 ~* +@all

# 2. Tao app user (quyen gioi han)
redis-cli ACL SETUSER app on >AppPass123 ~* \
    +@read \
    +@write \
    -@dangerous \
    -@admin \
    -@scripting \
    -@blocking \
    -restore \
    -debug

# 3. Tao readonly user (chi doc)
redis-cli ACL SETUSER reader on >ReaderPass123 ~* \
    +@read \
    -@dangerous \
    -@admin \
    -@scripting

# 4. Vo hieu hoa default user
redis-cli ACL SETUSER default off

# 5. Luu ACL
redis-cli ACL SAVE

# 6. Kiem tra ACL
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

root@kitploit:~
---

## 定期检查流程

### 1. 一次性检查(临时)```bash
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
    -H <redis_host> -p <port> -a <password> \
    -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

root@kitploit:~
批量检查脚本:```bash
#!/bin/bash
# File: batch_check.sh

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

root@kitploit:~
### 4. 集成到 CI/CD 流水线中```yaml
# GitLab CI example
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)

问:应用 --fix-... 之后,我需要重启 Redis 吗?

答: 是的,对于 rename-command 的更改——它们只有在重启 Redis 之后才会生效。通过 CONFIG SET 进行的更改(如 protected-mode、replica-read-only)会立即生效。通过 ACL SETUSER + ACL SAVE 进行的更改会立即生效,无需重启。如果只使用 ACL(--fix-restore、--fix-blocking、--fix-lua),则不需要重启。脚本总是同时应用 ACL(运行时)和 rename-command(需要重启),以实现多层保护。

问:阻止 RESTORE 会影响正常操作吗?

答: RESTORE 命令通常只在以下情况下使用:

  • 从备份恢复数据
  • 实例之间的数据迁移
  • 自定义数据同步

如果您的应用程序不使用 RESTORE,阻止该命令是安全的。如果确实使用,请创建一个具有 RESTORE 权限的专用 ACL 用户,并且仅用于管理目的。

问:我正在使用 Redis < 6.0,ACL 不可用。怎么办?

答: 对于 Redis < 6.0,您只能使用 rename-command 来禁用命令。步骤如下:

  1. 在 redis.conf 中添加 rename-command RESTORE ""
  2. 为阻塞命令添加 rename-command 指令
  3. 启用 protected-mode yes
  4. 使用强密码设置 requirepass
  5. 通过防火墙限制连接
  6. 重启 Redis

问:如何知道 RedisTimeSeries/RedisBloom 模块是否已加载?

答: 运行以下命令:```bash redis-cli MODULE LIST

root@kitploit:~
输出将显示已加载模块的列表及版本。如果看不到 `timeseries` 或 `bf`,则说明模块未加载。

### 问:`--fix-all` / `--fix-restore` / `--fix-...` 对生产环境安全吗?

**答:** 修复命令执行的是安全更改:

- 修改前备份 redis.conf(除非使用 `--no-backup`)
- **ACL**(`-restore`、`-@blocking`、`-@scripting`):立即生效,无停机时间,易于回滚
- **rename-command**:需要重启 Redis 才能生效
- **CONFIG SET**:运行时生效,若未写入 redis.conf,重启后丢失

建议:对于生产环境,优先使用 `--fix-restore`、`--fix-blocking`、`--fix-lua`(仅 ACL,无需重启)。然后安排维护窗口,配合 `rename-command` 重启。

### 问:如何回滚(rollback)`--fix-...` 所做的更改?

**答:**

1. 如果已备份:将备份文件复制覆盖 redis.conf,然后重启 Redis
2. 如果使用了 `CONFIG SET`:重启 Redis 将从文件恢复配置
3. 如果使用了 `ACL SETUSER`:使用 `ACL SETUSER <user> +<cmd>` 恢复权限

### 问:我应该升级 Redis 吗?

**答:** **是的,如果可能的话。** 升级到已修补的版本是最彻底的解决方案。此脚本适用于以下情况:

- 由于应用限制无法立即升级
- 需要时间测试新版本
- 在等待维护窗口期间需要临时保护措施

### 问:Redis 在内部运行,不连接互联网,有防火墙保护——还需要升级吗?

**答:** **不需要紧急升级**,但**应应用 workaround 并制定升级计划**,因为:

- 防火墙只能降低被攻击的**概率**,不能完全消除风险
- 来自内网的攻击者(恶意员工、被入侵的机器、横向移动)仍可利用漏洞
- 若被利用,后果是**整个系统的 RCE**——严重程度最高
- **workaround 成本极低**:添加 ACL `-restore -@blocking -@scripting` 只需 2 分钟,无停机时间

**建议路线图:**

1. **本周:** 应用 ACL workaround(无停机时间)
2. **下一个维护窗口:** 升级 Redis + 添加 `rename-command`

详见 [风险评估 — 内部 Redis 系统 / Sentinel](#đánh-giá-rủi-ro--hệ-thống-redis-nội-bộ--sentinel)。

---

## 参考资料

- [Redis 官方安全公告](https://redis.io/blog/security-advisory-cve202623479-cve202625243-cve-2026-25588-cve202625589-cve-2026-23631/)
- [GitHub Advisory — CVE-2026-25243 (RESTORE RCE)](https://github.com/redis/redis/security/advisories/GHSA-c8h9-259x-jff4)
- [GitHub Advisory — CVE-2026-23631 (Lua UAF)](https://github.com/redis/redis/security/advisories/GHSA-8ghh-qpmp-7826)
- [Redis ACL 文档](https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/)
- [Redis rename-command 文档](https://redis.io/docs/latest/operate/oss_and_stack/management/security/#disable-specific-commands)
- [NVD — CVE-2026-25243](https://nvd.nist.gov/vuln/detail/CVE-2026-25243)
- [NVD — CVE-2026-25588](https://nvd.nist.gov/vuln/detail/CVE-2026-25588)
- [OpenCVE — CVE-2026-23479](https://app.opencve.io/cve/CVE-2026-23479)
- [Tenable — CVE-2026-23631](https://www.tenable.com/cve/CVE-2026-23631)

---

> **免责声明:** 本文档基于 Redis 安全公告和 NVD 等公开信息编写。用户在应用前有责任检查并确认适合自身环境的修复措施。
下载工具