[데일리시큐]레디스 ‘레디셸’ 취약점, 13년 된 버그가 호스트 장악 위협으로…“전 세계 33만 서버 위험”

2025. 10. 8. 12:27·보안이슈

내용 요약

Redis 7.x에 CVE‑2025‑49844 (RediShell) 라는 CVSS 10.0 등급의 심각한 UAF(Use‑After‑Free) 취약점이 발견되었습니다.
루아(Lua) 스크립트 내 가비지 컬렉터를 조작해 메모리 손상을 일으키면, Lua 샌드박스 탈출이 가능해 호스트 OS에서 임의 코드를 실행할 수 있습니다.

핵심 포인트

  • RediShell은 루아 가비지 컬렉터의 UAF 결함을 이용해 샌드박스를 탈출, 외부 코드 실행을 가능케 합니다.
  • 공격 벡터는 인증된 사용자(또는 내부 사용자)이며, Lua 스크립트를 통해 악의적인 객체를 조작합니다.
  • 완전한 패치는 Redis 7.2.1+로 업그레이드하거나, Lua 기능을 비활성화하고, 네트워크 격리 및 모니터링을 강화하는 것이 핵심 방어 수단입니다.

기술 세부 내용

1️⃣ Redis

  • 개요
    • 오픈소스 인메모리 데이터베이스, key‑value 저장소, 캐시, 메시지 브로커 역할.
    • 단일 스레드 모델과 이벤트 루프를 사용해 고성능과 낮은 지연을 제공.
    • redis-server와 redis-cli가 기본 실행 엔진과 CLI 도구이며, Redis 7.x 버전에서 루아(Lua) 스크립트 기능을 강화했습니다.
  • 핵심 아키텍처
    1. Event‑Driven I/O – epoll/kqueue를 통해 비동기 I/O 처리.
    2. Command Dispatch – 클라이언트 요청을 파싱해 내부 함수 포인터로 라우팅.
    3. Lua VM – Lua 5.1 기반으로, redis.call, redis.pcall, redis.log 등 API를 제공.
    4. Sandbox – Lua 실행 시 redis.limits에 의해 메모리/시간 제한을 적용, 외부 시스템 호출을 차단.
  • 보안 포인트
    • 인증/인가(ACL), TLS 암호화, 방화벽 규칙 등으로 접근을 제어.
    • protected-mode가 활성화되면 기본적으로 외부 접속을 차단합니다.

2️⃣ Lua 스크립트와 샌드박스

  • Lua 스크립트
    • EVAL, EVALSHA 명령어를 통해 서버에서 직접 Lua 코드를 실행.
    • API: redis.call, redis.pcall, redis.log, redis.error_reply, redis.error_reply 등.
    • Lua VM은 C 코드를 호출해 Redis 내부 구조에 접근하지만, 직접 OS 호출은 제한됩니다.
  • 샌드박스 구현
    • lua_setfield 등을 통해 redis 테이블을 노출, 그러나 os 모듈, 파일 I/O는 비활성화.
    • 메모리 사용량과 실행 시간 제한은 redis.conf의 lua-time-limit과 lua-memory-limit로 제어.
    • 핵심: 샌드박스는 Lua VM 내부와 외부 OS 간에 저장된 함수 포인터(callback)를 사용해 제한을 구현합니다.
  • 샌드박스 탈출 가능성
    • UAF: 객체가 메모리에서 해제된 뒤 여전히 참조가 남아 있을 때, 새로운 객체가 같은 메모리 영역에 할당되어 원래 객체의 데이터가 노출/오버라이트될 수 있습니다.
    • Lua 스크립트에서 가비지 컬렉터를 트리거하고, 특정 객체를 불안정하게 재활용하도록 조작하면 원래의 메모리 블록에 접근할 수 있습니다.

3️⃣ CVE‑2025‑49844 (RediShell) – Use‑After‑Free

  • 취약점 개요
    • Vulnerability: Redis 7.x의 Lua 가비지 컬렉터 구현에서 특정 객체가 free() 된 뒤에도 포인터가 남아 있습니다.
    • Trigger: 악의적 Lua 스크립트가 pcall, call을 반복적으로 사용해 메모리 상태를 교란시킵니다.
    • Impact: 공격자는 원래의 Lua 스크립트 객체를 다른 데이터(예: client 객체)로 덮어쓰거나 불법적인 포인터를 통해 OS 호출을 유도합니다.
  • 공격 흐름
    1. 인증 – Redis 서버에 연결(ACL/비밀번호)
    2. 스마트 스크립트 – 특정 루아 함수(redis.call, redis.pcall)를 반복해 GC 트리거
    3. 메모리 상태 교란 – free() 후 새 객체를 같은 메모리 영역에 할당
    4. UAF 발생 – 기존 객체 포인터를 새 객체에 덮어쓰기
    5. 샌드박스 탈출 – 새 객체가 내부 C 함수 포인터(예: system())를 호출, 임의 명령어 실행
  • 취약점 탐지
    • Redis 7.x의 redis-server -v 로 버전 확인
    • lua-debug 모듈(3rd‑party)에서 GC 트리거 로그 확인
    • 모니터링: INFO stats에서 used_memory_peak과 gc_cycles 변화 추적
  • 위험 수준
    • CVSS 10.0: 완전한 Zero‑Day 취약점으로, 인증된 사용자라도 완전 제어 가능
    • 외부 공격은 인증이 필요하지만, 내부 공격(관리자 계정)에서는 더 심각

