[방어] 분석 — CVE-2022-0543
CVE-2022-0543 is a Debian‑specific Redis Lua sandbox escape that enables unauthenticated remote code execution, and the highest‑priority immediate mitigation is to block external access to TCP 6379 and disable EVAL/SCRIPT commands until the package is patched.
📋 요약
- 심각도 critical · CVSS 10.0 · EPSS 0.99277 · 악용난이도 easy · KEV
🔍 공격 기법
Debian/Ubuntu 패키지에 포함된 특정 버전의 Redis 서버는 Lua 샌드박스가 제대로 격리되지 않아, 클라이언트가 EVAL 혹은 SCRIPT LOAD 명령으로 임의의 Lua 코드를 전송하면 호스트 파일 시스템 및 프로세스를 조작할 수 있습니다. 네트워크에서 인증 없이 접근 가능한 Redis 인스턴스에 대해 공격자는 단순히 해당 명령을 전송함으로써 /bin/sh 를 실행하고 루트 권한까지 상승시킵니다.
악용 가능성: AV:N(네트워크)·AC:L(낮은 복잡도)·PR:N(공격자 권한 없음)·UI:N(사용자 상호작용 없음)의 CVSS 벡터는, 공격자가 네트워크를 통해 바로 Redis 인스턴스에 접근해 특별한 전제조건 없이 악성 Lua 코드를 전달할 수 있음을 의미합니다. 실제로 Debian 패키지의 Lua 샌드박스 설정 오류가 존재하므로, 인증이 비활성화된 기본 포트(6379)에서 TCP 연결만 확보하면 바로 익스플로잇을 실행할 수 있습니다. EPSS = 0.99277이라는 매우 높은 실측 확률과 KEV 목록 등재는 이 취약점이 이미 실제 악용 사례가 보고되었으며, 이론적 심각도와 무관하게 현재 위협 수준이 최고임을 입증합니다. 공격자는 EVAL 명령으로 임의 Lua 스크립트를 전송하고, 샌드박스 탈출을 통해 시스템 쉘을 획득해 원격 코드 실행(RCE)을 달성합니다. 노출된 공격 표면은 외부에서 접근 가능한 Redis 서비스(네트워크 바인딩 IP·포트)와 인증이 비활성화된 경우이며, 별도 입력 검증 없이 받아들여지는 모든 문자열 파라미터가 악용 대상이 됩니다. 따라서 해당 인스턴스에 대한 네트워크 접근 자체가 공격 성공의 전제조건이 되며, 추가적인 방어 조치 없이는 즉시 위험에 노출됩니다.
💥 영향 분석
- 성공 시 공격자는 시스템 수준 쉘을 획득하여 파일 읽기·쓰기·삭제, 서비스 재시작 및 추가 악성 코드를 배포할 수 있습니다.
- Redis에 저장된 데이터가 변조·유출될 뿐 아니라, 동일 호스트 내 다른 서비스로의 Lateral Movement이 가능해집니다.
🔗 관련 취약점·체이닝
Lua 샌드박스 탈출은 CWE‑284(인증 우회)와 CWE‑269(권한 상승)의 조합으로, 획득한 쉘을 이용해 동일 호스트에 존재하는 다른 스크립트 실행 취약점(예: MongoDB CVE‑2021‑xxxx)과 연계하여 권한 상승이나 데이터 탈취를 확대할 수 있습니다.
🔎 탐지
-
로그 소스
redis.log:cmd필드에EVAL,SCRIPT LOAD,SCRIPT DEBUG등 Lua 관련 명령이 기록됩니다.- 시스템 감사 로그(
auditd) :exe="/usr/bin/redis-server"프로세스가/bin/sh혹은 다른 실행 파일을 호출하는 이벤트. - 커널 로그(
kern.log) : AppArmor/SELinux 가DENIED메시지를 남기면 샌드박스 우회 시도가 포착됩니다.
-
SIEM 탐지 규칙 예시
source="redis.log" AND message =~ /EVAL\s+.*(os\.execute|io\.popen|system)/→ Lua 스크립트 내 시스템 호출 시도 감지.audit.type=EXECVE AND exe="/usr/bin/redis-server" AND a0="/bin/sh"→ Redis 프로세스가 쉘을 실행한 경우 경보.source="redis.log" AND message =~ /SCRIPT\s+(LOAD|DEBUG)\s+([a-f0-9]{40})/→ 신규 Lua 스크립트 로드 시도 기록, SHA‑1 해시를 화이트리스트와 비교 가능.
-
오탐 튜닝
- 정상 자동화에서
EVAL을 사용하는 경우 해당 스크립트의 SHA‑1 값을 화이트리스트에 등록하고, 위 규칙에NOT sha IN (white_list)조건을 추가합니다. - 빈번히 발생하는
SCRIPT DEBUG는 별도 로그 파이프라인으로 분리해 5분당 10건 초과 시만 경보를 올리도록 임계값을 설정합니다.
- 정상 자동화에서
🛡️ 완화 방안
-
즉시(긴급 차단)
- 조치: 외부 IP에서 Redis 포트 6379에 대한 모든 접근을 방화벽(NFTables, iptables 또는 클라우드 보안 그룹)으로 차단하고,
protected-mode yes를 강제 적용합니다. 동시에rename-command EVAL ""와rename-command SCRIPT ""로 해당 명령을 비활성화합니다. - 난이도: ★★ (구성 파일 수정 후 서비스 재시작)
- 운영 영향: 내부 자동화가 Lua 스크립트를 사용한다면 즉시 실패하므로, 해당 워크플로를 일시 중단하거나 대체 로직을 준비해야 합니다.
- 검증:
redis-cli CONFIG GET protected-mode결과가yes인지 확인하고, 외부 IP에서nc -zv <host> 6379시도 시 연결이 차단되는지 테스트합니다.
- 조치: 외부 IP에서 Redis 포트 6379에 대한 모든 접근을 방화벽(NFTables, iptables 또는 클라우드 보안 그룹)으로 차단하고,
-
단기(완화)
- 조치: 신뢰된 서브넷만 Redis 포트에 접근하도록 방화벽 ACL을 설정하고,
lua-replication no로 복제 과정에서 Lua 실행을 금지합니다. 현재 설치된 패키지 버전을apt list --installed redis-server로 확인해 취약 버전(5.x‑6.x) 여부를 파악합니다. - 난이도: ★ (네트워크 팀과 협업 필요)
- 운영 영향: 외부 서비스가 직접 Redis에 연결해야 하는 경우 프록시·터널을 추가로 구성해야 할 수 있습니다.
- 검증:
iptables -L INPUT -v -n | grep 6379로 규칙 적용 여부 확인 후, 내부 테스트 클라이언트에서 정상 동작을 검증합니다.
- 조치: 신뢰된 서브넷만 Redis 포트에 접근하도록 방화벽 ACL을 설정하고,
-
근본(해결)
- 조치: Debian/Ubuntu 보안 업데이트가 제공되는 즉시
apt-get update && apt-get install redis-server로 최신 패키지를 배포합니다. 공식 Redis upstream에서 제공하는 패치를 적용하거나, 자체 빌드된 최신 버전으로 교체합니다. - 난이도: ★★★ (패키지 테스트·배포 파이프라인 구축 필요)
- 운영 영향: 서비스 재시작 시 잠시 다운타임이 발생하므로 롤링 업데이트와 무중단 배포 전략을 권장합니다.
- 검증: 패치 적용 후
redis-cli INFO에서lua_enabled:0(또는 해당 플래그가 존재하지 않음) 를 확인하고, CVE-2022-0543 스캐너 결과 “Not Vulnerable” 인지 검증합니다.
- 조치: Debian/Ubuntu 보안 업데이트가 제공되는 즉시
-
잔여 리스크
- 최신 패키지를 적용하더라도 Lua 샌드박스 설계 자체에 잠재적 결함이 남아 있을 수 있으므로, AppArmor/SELinux 프로파일을 강화해
redis-server가 파일·프로세스 실행 권한을 최소화하도록 추가 방어층을 구축합니다.
- 최신 패키지를 적용하더라도 Lua 샌드박스 설계 자체에 잠재적 결함이 남아 있을 수 있으므로, AppArmor/SELinux 프로파일을 강화해
오늘 당장 적용할 임시 차단 한 가지: 외부 네트워크에서 Redis 기본 포트 6379 로의 모든 트래픽을 방화벽 규칙 DROP 으로 차단하고, 내부 신뢰 구역만 허용하는 ACL을 즉시 적용하십시오.
다중 소스에서 일관성이 확인됐으며(교차검증), EPSS 0.99277 은 실제 악용 가능성이 거의 100%에 가깝다는 점을 강조합니다. KEV 등재와 “exploit=easy” 판정으로 인해 우선순위는 immediate (24 시간 이내) 로 설정되었습니다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=10.0 · KEV · EPSS=0.99277 · exploit=easy · in_scope=None