
Redis 5개 CVE에 대한 진단 및 수정 스크립트로, 인증된 RCE 취약점에 대한 스캔, ACL 기반 완화, 구성 강화 지침을 제공합니다.
발행일: 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 command 실행 권한 보유 |
| 2 | CVE-2026-25243 | 7.7 | HIGH | Invalid Memory Access | 인증됨, RESTORE 실행 권한 보유 |
| 3 | CVE-2026-25588 | 7.7 | HIGH | Invalid Memory Access | 인증됨, RESTORE 권한 + RedisTimeSeries module 보유 |
| 4 | CVE-2026-25589 | 7.7 | HIGH | Invalid Memory Access | 인증됨, RESTORE 권한 + RedisBloom module 보유 |
| 5 | CVE-2026-23631 | 6.1 | MEDIUM | Use-After-Free | 인증됨, replica-read-only = disabled인 replica |
공통점: 모든 CVE는 공격자가 Redis 인스턴스에 인증(authenticated) 되어 있어야 합니다. CVE-2026-23631은
replica-read-only disabled구성이 적용된 replica에만 영향을 미칩니다.
| 버전 라인 | 패치된 버전 (최소) |
|---|---|
| 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 |
| Module | 최소 버전 |
|---|---|
| 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 commands 실행 권한 보유 |
| 범위 | 모든 Redis OSS/CE, Redis Software <= 8.0.6 |
클라이언트가 차단(blocked)된 상태 — 예: 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에 의한 예상치 못한 명령 실행
#### 완화 방법 (업그레이드 없이)