4️⃣ 방어 및 대응 전략

단계 조치 상세
즉각 Redis 업그레이드 7.2.1(또는 최신)로 패치: UAF 버그 수정
장기 Lua 비활성화 redis.conf: lua-time-limit 0, lua-memory-limit 0 또는 rename-command EVAL ""
네트워크 내부망 격리 Redis 인스턴스를 내부 서브넷에 배치, 외부 접근 차단 (ACL, 방화벽)
모니터링 이상 징후 탐지 INFO stats → used_memory_peak, clients_connected → 로그 알림
정책 최소 권한 ACL 설정: user <name> on >password +@all -dangerous-command
보안 테스트 취약점 스캔 Redscan, Qualys, Nessus 등에서 CVE‑2025‑49844 검증
  • 구체적 패치 내용
    • 가비지 컬렉터에서 sdsFree 호출 후 포인터를 NULL로 초기화.
    • robj 객체의 refcount 관리 방식을 개선해 UAF 방지.
    • Lua VM 내부에서 메모리 할당 시 red->client 포인터를 검증하는 체크 추가.

5️⃣ 실무 예시: RediShell 대응 워크플로우

  1. 감지
    • redis-cli INFO → redis_version:7.1.5 → 패치 필요
    • redis-cli CONFIG GET lua* → lua-time-limit 1000 (기본값)
  2. 패치
    • Debian/Ubuntu: apt-get install --only-upgrade redis-server
    • CentOS/RHEL: yum update redis
    • Docker: docker pull redis:7.2.1
  3. 검증
    • redis-cli EVAL "return 1" 0 → 정상 동작 확인
    • redis-cli EVAL "redis.call('EVAL', 'return 1', 0)" 0 → UAF 발생 여부 테스트
  4. 운영
    • redis.conf: protected-mode yes, requirepass 설정
    • ACL SETUSER default off +@all → 비활성화된 기본 사용자
  5. 보고
    • 보안팀에 CVE‑2025‑49844 대응 문서 공유
    • 고객에게 보안 패치 권고 및 업데이트 가이드 제공

6️⃣ 보안 모범 사례 정리

  • 최소 권한 원칙: Redis ACL로 필요한 명령어만 허용.
  • 보안 업데이트 주기: 주 2회 이상, apt/yum 자동 업데이트 설정.
  • 배포 자동화: Ansible/Helm 차트에 패치 적용 스크립트 포함.
  • 백업 및 복구: RDB/AOF 파일을 정기적으로 암호화 백업.
  • 외부 접근 제한: iptables, cloud security groups에서 6379 포트 차단, VPN 사용.

마무리

RediShell은 Redis의 핵심 기능 중 하나인 Lua 스크립트를 악용한 UAF 취약점으로, 샌드박스 탈출과 임의 코드 실행을 가능케 합니다. 즉시 Redis를 최신 버전으로 업그레이드하고, 필요 시 Lua 스크립트 기능을 비활성화하며, 네트워크 격리와 모니터링을 강화해 보안 리스크를 최소화하십시오. 꾸준한 패치 관리와 보안 정책 적용이 핵심입니다.

 

출처: https://www.dailysecu.com/news/articleView.html?idxno=201210

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'보안이슈' 카테고리의 다른 글

[보안뉴스]잇단 통신사 해킹에 불안...통신분쟁조정 신청 늘고 있다  (0) 2025.10.10
[보안뉴스]송경희 제3대 개인정보위원장 “신뢰기반 AI 혁신 최선 다할 것”...취임식 개최  (0) 2025.10.10
[보안뉴스]레디스 DB 치명적 취약점 발견...해커, 원격 코드 실행 공격 가능  (0) 2025.10.08
[KRCERT]Oracle 제품 보안 업데이트 권고  (0) 2025.10.08
[데일리시큐]CISA, 오라클 EBS 제로데이 포함한 7건의 이미 공격에 악용된 취약점 공개…긴급 패치 필요  (0) 2025.10.08
'보안이슈' 카테고리의 다른 글
  • [보안뉴스]잇단 통신사 해킹에 불안...통신분쟁조정 신청 늘고 있다
  • [보안뉴스]송경희 제3대 개인정보위원장 “신뢰기반 AI 혁신 최선 다할 것”...취임식 개최
  • [보안뉴스]레디스 DB 치명적 취약점 발견...해커, 원격 코드 실행 공격 가능
  • [KRCERT]Oracle 제품 보안 업데이트 권고
레부긔
레부긔
  • 레부긔
    코딩이 싫은 거북이
    레부긔
  • 전체
    오늘
    어제
    • 분류 전체보기 (1072)
      • 인프라 취약점 진단 (1)
      • 웹 취약점 진단 (2)
        • BWAPP (1)
        • DVWA (1)
      • DevOps 통합 (4)
        • NAS_NextCloud (3)
        • Cuckoo Sandbox (0)
      • 2026 주정통 취약점 분석•평가 가이드라인 (3)
        • 01_Unix서버 (3)
        • 02_Windows서버 (0)
        • 03_웹서비스 (0)
        • 04_보안장비 (0)
        • 05_네트워크장비 (0)
        • 06_제어시스템 (0)
      • API 관련 (0)
      • 보안이슈 (1047)
      • CVE (13)
  • 인기 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
레부긔
[데일리시큐]레디스 ‘레디셸’ 취약점, 13년 된 버그가 호스트 장악 위협으로…“전 세계 33만 서버 위험”
상단으로

티스토리툴바