Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-25589-25588-25243-23631-23479-REDIS — Script de diagnóstico e remediação para cinco CVEs do Redis, fornecendo varredura, mitigação baseada em ACL e orientação de endurecimento de configuração para vulnerabilidades de RCE autenticado. | Kitploit
Ferramentas/GitHubGitHub/mgiay/cve-2026-25589-25588-25243-23631-23479-redis
Análise de VulnerabilidadesAuditoria de ConfiguraçãoAprendizado e EducaçãoRecursos CuradosSegurança de Banco de Dados
GitHubmgiay/cve-2026-25589-25588-25243-23631-23479-redis

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

Script de diagnóstico e remediação para cinco CVEs do Redis, fornecendo varredura, mitigação baseada em ACL e orientação de endurecimento de configuração para vulnerabilidades de RCE autenticado.

Ver Repositório
há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

GUIA DE TESTE E CORREÇÃO DE 5 CVEs DO REDIS ATÉ 2026.05.08

Data de publicação: 2026-05-08 Autor: TonyCao ([email protected]) Fonte: Redis Security Advisory


ÍNDICE

  1. Visão geral
  2. Versões afetadas
  3. Detalhes de cada CVE
    • CVE-2026-23479 — Use-after-free no Unblock Client Flow
    • CVE-2026-25243 — Invalid Memory Access no RESTORE
    • CVE-2026-25588 — RESTORE com o módulo RedisTimeSeries
    • CVE-2026-25589 — RESTORE com o módulo RedisBloom
    • CVE-2026-23631 — Lua Use-After-Free via sincronização Master-Replica
  4. Guia de uso do Script
  5. Métodos gerais de correção
  6. Avaliação de risco — Sistemas Redis internos / Sentinel
  7. Referência de ACL
  8. Processo de verificação periódica
  9. Perguntas frequentes (FAQ)

VISÃO GERAL

Em 05/05/2026, a Redis Ltd. publicou um security advisory sobre 5 vulnerabilidades de segurança graves que afetam todas as versões do Redis OSS/CE. Todas as CVEs podem levar a Remote Code Execution (RCE) se forem exploradas com sucesso.

#Código CVECVSSNívelTipo de falhaCondição de exploração
1CVE-2026-234797.7ALTOUse-After-FreeAutenticado, com permissão para executar comandos de bloqueio
2CVE-2026-252437.7ALTOInvalid Memory AccessAutenticado, com permissão para executar RESTORE
3CVE-2026-255887.7ALTOInvalid Memory AccessAutenticado, com permissão de RESTORE + módulo RedisTimeSeries
4CVE-2026-255897.7ALTOInvalid Memory AccessAutenticado, com permissão de RESTORE + módulo RedisBloom
5CVE-2026-236316.1MÉDIOUse-After-FreeAutenticado, réplica com replica-read-only = desabilitado

Ponto em comum: Todas as CVEs exigem que o atacante esteja autenticado na instância Redis. A CVE-2026-23631 afeta apenas réplicas com a configuração replica-read-only disabled.


VERSÕES AFETADAS

Redis OSS/CE — Todas as versões anteriores ao patch

Linha de versãoVersão corrigida (mínima)
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

Módulos — Versões corrigidas

MóduloVersão mínima
RedisTimeSeries1.12.14 / 1.10.24 / 1.8.23
RedisBloom2.8.20 / 2.6.28 / 2.4.23

Redis Software (Enterprise)

VersãoPatch
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

Todas as implantações do Redis Cloud foram automaticamente corrigidas no momento da publicação do advisory.


DETALHES DE CADA CVE

CVE-2026-23479

AtributoValor
TítuloUse-After-Free no Unblock Client Flow
CVSS 4.07.7 (ALTO)
CWECWE-416 (Use After Free)
VetorAV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CondiçãoAtacante autenticado, com permissão para executar comandos de bloqueio
EscopoTodos os Redis OSS/CE, Redis Software <= 8.0.6

Descrição técnica

Quando um cliente está bloqueado — por exemplo, aguardando em BLPOP — e é removido durante a reexecução do comando bloqueado, a função processCommandAndResetClient pode retornar um erro. O código atual não trata corretamente esse caso, resultando em um ponteiro que referencia memória já liberada (use-after-free). O atacante pode explorar o UAF para executar código remotamente (RCE).

