CVE-2025-49844 - Redis Lua 원격 코드 실행(RCE) 취약점

반응형

CVE-2025-49844 - Redis Lua 원격 코드 실행(RCE) 취약점

CVE-2025-49844 - Redis Lua 원격 코드 실행(RCE) 취약점 대응 가이드

CVE-2025-49844 - Redis Lua 원격 코드 실행(RCE) 취약점 점검 및 조치

요약

  • CVE-2025-49844는 Redis의 Lua 스크립트 엔진에서 발생하는 use-after-free 기반 원격 코드 실행(RCE) 취약점입니다.
  • 인증 이후 공격자가 특수 제작된 Lua 스크립트를 보내면, Lua 샌드박스를 탈출해 Redis 데몬이 구동 중인 호스트 OS에서 임의 코드 실행이 가능합니다.
  • Redis 측은 6.x ~ 8.x 주요 릴리스 라인에 대한 보안 패치 버전을 공개했으며, 해당 버전 미만은 모두 취약합니다.

1️⃣ 장애·취약점 상황 요약

운영 환경에서 Redis 프로세스는 정상적으로 떠 있지만(ps로 확인 시), 사용 중인 버전이 매우 오래된 redis-cli 4.0.10 계열로 확인되었다고 가정합니다. 이 경우 CVE-2025-49844뿐만 아니라 이후 발견된 여러 취약점에 동시에 노출되어 있을 가능성이 매우 큽니다.

특히 Redis를 0.0.0.0:포트로 바인딩해 내부·외부망에 그대로 노출한 경우, 악의적인 사용자가 Lua 기반 공격 스크립트를 전송해 호스트 권한 탈취 및 랜섬웨어, 크립토 마이너 설치 등으로 이어질 수 있습니다.

2️⃣ 환경 정보 및 프로세스 상태 예시

▪ 프로세스 확인 예시

$ ps -ef | grep redis
torange  1046735       1  0 Aug18 ?  02:23:20 /app/torange/torange_mariadb/redis/redis-server 0.0.0.0:16379
  • 서비스 계정: torange
  • 실행 경로: /app/torange/torange_mariadb/redis/redis-server
  • 리스닝: 0.0.0.0:16379 (모든 인터페이스에 바인딩)

▪ Redis 버전 확인 예시

$ redis-cli -h 127.0.0.1 -p 16379 INFO server | grep -i redis_version
redis_version:4.0.10

위와 같이 4.x 구버전이 사용 중이라면, CVE-2025-49844 뿐 아니라 최근 보안 공지에서 언급된 다수 취약점에 모두 해당되므로 업그레이드가 아닌 “전면 교체” 수준으로 접근하는 것이 안전합니다.

3️⃣ CVE-2025-49844 기술 개요

1. 취약점 핵심 요약

  • 취약점 ID: CVE-2025-49844
  • 심각도: CVSS 10.0 (Critical) 수준으로 평가됨
  • 영향 기능: Lua 스크립트(EVAL 등) 실행 기능
  • 공격 조건: 인증 가능한 계정 또는 인증이 비활성화된 Redis 인스턴스

2. 취약점 동작 방식(요약)

  1. 공격자가 Redis에 접속한 뒤, 특수 제작된 Lua 스크립트EVAL 등으로 실행 요청.
  2. Lua 엔진 내부의 오래된 use-after-free 메모리 오류가 트리거되며 메모리가 손상.
  3. 샌드박스 밖의 네이티브 코드가 실행될 수 있는 상태로 이어져, 공격자가 만든 리버스 셸 / 명령 실행 페이로드가 동작.
  4. 이후 공격자는 호스트 OS 권한으로 파일 접근, 계정 탈취, 추가 악성코드 설치, 내부망 측면 이동 등을 수행할 수 있음.

4️⃣ 영향 버전 및 안전 버전 정리

공식 권고에 따르면, 6.x ~ 8.x 주요 릴리스 라인 대부분이 영향을 받으며, 패치가 반영된 최소 버전은 다음과 같습니다.

릴리스 라인 취약 버전 범위 권장 최소 버전(이상)
6.2.x 6.2.20 이하 전체 6.2.20 이상 최신
7.2.x 7.2.10 이하 7.2.11 이상
7.4.x 7.4.5 이하 7.4.6 이상
8.0.x 8.0.3 이하 8.0.4 이상
8.2.x 8.2.1 이하 8.2.2 이상
4.x, 5.x 등 더 구버전 공식 지원 종료, 다수 취약점 누적 최소 6.2.x / 7.2.x / 8.x 최신 안정 버전으로 교체

