[방어] 분석 — CVE-2024-47736
The erofs kernel bug (CVE‑2024‑47736) can cause a local deadlock that leads to complete system unavailability, and the fastest mitigation is to block loading of the erofs module until a patched kernel is deployed.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00182 · 악용난이도 hard
🔍 공격 기법
- 로컬 사용자가 저수준 권한(Low Privilege)으로 조작된 erofs 이미지 파일을 마운트한다.
- 이미지 내부에 물리적 블록이 겹치는 다중 큰 pcluster가 존재하면, 커널의
z_erofs_fill_bio_vec()와 BIO 제출 순서가 뒤섞여 캐시된 folio 락을 기다리는 데드락 상황이 발생한다. - 데드락에 빠진 태스크는 영원히 대기하게 되며, 결국 시스템 전체가 응답하지 않게 된다(DoS).
악용 가능성: 이 취약점은 CVSS 벡터 AV:L/AC:L/PR:L/UI:N 로 정의되므로, 공격자는 로컬 시스템에 접근할 수만 있으면(AV:L) 복잡한 단계 없이(AC:L) 낮은 권한 수준(예: 일반 사용자)으로도 이용 가능하고 별도의 사용자 상호작용이 필요하지 않습니다(UI:N). 그러나 실제 악용을 위해서는 공격자가 조작된 EROFs 이미지를 시스템에 마운트하거나, 이미지 파일을 받아들이는 서비스(컨테이너 레지스트리, OTA 업데이트 등)를 통해 커널에 전달해야 하는 전제조건이 존재합니다. 이러한 전제조건은 일반적인 운영 환경에서 흔히 노출되지 않으며, 정상적인 파일시스템 이미지는 겹치는 pcluster 구조를 생성하지 못하므로 공격 표면이 제한적입니다. EPSS 값 0.00182(≈0.18 %)는 현재까지 관측된 실제 악용 사례가 매우 드물다는 것을 의미하고, KEV에 등재되지 않은 점도 이 취약점이 아직 실전 위협으로 전환되지 않았음을 뒷받침합니다. 따라서 이론적인 심각도는 “hard”로 평가되지만, 공격자가 조작된 이미지를 로컬에 배포·마운트할 수 있는 상황이 마련되어야만 실제 악용이 가능하므로 난이도는 중간 수준으로 볼 수 있습니다. 이러한 조건을 고려하면 방어자는 이미지 검증 및 마운트 전 무결성 체크를 통해 공격 표면을 최소화하는 것이 효과적인 초기 대응이 됩니다.
💥 영향 분석
- Availability (A:H): 커널 내부에서 교착 상태가 발생하면 해당 노드는 완전히 멈추어 서비스 제공이 중단된다.
- Confidentiality·Integrity는 영향을 받지 않는다(C:N/I:N).
- 공격자는 로컬 접근 권한만 있으면 되므로, 일반 사용자 계정이라도 악의적인 이미지 마운트를 수행할 경우 위험에 처한다.
🔗 관련 취약점·체이닝
- 동일 파일시스템인 erofs에서 과거에 보고된 compressed data handling 오류와 유사하게, 조작된 메타데이터를 이용해 커널 내부 락 구조를 교란시키는 패턴을 공유한다. 현재 확인된 다른 CVE 번호는 없으며, 별도 체이닝 시나리오는 제한적이다.
🔎 탐지
-
로그 지표
dmesg/kernel 로그:"erofs: deadlock"혹은"folio lock wait"문자열 포함.auditd기록:syscall=165 (mount)이면서filesystem="erofs"및path가 비정상적인 디렉터리(예:/tmp, 사용자 홈)인 경우.
-
SIEM 탐지 규칙 예시
-
Kernel Log Rule
text1source = syslog2where message matches /erofs.*deadlock|folio lock wait/3alert "Potential CVE‑2024‑47736 deadlock" -
Audit Mount Rule
sql1SELECT event_time, exe, path, result2FROM auditd3WHERE syscall = 165 AND arg_filesystem = 'erofs'4 AND (path LIKE '/tmp/%' OR path LIKE '/home/%')5LIMIT 10; -
Task Hang Monitoring
text1source = procstat2where state = 'D' and command contains 'mount' and elapsed_time > 300s3alert "Long‑running mount task – possible erofs deadlock"
-
-
오탐 튜닝
- 정상적인 시스템 업데이트나 테스트 환경에서
erofs를 사용한다면, 위 규칙에result = 'success'조건을 추가하거나, 특정 호스트/사용자를 화이트리스트에 등록한다. procstat규칙은 I/O 대기 상태가 일시적인 경우도 포함하므로, 연속 3회 이상 발생 시 알림을 발생하도록 임계값을 조정한다.
- 정상적인 시스템 업데이트나 테스트 환경에서
🛡️ 완화 방안
-
즉시(긴급 차단) – 오늘 당장 적용할 임시 차단 한 가지
/etc/modprobe.d/erofs.conf에 다음 라인을 추가하고modprobe -r erofs로 언로드한다.text1install erofs /bin/false- 이 조치는 erofs 모듈 로드를 완전히 차단해 악성 이미지 마운트를 즉시 방지한다. 구현 난이도 ★★, 시스템 가용성에 영향 없음,
lsmod | grep erofs로 정상 여부 검증 가능.
-
단기(완화)
- 이미지 신뢰성 검사: 마운트 전
sha256sum혹은 서명 검증을 수행하도록 자동화 스크립트를 배포한다. (난이도 ★★, 성능에 약간의 오버헤드). - SELinux/AppArmor 정책 강화:
erofs파일시스템 마운트를unconfined_t가 아닌 제한된 도메인에서만 허용하도록 정책을 추가한다. (난이도 ★★★, 일부 서비스 재시작 필요). - 커널 워치독 활성화:
kernel.hung_task_timeout_secs=60로 설정해 일정 시간 이상 대기하는 태스크를 자동으로 재부팅하거나 알림하게 한다. (난이도 ★★, 가용성에 약간의 위험 존재).
- 이미지 신뢰성 검사: 마운트 전
-
근본(해결)
- 패치 적용: 커널 버전 5.13‑6.10.13 및 6.11‑6.11.2에서 제공되는 패치를 즉시 배포한다. 최신 LTS 커널(예: 6.12)으로 업그레이드하면 해당 취약점이 완전히 제거된다. (난이도 ★★★★, 재부팅 필요).
- 검증 방법: 패치 적용 후
grep erofs /proc/filesystems로 파일시스템 목록을 확인하고, 조작된 이미지로 마운트 시도가EINVAL혹은"unsupported"오류를 반환하는지 테스트한다.
-
잔여 리스크
- 패치를 적용하더라도 동일한 메커니즘(겹치는 pcluster) 기반의 새로운 버그가 존재할 가능성이 있다. 따라서 위 탐지 규칙을 지속적으로 운영하고, 커널 보안 업데이트를 정기적으로 검토해야 한다.
-
인시던트 대응 플레이북
dmesg·audit.log에서 “erofs deadlock” 메시지 유무 확인.- 해당 호스트에서
ps -eo pid,comm,state,etime | grep D로 교착 상태 프로세스 식별. - 즉시
systemctl isolate emergency.target혹은 재부팅 수행. - 이미지 파일 경로와 소유자를 조사하고, 비정상적인 마운트 시도 차단 정책 적용 여부 검증.
- 사후 분석 후 위 완화 방안을 단계별로 실행한다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00182 · exploit=hard · in_scope=None