[단독공격] 분석 — CVE-2022-0543
CVE-2022-0543 allows unauthenticated remote code execution on Debian/Ubuntu Redis installations via a Lua sandbox escape; immediate patching or isolation of port 6379 is required.
📋 요약
- 심각도 critical · CVSS 10.0 · EPSS 0.99277 · 악용난이도 easy · KEV
🔍 공격 기법
-
공격 표면
- TCP 6379(기본 Redis 포트) 가 외부에 노출된 경우.
EVAL,EVALSHA,SCRIPT LOAD등 Lua 스크립트를 실행할 수 있는 명령이 비활성화되지 않은 상태.
-
트리거 조건
- Debian/Ubuntu 패키징 오류로 인해 redis‑server 가 Lua 샌드박스 내부에서
debug라이브러리를 차단하지 않음(패키지에 포함된lua5.1의 sandbox 제한 미비). - 공격자는 인증 없이 단일
EVAL "<악성 Lua>"요청만으로 샌드박스를 탈출하고 OS 명령을 실행할 수 있음.
- Debian/Ubuntu 패키징 오류로 인해 redis‑server 가 Lua 샌드박스 내부에서
-
공격 단계
- 정찰 – Nmap 등으로 포트 6379 확인,
INFO로 버전·protected-mode상태 파악. - 초기 접근 –
EVAL "return redis.call('debug','setmodulepath','/tmp')"와 같이debug함수를 호출해 임시 파일에 Lua 바이트코드(또는 외부 모듈) 를 기록하고, 이어서os.execute("/bin/sh -c '<payload>'")형태의 명령을 포함한 스크립트를 전송. - 실행·권한 획득 – Redis 프로세스 권한(
redis사용자 또는 시스템에 따라 root) 으로 쉘이 실행되어 임의 명령 수행. - 지속 –
/etc/cron.d/,systemd서비스 파일, 혹은~/.ssh/authorized_keys등에 악성 코드를 남겨 재부팅 후에도 유지. - 영향 – 호스트 전체 장악 → 파일·서비스 조작, 내부 네트워크 횡방향 이동 가능.
- 정찰 – Nmap 등으로 포트 6379 확인,
-
CVSS ↔ 실제 조건 매핑
AV:N: 원격 네트워크에서 직접 접근 가능.AC:L: 단일EVAL명령만 필요(복잡도 낮음).PR:N: 인증 불필요, 기본 설정 그대로 노출 시 즉시 이용 가능.UI:N: 사용자 상호작용 전혀 요구되지 않음.
-
근거
- 다중 소스에서 일관성이 확인됐으며(교차검증) EPSS 0.99277이라는 실측 악용 확률이 매우 높음(실제 공격 가능성 ≈ 99%).
- KEV 등재와 “easy” 난이도 평가가 즉시 대응을 요구하는 이유이며, 규칙 기반 우선순위는 CVSS 10·KEV·EPSS·exploit‑easy 로 immediate 로 결정됨.
악용 가능성: 이 취약점은 AV:N (네트워크를 통한 원격 접근)·AC:L (매우 낮은 복잡도)·PR:N (공격자가 사전 권한을 필요로 하지 않음)·UI:N (사용자 상호작용 없이 실행 가능)이라는 CVSS 벡터에 따라, 외부에서 별도의 인증 절차 없이 바로 공격이 시작될 수 있음을 의미합니다. EPSS 0.99277이라는 높은 실측 확률과 KEV 등재 사실은 실제 악용 사례가 빈번히 보고되고 있음을 입증하며, 이론적 심각도와 무관하게 운영 환경에서 즉시 위협이 된다는 근거가 됩니다. 공격 표면은 Redis 서버가 외부에 노출된 TCP 포트(기본 6379)와 Lua 스크립트를 전송할 수 있는 EVAL/EVALSHA 명령어이며, 해당 명령어에 전달되는 스크립트 문자열이 바로 악용 파라미터가 됩니다. 초기 정찰 단계에서는 포트 스캔으로 Redis 서비스를 식별하고, 인증 없이 INFO 명령 등으로 버전 및 설정 정보를 획득합니다. 이후 공격자는 EVAL 명령을 이용해 제한된 Lua 샌드박스를 우회하는 페이로드를 삽입하면, 패키징 오류로 인해 시스템 레벨 명령 실행이 가능해져 원격 코드 실행(RCE) 단계에 도달합니다. 이 과정에서 별도의 권한 상승이나 추가 결함 체이닝 없이도 바로 임의 코드를 실행할 수 있기 때문에 난이도는 “easy”로 평가됩니다.
💥 영향 분석
- Redis 서버가 실행 중인 호스트 전체에 임의 코드 실행 권한 부여 →
redis혹은 root 수준에서 시스템 명령 수행 가능. - 파일 시스템 조작, 서비스·크론 삽입 등 지속성 확보 → 재부팅 후에도 악성 행위 유지.
- 내부 네트워크로 이동하여 다른 서비스 침해·데이터 탈취가 현실화.
🔗 관련 취약점·체이닝
- CWE‑269 (Improper Privilege Management) – Redis 가 높은 권한으로 실행돼 쉘 명령을 직접 수행할 수 있음.
- CWE‑20 (Improper Input Validation) – 외부 입력(
EVAL스크립트) 검증 부족으로 악성 Lua 코드가 그대로 실행됨. - 추정: 동일 호스트에 존재하는 다른 권한 상승 취약점(예: SUID 바이너리, kernel CVE) 과 연계하면 루트 권한을 확보하고 보다 정교한 지속성을 구축할 수 있음.
🔎 탐지
- Redis 로그에
EVAL/SCRIPT LOAD호출 시debug,os.execute,io.popen문자열이 포함된 경우 경보. - 프로세스 감시:
redis-server자식으로/bin/sh,/usr/bin/python등 외부 실행 파일 생성 시 알림. - 네트워크 흐름: Redis 서버가 비정상적으로 외부 IP(예: 80/443) 로 연결을 시도하는 트래픽 포착.
🛡️ 완화 방안
- 즉시 조치 :
apt-get update && apt-get install --only-upgrade redis로 최신 패치를 적용하고, 방화벽으로 포트 6379 를 내부망에만 허용. - 구성 변경 – 위험 명령 비활성화:
rename-command EVAL "",rename-command SCRIPT ""혹은 ACL 로 접근 차단. - 격리 강화 – AppArmor/SELinux 프로파일 적용해 파일·네트워크 접근 최소화.
- 장기 방어 – 자동 보안 업데이트 정책 활성화, 정기적인 Redis 설정·로그 감사 수행.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=10.0 · KEV · EPSS=0.99277 · exploit=easy · in_scope=None