[공격] 분석 — CVE-2024-47809
A null pointer dereference in the Linux kernel DLM module can cause a system crash (DoS), requiring monitoring and eventual kernel updates.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00219 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건: request_lock() 함수가 호출될 때, validate_lock_args()를 통한 attach_lkb() 과정이 완료되기 전 단계에서 lkb->lkb_resource가 할당되지 않은 상태로 접근할 때 Null Pointer Dereference 발생. 특히 디버그 로깅이 활성화된 환경에서 리소스 이름을 출력하려 할 때 트리거됨.
(2) 공격 단계:
- 정찰: 대상 시스템의 커널 버전 및 DLM(Distributed Lock Manager) 모듈 사용 여부 확인.
- 초기접근:
AV:L및PR:L조건에 따라, 공격자는 이미 시스템에 일반 사용자 권한으로 접근해 있어야 함. - 실행/영향: 특수하게 조작된 락 요청을 통해 커널 패닉(Kernel Panic) 유도 $\rightarrow$ 시스템 가용성 상실(DoS).
(3) 공격 표면: Linux Kernel DLM 모듈 내 request_lock() 함수 및 관련 리소스 할당 로직.
(4) CVSS 벡터 분석:
AV:L(Local): 네트워크를 통한 원격 공격 불가, 로컬 쉘 필요.PR:L(Low): 일반 사용자 권한으로 실행 가능해야 함.UI:N(None): 사용자 상호작용 불필요.A:H(High): 커널 패닉으로 인한 시스템 전체 중단.
악용 가능성: 본 취약점은 AV:L/PR:L 조건에 따라 이미 시스템 내부 접근 권한을 가진 로컬 사용자가 Linux 커널의 DLM(Distributed Lock Manager) 모듈을 대상으로 공격해야 하므로 진입 장벽이 높습니다. 특히 lkb_resource가 할당되기 전 request_lock() 단계에서 발생하는 Null Pointer Dereference 특성상, 정밀한 타이밍 제어와 특정 레이스 컨디션 유도가 필요하여 실제 익스플로잇 난이도는 'Hard' 수준으로 평가됩니다. EPSS 수치가 0.00219로 매우 낮고 KEV에 등재되지 않은 점은 이론적 취약점일 뿐, 현재 야생(In-the-wild)에서 무기화된 사례가 거의 없음을 시사합니다. 공격 표면은 DLM 프로토콜을 사용하는 커널 내부 함수 및 리소스 이름 파라미터에 국한되며, 일반적인 운영 환경에서는 디버그 로그가 비활성화되어 있어 트리거 조건 충족이 더욱 어렵습니다. 결과적으로 이 취약점은 단독으로 원격 코드 실행(RCE)을 일으키기보다, 커널 패닉을 통한 서비스 거부(DoS)나 다른 메모리 오염 취약점과 체이닝하여 권한 상승(LPE)의 징검다리로 활용될 가능성이 큽니다.
💥 영향 분석
(1) 기술적 위험: 시스템 가용성 파괴. Null Pointer Dereference는 일반적으로 프로세스 종료가 아닌 커널 패닉을 유발하여 대상 서버의 즉각적인 재부팅 또는 다운타임 발생.
(2) 비즈니스 영향: 클러스터 환경에서 DLM을 사용하는 고가용성 서비스의 경우, 단일 노드 다운이 전체 클러스터의 불안정성이나 서비스 중단으로 이어질 수 있음.
🔗 관련 취약점·체이닝
- 추정: 권한 상승 체이닝: 본 취약점 자체는
A:H(가용성 저해)에 집중되어 있으나, 특정 커널 메모리 레이아웃 상황에서 Null Pointer Dereference를 이용한 제어 흐름 조작이 가능하다면 권한 상승(LPE)으로 이어질 가능성이 이론적으로 존재함. - 추정: DoS 체이닝: 다른 로컬 취약점을 통해 권한을 획득한 공격자가 시스템의 완전한 마비를 위해 최종 단계에서 본 결함을 사용하여 흔적 없이 시스템을 다운시키는 시나리오.
🔎 탐지
(1) 로그 지표: 커널 로그(dmesg, /var/log/syslog) 내 Null pointer dereference 메시지와 함께 dlm 모듈 및 request_lock 함수 호출 스택이 포함된 Kernel Oops/Panic 로그.
(2) 탐지 규칙:
- Logic:
EventID: Kernel_Oops AND (Module: "dlm" OR Function: "request_lock") - Pattern:
/Null pointer dereference.*dlm/i(커널 덤프 내 패턴 매칭)
(3) 오탐 시나리오: 하드웨어 결함이나 다른 커널 모듈의 버그로 인한 패닉. DLM 관련 함수 호출 스택이 명확히 포함되었는지 확인하여 필터링 필요.
🛡️ 완화 방안
- 즉시 (긴급 차단): 불필요한 경우 DLM 모듈 로드 해제 또는 사용 제한. (난이도: 하 / 영향: 서비스 기능 상실 가능성 높음)
- 단기 (완화): 커널 디버그 로깅 레벨을 낮추어 취약한 코드 경로(printout 부분) 진입 최소화. (난이도: 하 / 영향: 분석 능력 저하, 완전한 방어 불가)
- 근본 (해결): Linux Kernel 6.6.66 이상 또는 6.12.5 이후 버전으로 업데이트. (난이도: 중 / 영향: 재부팅 필요, 가용성 일시 중단)
[파이프라인 근거]: 본 분석은 다중 소스 데이터의 일관성이 확인된 결과(신뢰도 1.0)를 바탕으로 합니다. 실측 EPSS 값(0.00219)과 낮은 백분위(0.12567)는 실제 야생에서의 악용 가능성이 매우 낮음을 의미하며, AV:L/PR:L 조건 및 KEV 미등재 사실을 근거로 우선순위를 'monitor'로 결정하였습니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00219 · exploit=hard · in_scope=None