REDIS Lua — CVE-2025-49844 / 46817 / 46818 / 46819

반응형
REDIS 취약점 모음 — CVE-2025-49844 / CVE-2025-46817 / CVE-2025-46818 / CVE-2025-46819 분석 및 대응

REDIS 취약점 모음 — CVE-2025-49844 / CVE-2025-46817 / CVE-2025-46818 / CVE-2025-46819

1️⃣ 개요

본 문서는 Redis에서 보고된 Lua 스크립트 관련 취약점 4건(CVE-2025-49844, CVE-2025-46817, CVE-2025-46818, CVE-2025-46819)에 대해 요약하고, 실무에서 적용 가능한 탐지·완화·패치 절차 및 운영 권장사항을 제공합니다.

2️⃣ 취약점 요약

CVE요약영향
CVE-2025-49844 Lua 스크립트로 인해 원격 코드 실행(Remote Code Execution, RCE) 가능성. 높음 — RCE
CVE-2025-46817 Lua 스크립트로 인한 정수 오버플로우 및 잠재적 RCE. 높음 — 정수 오버플로우 → RCE 가능성
CVE-2025-46818 Lua 스크립트가 다른 사용자의 컨텍스트에서 실행될 수 있음(권한·영역 격리 실패). 중~높음 — 권한 격리 실패
CVE-2025-46819 Lua 스크립트로 인한 범위를 벗어난 읽기(out-of-bounds read) 오류. 중 — 정보 누출/비정상 동작

3️⃣ 영향 범위

  • Lua 스크립트를 사용하는 Redis 서버와 이를 호출하는 클라이언트/애플리케이션
  • 공격자는 악의적 Lua 페이로드를 제출하거나, 기존 Lua 스크립트 입력값을 조작하여 취약점을 트리거할 수 있음
  • 공용(인터넷 노출) Redis 인스턴스는 특히 위험 — 인증/ACL이 미흡할 경우 원격 악용 가능성 높음

4️⃣ 탐지(Detection) — 빠르게 점검할 것

다음 명령과 절차로 의심지표를 확인합니다 (운영 환경 영향 고려하여 읽기 전용 명령 우선).

# 1) Redis 버전 확인 (서버 및 클라이언트 라이브러리 확인)
redis-cli INFO server
# 또는
redis-server --version

# 2) Lua 스크립트 목록 및 최근 SCRIPT LOAD 기록 검사
redis-cli SCRIPT EXISTS 
# (로그에서 SCRIPT LOAD/ EVAL 호출 기록 확인)

# 3) 최근 CLIENT LIST 확인 (의심 연결 체크)
redis-cli CLIENT LIST

# 4) CONFIG 값 확인 (외부 노출, protected-mode, requirepass 등)
redis-cli CONFIG GET requirepass
redis-cli CONFIG GET protected-mode

# 5) MONITOR (읽기 전용 샘플링, 주의: 성능 영향)
redis-cli MONITOR
주의: MONITOR 명령은 높은 부하를 유발할 수 있으므로 짧은 시간 동안만 사용하세요. 가능하면 복제/스테이징 인스턴스에서 조사하세요.

5️⃣ 완화 및 대응 권장 조치

  1. 즉시 패치 적용 — Redis와 사용 중인 클라이언트/라이브러리(특히 Lua 엔진 연동 부분)를 공급자 권고대로 최신 버전으로 업데이트하세요.
  2. 네트워크 단단히 막기 — Redis 포트(기본 6379)는 내부망 전용으로 제한, 방화벽/보안그룹으로 외부 접근 차단.
  3. 인증 및 ACL 적용 — requirepass / ACL을 활성화하고 최소 권한 원칙을 적용하세요.
  4. 스크립트 실행 제한 — 가능하면 애플리케이션에서 EVAL/EVALSHA 사용을 최소화하고 신뢰된 스크립트만 허용. 필요 시 스크립트 검증(화이트리스트) 적용.
  5. 명령 재명명(옵션) — 위험 명령(EVAL 등)을 rename-command로 변경하여 직접 호출을 어렵게 만드세요. 예: redis.conf 에서 `rename-command EVAL ""` 또는 난수명으로 변경.
  6. 분리된 실행 환경 — Redis를 컨테이너/네임스페이스로 격리, 시스템 권한을 낮춰 실행(전용 계정, chroot 등).
  7. 로그 및 모니터링 강화 — SCRIPT LOAD, EVAL 호출, 비정상 연결 패턴을 SIEM/IDS로 수집·경보 설정.
  8. 복구 계획 수립 — 의심스러운 침해 발생 시 신속히 인스턴스 격리(네트워크 단절), 메모리·디스크 덤프 확보, 백업에서 복구 시나리오 준비.

6️⃣ 실무 대응 예제

아래는 즉시 적용 가능한 안전한 예제 명령들(운영환경 적용 전 스테이징에서 검증)

# 1) Redis 접근을 내부망으로 제한 (예: 방화벽)
# 예: linux nftables/iptables 또는 클라우드 보안그룹에서 포트 6379 차단

# 2) requirepass 설정(임시)
redis-cli CONFIG SET requirepass "StrongPasswordHere"

# 3) EVAL 등 위험 명령 비활성화(재명명) - redis.conf 변경 권장
# redis.conf 예:
# rename-command EVAL ""
# rename-command EVALSHA ""

# 4) ACL 예제 (Redis 6 이상)
# 사용자 생성 및 권한 최소화
redis-cli ACL SETUSER limited_user on >password ~keys:* +get +set -eval

# 5) SCRIPT FLUSH (주의: 애플리케이션 의존성 확인)
# 등록된 스크립트를 모두 제거 (서비스 영향 주의)
redis-cli SCRIPT FLUSH
중요: `SCRIPT FLUSH`, `rename-command` 등은 시스템 정상 동작에 영향이 있으므로 변경 전 영향 범위를 반드시 확인하세요.

7️⃣ 기본 오류 대응 4단계

  1. 외부 노출 확인 — Redis 포트가 외부에 노출되어 있지 않은지(방화벽/보안그룹) 빠르게 확인
  2. 역할 비활성화 — 불필요한 관리자 계정/스크립트 권한을 잠시 제한
  3. 포트 차단 — 의심스러운 트래픽이 감지되면 해당 인스턴스의 네트워크 접근을 즉시 차단
  4. 로그 모니터링 — SCRIPT LOAD, EVAL 호출 패턴 및 비정상 연결을 집중 모니터링

8️⃣ 포렌식·보고 및 에스컬레이션

  • 침해 정황 발견 시 인스턴스 격리(네트워크 분리) 후 메모리·디스크 이미지 확보
  • 스크립트/키 변경 내역, CLIENT LIST, CONNECT/COMMAND 로그 등 증거 수집
  • 내부 보안 관제(CERT) 또는 공급업체/오픈소스 커뮤니티에 보고

9️⃣ 운영 권장 및 방지 대책 요약

  • Redis는 인터넷에 직접 노출하지 마세요(내부전용/프라이빗 네트워크에서만 운영)
  • ACL, 인증, 명령 재명명 등 최소 권한·방어적 설정 적용
  • Lua 스크립트는 신뢰된 코드만 사용, 입력값 검증을 철저히 수행
  • 정기적인 취약점 점검·패치 운영 프로세스 운영

🔟 참고(짧게)

이 문서는 취약점 식별 및 긴급 완화에 초점을 맞춘 실무 가이드입니다. Redis 공식 공지나 CVE 원문, 공급업체 권고를 병행 확인하시고, 패치를 최우선으로 적용하시기 바랍니다.

반응형
LIST