Sinais de detecção

  • Crash do servidor Redis com stack trace contendo funções relacionadas a unblock client, processCommandAndResetClient
  • O processo redis-server executa comandos não identificados
  • Conexões de rede não autorizadas para a instância Redis

Comandos de bloqueio afetados```

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

root@kitploit:~
#### Método de correção (sem atualização)

**Opção 1 — Bloquear via ACL (recomendado):**```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

Método 2 — Desativar via rename-command (requer reiniciar o 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:~
**Método 3 — Ativar o protected-mode e limitar conexões:**```bash
redis-cli CONFIG SET protected-mode yes
# Trong redis.conf:
protected-mode yes
bind 127.0.0.1

CVE-2026-25243

AtributoValor
TítuloAcesso Inválido à Memória no Comando RESTORE
CVSS 4.07.7 (ALTO)
CWECWE-20 (Validação de Entrada Incorreta) + CWE-122 (Estouro de Buffer no Heap)
VetorAV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CondiçãoAtacante autenticado, com permissão para executar RESTORE
EscopoTodos os Redis OSS/CE, Redis Software <= 8.0.6

Descrição Técnica

A vulnerabilidade envolve 2 subproblemas:

  1. Double-free no núcleo do Redis (descoberto por Emil Lerner) — RESTORE processa payloads serializados especiais que levam à liberação dupla de memória no mesmo ponteiro.
  2. Estouro de inteiro e leitura fora dos limites em VectorSets (descoberto por Joseph Surin) — payloads projetados especificamente causam estouro de inteiro, levando a leitura/escrita fora da memória alocada.

Um atacante autenticado envia um payload RESTORE projetado especificamente para explorar os erros acima, o que pode levar a RCE no contexto do processo redis-server.

Sinais de Detecção

  • Crash anormal do servidor Redis
  • Alteração de arquivos do sistema (especialmente no diretório que contém RDB/AOF/config do Redis)
  • Conexões de rede não autorizadas de/para a instância Redis
  • Arquivo de configuração do Redis alterado

Métodos de Mitigação (sem atualização)

Método 1 — Bloquear RESTORE via ACL (recomendado):```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:~
**Método 2 — Desativar RESTORE (requer reiniciar o Redis):**```bash
# Thêm vào redis.conf:
rename-command RESTORE ""

Método 3 — Criar um ACL de usuário separado para o aplicativo:```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

| Propriedade    | Valor                                                             |
| -------------- | ----------------------------------------------------------------- |
| **Título**     | Acesso Inválido à Memória em RESTORE com o Módulo RedisTimeSeries |
| **CVSS 4.0**   | **7.7 (ALTO)**                                                    |
| **CWE**        | CWE-20 + CWE-122                                                   |
| **Vetor**      | `AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N`           |
| **Condição**   | Autenticado + permissão RESTORE + **módulo RedisTimeSeries carregado** |
| **Escopo**     | Redis OSS/CE + módulo RedisTimeSeries                              |

#### Descrição técnica

Quando o comando `RESTORE` é usado em uma instância com o **módulo RedisTimeSeries** carregado, um payload serializado especialmente criado pode acionar acesso inválido à memória durante o processamento de dados de séries temporais. A vulnerabilidade está na forma como o módulo RedisTimeSeries desserializa dados do payload RESTORE.

#### Sinais de identificação

- Crash do Redis com stack trace relacionado ao módulo RedisTimeSeries
- Módulo RedisTimeSeries carregado (`MODULE LIST` exibe timeseries)
- Execução de comandos não intencionais pelo redis-server

#### Método de mitigação (sem atualização)

**Método 1 — Bloquear RESTORE via ACL:** (igual ao CVE-2026-25243)```bash
redis-cli ACL SETUSER default -restore
redis-cli ACL SAVE

Método 2 — Remover o módulo RedisTimeSeries (se não for necessário):```bash redis-cli MODULE UNLOAD timeseries

root@kitploit:~
Depois, remova a seguinte linha do `redis.conf`:```
loadmodule /path/to/redistimeseries.so

Cách 3 — Apenas atualizar o módulo (sem atualizar o Redis):

Baixe a versão corrigida do módulo:

  • RedisTimeSeries 1.12.14 (para a linha 1.12)
  • RedisTimeSeries 1.10.24 (para a linha 1.10)
  • RedisTimeSeries 1.8.23 (para a linha 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

| Atributo    | Valor                                                                        |
| ----------- | ---------------------------------------------------------------------------- |
| **Título**  | Acesso Inválido à Memória em RESTORE com o Módulo RedisBloom                 |
| **CVSS 4.0**| **7.7 (ALTO)**                                                               |
| **CWE**     | CWE-20 + CWE-122 + CWE-787 (Escrita Fora dos Limites) + CWE-190 (Estouro de Inteiro) |
| **Vetor**   | `AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N`                     |
| **Condição**| Autenticado + permissão RESTORE + **módulo RedisBloom carregado**            |
| **Escopo**  | Redis OSS/CE + módulo RedisBloom                                             |

#### Descrição Técnica

A vulnerabilidade abrange vários sub-problemas no módulo RedisBloom ao processar payloads RESTORE:

1. **Leitura/escrita fora dos limites** (Daniel Firer) — leitura/escrita fora da memória alocada
2. **Estouro de inteiro, estouro de buffer no heap e leitura/escrita fora dos limites** (Joseph Surin) — estouro de inteiro que leva a estouro de buffer no heap

Quando o módulo RedisBloom é carregado, um atacante pode enviar um payload RESTORE especialmente elaborado para explorar os erros acima durante a desserialização de dados de Bloom filter, Cuckoo filter, Count-Min Sketch ou Top-K.

#### Sinais de Detecção

- Crash do Redis com stack trace relacionado ao módulo RedisBloom
- Módulo RedisBloom carregado (`MODULE LIST` exibe bf/bloom)
- Dados nos Bloom filters corrompidos ou alterados de forma anormal

#### Métodos de Mitigação (sem atualização)

**Método 1 — Bloquear RESTORE via ACL:** (igual ao CVE-2026-25243)```bash
redis-cli ACL SETUSER default -restore
redis-cli ACL SAVE

Método 2 — Remover o módulo RedisBloom (se não for necessário):```bash redis-cli MODULE UNLOAD bf

root@kitploit:~
Depois, remova a seguinte linha do `redis.conf`:```
loadmodule /path/to/redisbloom.so

Cách 3 — Chỉ nâng cấp module (không nâng cấp Redis):

Tải phiên bản module đã vá:

  • RedisBloom 2.8.20 (cho dòng 2.8)
  • RedisBloom 2.6.28 (cho dòng 2.6)
  • RedisBloom 2.4.23 (cho dòng 2.4)```bash redis-cli MODULE UNLOAD bf redis-cli MODULE LOAD /path/to/new/redisbloom.so
root@kitploit:~
---

### CVE-2026-23631

| Atributo      | Valor                                                           |
| ------------- | --------------------------------------------------------------- |
| **Título**    | Lua Use-After-Free via Sincronização Master-Replica             |
| **CVSS 4.0**  | **6.1 (MÉDIO)**                                                 |
| **CWE**       | CWE-416 (Use After Free)                                        |
| **Vetor**     | `AV:N/AC:H/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N`        |
| **Condição**  | Autenticado + **replica** com `replica-read-only` = **desabilitado** |
| **Escopo**    | Todos os Redis OSS/CE com scripting Lua, SOMENTE na replica     |
| **Nome de código** | "DarkReplica" (Yoni Shiraz, Wiz Zeroday Cloud)              |

#### Descrição técnica

Um atacante autenticado pode explorar o mecanismo de sincronização master-replica para enviar scripts Lua especiais, acionando um use-after-free no motor Lua na replica.

**Condição crítica:** O bug **afeta apenas a replica** configurada com `replica-read-only disabled` (ou seja, a replica pode gravar). Esta NÃO é a configuração padrão — o padrão de `replica-read-only` = `yes`.

Se a replica estiver configurada em modo somente leitura (padrão), a instância **não é afetada**.

#### Sinais de identificação

- Crash do Redis na replica com stack trace do motor Lua
- Configuração `replica-read-only` = `no` na replica
- Execução de comandos não autorizados na replica
- Conexões de rede não permitidas à replica

#### Métodos de mitigação (sem atualização)

**Método 1 — Ativar replica-read-only (recomendado, este é o padrão):**```bash
# Runtime
redis-cli CONFIG SET replica-read-only yes

# Trong redis.conf:
replica-read-only yes

Método 2 — Bloquear scripting Lua via ACL:```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:~
**Método 3 — Desativar comandos Lua (requer reiniciar o 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 ""

INSTRUÇÕES DE USO DO SCRIPT

Princípios de funcionamento

  • Sem parâmetros → exibe as instruções de uso (ajuda)
  • --scan → diagnóstico, verificação de todos os CVEs
  • --fix-... → aplica a medida corretiva para o CVE específico``` $ ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh → hiển thị banner + HELP + thoát
root@kitploit:~
### Requisitos do sistema

- **Sistema operacional:** Linux (Ubuntu, Debian, CentOS, RHEL, ...)
- **Ferramenta:** `redis-cli` (geralmente incluída no pacote `redis-tools` ou `redis`)
- **Permissões:** Permissão de leitura/gravação do arquivo `redis.conf` (para correção)
- **Conexão:** Rede até a instância Redis a ser verificada

### Instalação do redis-cli (se ainda não estiver disponível)```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/

Como usar

1. Ver a ajuda```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. Varredura de verificação completa de CVEs (diagnóstico)```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. Correção individual de cada 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. Correção rápida em grupo (recomendado)```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. Correção completa```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:~
### Tabela de parâmetros completa

#### Parâmetros de ação (ACTION) — obrigatórios

| Parâmetro         | Função                                       | Nº de CVEs protegidos          |
| ----------------- | -------------------------------------------- | ------------------------------ |
| *(sem parâmetro)* | Exibe o guia de uso                          | —                              |
| `--scan`          | Varredura de diagnóstico de todos os 5 CVEs  | —                              |
| `--fix-all`       | Corrige todos os CVEs                        | **5/5**                        |
| `--fix-restore`   | **[Rápido]** Apenas bloqueia o comando RESTORE | **3/5** (25243, 25588, 25589) |
| `--fix-blocking`  | **[Rápido]** Apenas bloqueia comandos de bloqueio | **1/5** (23479)          |
| `--fix-lua`       | **[Rápido]** Bloqueia Lua + ativa replica-read-only | **1/5** (23631)        |
| `--fix-cve-23479` | Corrige CVE-2026-23479                       | 1/5                           |
| `--fix-cve-25243` | Corrige CVE-2026-25243                       | 1/5                           |
| `--fix-cve-25588` | Corrige CVE-2026-25588                       | 1/5                           |
| `--fix-cve-25589` | Corrige CVE-2026-25589                       | 1/5                           |
| `--fix-cve-23631` | Corrige CVE-2026-23631                       | 1/5                           |

#### Parâmetros de conexão

| Parâmetro             | Descrição                | Padrão       |
| --------------------- | ------------------------ | ------------ |
| `-H, --host HOST`     | Endereço do host Redis   | `127.0.0.1`  |
| `-p, --port PORT`     | Porta do Redis           | `6379`       |
| `-a, --pass PASS`     | Senha do Redis           | *(vazio)*    |
| `-u, --user USER`     | Nome de usuário ACL      | `default`    |
| `-s, --socket PATH`   | Caminho do Unix socket   | *(vazio)*    |

#### Parâmetros adicionais

| Parâmetro             | Descrição                                   | Padrão                   |
| --------------------- | ------------------------------------------- | ------------------------ |
| `-h, --help`          | Exibe a ajuda                               | —                        |
| `-c, --config FILE`   | Caminho do redis.conf                       | `/etc/redis/redis.conf`  |
| `-o, --output FILE`   | Grava o relatório em arquivo (apenas com `--scan`) | *(vazio)*         |
| `--redis-cli PATH`    | Caminho do binário redis-cli                | `redis-cli` (do PATH)    |
| `--no-backup`         | Não faz backup da config antes de alterar   | `false`                  |

### Códigos de saída (Exit Codes)

| Código | Significado                                              |
| ------ | -------------------------------------------------------- |
| `0`    | Sucesso — nenhum CVE detectado ou correção concluída     |
| `1`    | Erro: redis-cli não encontrado ou não foi possível conectar |
| `2`    | `--scan` detectou pelo menos 1 CVE — correção necessária |

### Saída da varredura (`--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
═══════════════════════════════════════════════════════════════════════

Resultado da saída ao corrigir (--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:~
---

## MÉTODOS GERAIS DE MITIGAÇÃO

### Método 1: ACL (Redis >= 6.0) — RECOMENDADO

Este é o método **mais seguro e flexível**, sem necessidade de reiniciar o 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

Método 2: rename-command — Requer reiniciar o Redis

Adicione as seguintes linhas ao 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:~
Depois, reinicie o Redis:```bash
sudo systemctl restart redis-server
# hoặc
sudo service redis-server restart

Método 3: Configuração de rede + Firewall```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:~
### Método 4: Executar o Redis com privilégios mínimos```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

Método 5: Remover módulos desnecessários```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:~
---

## AVALIAÇÃO DE RISCO — SISTEMA REDIS INTERNO / SENTINEL

Esta seção é destinada a clusters **Redis Sentinel** ou Redis standalone executados em rede interna, protegidos por firewall (Fortinet, iptables, etc.) e **sem conexão direta com a Internet**.

### Resumo

| Nível de proteção existente           | Redução de risco?                                             | Precisa de atualização?                         |
| ------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------- |
| Sem acesso à Internet                 | **Sim** — elimina atacantes externos                          | Não é urgente                                   |
| Fortinet Firewall (com IPS/DPI)       | **Sim** — filtra IP de origem, IPS pode detectar payloads anômalos | Não é urgente                                   |
| iptables (limitação de IP de origem)  | **Sim** — apenas IPs autorizados podem conectar à porta Redis | Não é urgente                                   |
| **Combinação das 3 medidas acima**    | **Reduz a probabilidade de exploração a um nível muito baixo** | **Não é urgente, mas é recomendável ter um plano** |

### Ponto-chave: Por que o firewall não é suficiente?

Todas as 5 CVEs têm algo em comum: o atacante precisa **já estar autenticado** no Redis (PR:L — Privilégios Necessários: Baixo no vetor CVSS). O firewall bloqueia conexões de IPs não autorizados, mas **não protege** contra as seguintes ameaças:

| Ameaça                                                                                                            | Probabilidade de ocorrência      | Consequência se explorada                                                       |
| ----------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------------------------------------------------------------------------- |
| **Funcionário interno malicioso** — com acesso à rede interna + conhecimento da senha do Redis                    | Baixa, mas não pode ser descartada | **RCE** no servidor Redis, escalonamento de privilégios, roubo de dados          |
| **Máquina interna comprometida (Movimento Lateral)** — atacante invade qualquer máquina da rede e, a partir dela, ataca o Redis | Média                            | Todos os dados do Redis são roubados/alterados/excluídos; o atacante pode instalar backdoor |
| **Erro de configuração do firewall** — abertura acidental da porta Redis para o exterior devido a alteração incorreta de regras | Baixa                            | Equivalente a exposição direta à Internet                                       |
| **Supply Chain / Terceiros** — parceiros, fornecedores com conexão VPN à rede interna                             | Baixa                            | RCE, exfiltração de dados                                                       |
| **Vulnerabilidade no próprio firewall/rede** — atacante contorna o firewall por meio de outra vulnerabilidade     | Muito baixa                      | Todo o sistema interno é afetado                                                |

### Análise quantitativa de risco```
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

Modelo de ameaça específico para o cluster Sentinel

O cluster Redis Sentinel adiciona riscos próprios:

Vetor de ataque SentinelDescriçãoCVEs relacionadas
Comprometimento do Sentinel — atacante compromete o nó Sentinel e, a partir dele, faz failover para uma réplica maliciosaO Sentinel se comunica por porta própria (geralmente 26379); se não for protegida separadamenteCVE-2026-23631 (se a réplica tiver replica-read-only no)
Promoção de réplica — réplica comprometida é promovida a masterDados de todo o cluster são alteradosTodas as CVEs RESTORE (25243, 25588, 25589)
Sincronização master-réplica — atacante intercepta o fluxo de syncDados são roubados durante o processo de syncCVE-2026-23631

Recomendações por prioridade

PrioridadeAçãoTempo de execuçãoRequer downtime?
P0 — ImediatoExecutar script de verificação em todos os nós (master + réplica + sentinel): ./CVE-...sh -H <ip> -p <port> -a <pass>2-5 min / nóNão
P0 — ImediatoVerificar replica-read-only yes em todas as réplicas: redis-cli CONFIG GET replica-read-only1 min / nóNão
P1 — Nesta semanaBloquear RESTORE via ACL (sem reiniciar): redis-cli ACL SETUSER default -restore; redis-cli ACL SAVE2 min / nóNão
P1 — Nesta semanaBloquear comandos @blocking via ACL (CVE-2026-23479)2 min / nóNão
P1 — Nesta semanaBloquear comandos @scripting via ACL se não usar Lua (CVE-2026-23631)2 min / nóNão
P2 — Próxima janela de manutençãoAdicionar rename-command RESTORE "", rename-command EVAL "", ... ao redis.conf10 min (com restart)Sim (restart do Redis)
P2 — Próxima janela de manutençãoAtualizar o Redis para versão corrigida (6.2.22, 7.2.14, 7.4.9, 8.2.6, 8.4.3, 8.6.3)30-60 min / clusterSim (restart de todo o cluster)

Exemplo: Proteger todo o cluster Sentinel com ACL (sem downtime)```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 nguồn 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

Fluxo de decisão: É necessário atualizar imediatamente?```

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:~
### Conclusão

> **Firewall + isolamento de rede reduzem a probabilidade de exploração a um nível muito baixo, mas a consequência se for explorado ainda é RCE em todo o sistema.** Com um custo de mitigação quase zero (adicionar algumas linhas de ACL sem necessidade de restart), aplicar a medida de proteção é uma decisão vantajosa em termos de gestão de risco. **Não é necessário pânico com upgrade urgente**, mas **é recomendável aplicar o workaround de ACL ainda esta semana** e agendar o upgrade na próxima janela de manutenção.

---

## REFERÊNCIA DE ACL

### Grupos de comandos (command categories) importantes

| Grupo         | Descrição                                                                          | Impacto CVE                |
| ------------- | ---------------------------------------------------------------------------------- | -------------------------- |
| `@dangerous`  | Comandos perigosos (incluindo RESTORE, FLUSHDB, FLUSHALL, KEYS, SHUTDOWN, DEBUG, CONFIG) | CVE-2026-25243, 25588, 25589 |
| `@blocking`   | Comandos de bloqueio (BLPOP, BRPOP, BZPOPMIN, XREAD, WAIT, ...)                     | CVE-2026-23479             |
| `@scripting`  | Scripting Lua (EVAL, EVALSHA, SCRIPT, FUNCTION, FCALL)                              | CVE-2026-23631             |
| `@admin`      | Comandos administrativos (CONFIG, ACL, CLIENT, CLUSTER, MONITOR, SHUTDOWN, ...)     | Proteção geral             |
| `@keyspace`   | Comandos relacionados ao keyspace (KEYS, SCAN, FLUSHDB, FLUSHALL, ...)              | Proteção geral             |
| `@read`       | Comandos de leitura de dados (GET, HGET, LRANGE, SMEMBERS, ZRANGE, ...)             | Seguro                     |
| `@write`      | Comandos de escrita de dados (SET, HSET, LPUSH, SADD, ZADD, ...)                    | Seguro                     |

### Exemplo de configuração ACL completa```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

Verificação eficaz de 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:~
---

## PROCESSO DE TESTE PERIÓDICO

### 1. Teste único (ad-hoc)```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. Verificação em lote de várias instâncias Redis

Crie o arquivo 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:~
Script de verificação em lote:```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. Integração no cron (verificação diária)```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. Integração no pipeline de 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

PERGUNTAS FREQUENTES (FAQ)

P: Preciso reiniciar o Redis depois de aplicar --fix-...?

R: Sim, para alterações de rename-command — elas só têm efeito após reiniciar o Redis. Alterações via CONFIG SET (como protected-mode, replica-read-only) têm efeito imediato. Alterações via ACL SETUSER + ACL SAVE têm efeito imediato, sem necessidade de reiniciar. Se você usar apenas ACL (--fix-restore, --fix-blocking, --fix-lua), não precisa reiniciar. O script sempre aplica simultaneamente ACL (runtime) e rename-command (requer reinício) para proteção em várias camadas.

P: Bloquear RESTORE afeta a operação normal?

R: O comando RESTORE normalmente é usado apenas nos seguintes casos:

  • Recuperação de dados a partir de backup
  • Migração de dados entre instâncias
  • Sincronização de dados personalizada

Se sua aplicação não usa RESTORE, bloquear esse comando é seguro. Se usar, crie um usuário ACL separado com permissão de RESTORE e use-o apenas para fins administrativos.

P: Estou usando Redis < 6.0, ACL não está disponível. E agora?

R: Com Redis < 6.0, você só pode usar rename-command para desabilitar comandos. Os passos:

  1. Adicione rename-command RESTORE "" ao redis.conf
  2. Adicione os comandos rename-command para comandos de bloqueio
  3. Ative protected-mode yes
  4. Configure requirepass com uma senha forte
  5. Limite conexões via firewall
  6. Reinicie o Redis

P: Como saber se os módulos RedisTimeSeries/RedisBloom estão carregados?

R: Execute o comando:```bash redis-cli MODULE LIST

root@kitploit:~
A saída exibirá a lista de módulos carregados com a versão. Se `timeseries` ou `bf` não aparecerem, o módulo não está carregado.

### P: `--fix-all` / `--fix-restore` / `--fix-...` é seguro para produção?

**R:** Os comandos de correção realizam alterações seguras:

- Backup do redis.conf antes de modificar (exceto ao usar `--no-backup`)
- **ACL** (`-restore`, `-@blocking`, `-@scripting`): tem efeito imediato, sem downtime, fácil de reverter
- **rename-command**: requer reiniciar o Redis para ter efeito
- **CONFIG SET**: em tempo de execução, é perdido ao reiniciar se não for gravado no redis.conf

Recomendação: Para produção, priorize usar `--fix-restore`, `--fix-blocking`, `--fix-lua` primeiro (apenas ACL, sem necessidade de reiniciar). Depois, agende uma janela de manutenção para reiniciar com `rename-command`.

### P: Como reverter (rollback) as alterações de `--fix-...`?

**R:**

1. Se houver backup: copie o arquivo de backup sobrescrevendo o redis.conf e reinicie o Redis
2. Se usou `CONFIG SET`: reiniciar o Redis restaurará a configuração a partir do arquivo
3. Se usou `ACL SETUSER`: use `ACL SETUSER <user> +<cmd>` para restaurar as permissões

### P: Devo atualizar o Redis?

**R:** **Sim, se possível.** Atualizar para a versão corrigida é a solução mais definitiva. Este script é para os casos em que:

- Não é possível atualizar imediatamente devido a restrições da aplicação
- É necessário tempo para testar a nova versão
- É necessária uma medida de proteção temporária enquanto se aguarda a janela de manutenção

### P: O Redis roda internamente, sem acesso à Internet, com firewall protegendo — é necessário atualizar?

**R:** **Não é necessário atualizar com urgência**, mas **é recomendável aplicar o workaround e ter um plano de atualização** porque:

- O firewall apenas reduz a **probabilidade** de ataque, não elimina completamente o risco
- Um atacante de dentro da rede interna (funcionário mal-intencionado, máquina comprometida, movimento lateral) ainda pode explorar
- A consequência se for explorado é **RCE em todo o sistema** — o nível de gravidade mais alto
- **O custo do workaround é muito baixo**: adicionar ACL `-restore -@blocking -@scripting` leva 2 minutos, sem downtime

**Roteiro recomendado:**

1. **Esta semana:** Aplicar o workaround de ACL (sem downtime)
2. **Próxima janela de manutenção:** Atualizar o Redis + adicionar `rename-command`

Veja detalhes em [Avaliação de risco — Sistema Redis interno / Sentinel](#avaliação-de-risco--sistema-redis-interno--sentinel).

---

## REFERÊNCIAS

- [Advisory de Segurança oficial do 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)
- [Documentação de ACL do Redis](https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/)
- [Documentação de rename-command do Redis](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)

---

> **Aviso legal:** Este documento foi elaborado com base em informações públicas do advisory de segurança do Redis e fontes NVD. O usuário é responsável por verificar e confirmar as medidas de correção adequadas ao seu ambiente antes de aplicá-las.
Baixar ferramenta