예시 환경 업그레이드 권고

  • redis-cli 4.0.10Redis 7.2.11 이상 또는 신규 구축 시 8.0.4 이상으로 마이그레이션 권장
  • 운영 정책, 모듈 호환성에 따라 LTS에 가까운 6.2.x, 7.2.x 중 하나를 선택할 수 있지만, 가능하면 최신 메이저 라인을 권장

5️⃣ 점검 절차(실무용 체크리스트)

1. 버전·노출 상태 확인

  1. redis-cli INFO serverredis_version 확인
  2. ss -tulpn | grep redis 또는 netstat로 바인딩 포트와 주소 확인
  3. 방화벽/보안그룹에서 해당 포트가 인터넷에 직접 노출되어 있는지 점검
  4. Redis 설정 파일(redis.conf)의 requirepass/aclfile 여부 확인

2. 의심스러운 Lua 스크립트 사용 유무 점검

  • 애플리케이션 코드에서 EVAL, EVALSHA, SCRIPT LOAD 등을 사용하는 부분 조사
  • 운영 중인 Lua 스크립트가 있다면 형상관리(Git 등)에 등록되어 있는지, 변경 이력이 정상인지 확인

3. 로그 및 행위 기반 탐지

  • Redis 로그에서 비정상적인 Lua 호출, 알 수 없는 키/명령 패턴, 외부로 나가는 셸 명령 흔적 확인
  • 호스트 관점에서:
    • Redis 계정으로 실행되는 bash, sh, curl, wget, nc 등 프로세스 탐지
    • 알 수 없는 비인가 사용자 계정, authorized_keys 수정 흔적 점검

6️⃣ 조치 전략 및 운영 가이드

1. 단기 조치(패치 전 임시 대응)

  • 외부 노출 인스턴스는 즉시 방화벽 또는 보안그룹으로 접근 IP 제한
  • 사용하지 않는 경우, Lua 스크립트 기능 비활성화 또는 ACL로 EVAL 계열 명령 차단
  • Redis 프로세스 계정을 비루트 일반계정으로 한정하고, 파일 시스템 권한 최소화

2. 장기 조치(버전 업그레이드 및 구조 개선)

  1. 테스트 환경에서 Redis를 권장 패치 버전(예: 7.2.11 이상, 8.0.4 이상)으로 업그레이드 후 애플리케이션 회귀 테스트
  2. 운영 환경에서는:
    • 새 버전 Redis 노드 구성 → 데이터 복제 또는 덤프/복원 → 서비스 트래픽 전환
    • 구버전 노드는 일정 기간 모니터링 후 완전 제거
  3. 구성 파일 재정비:
    • bind 127.0.0.1 <내부 IP> 형태로 불필요한 외부 바인딩 제거
    • 필수적으로 requirepass 또는 ACL 기반 인증 강제

3. 재발 방지 및 모니터링

  • 정기적으로 CVE 피드 및 벤더 보안 공지 모니터링 후, Redis 보안 업데이트 계획에 반영
  • SIEM/로그 수집 시스템에 Redis 로그를 연동해 Lua 실행·인증 실패·비정상 명령 패턴을 탐지 룰로 구성
  • 클라우드 환경에서는 CSPM/워크로드 보안 솔루션으로 익명 Redis 인스턴스 자동 탐지·차단 정책 적용

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

  1. 1단계 - 노출 차단
    • 의심 인스턴스의 외부 접근을 즉시 차단(보안그룹/방화벽/로드밸런서 레벨)
    • 필요 시 서비스 중단을 감수하더라도, RCE 확산을 막는 것을 우선
  2. 2단계 - 상태 진단
    • 버전, 설정, 프로세스·포트 상태, 최근 로그 및 시스템 변경 이력 점검
    • 의심 Lua 스크립트, 알 수 없는 계정 및 프로세스 식별
  3. 3단계 - 패치·마이그레이션
    • 테스트 후 권장 버전으로 업그레이드 또는 신규 클러스터로 마이그레이션
    • 동시에 인증·네트워크 정책·권한 모델을 재설계
  4. 4단계 - 모니터링·리뷰
    • 보안 솔루션 및 로그 기반 탐지 룰을 업데이트
    • 취약점 대응 결과를 문서화하고, 향후 동일 유형 이슈가 반복되지 않도록 아키텍처와 운영 프로세스를 재점검
반응형
LIST