[방어] 분석 — CVE-2024-42079
CVE-2024-42079 is a local NULL‑pointer dereference in GFS2 log flush that can cause kernel panic; the immediate mitigation is to disable the GFS2 module until the patched kernel is deployed.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00268 · 악용난이도 hard
🔍 공격 기법
GFS2 파일시스템이 마운트된 상태에서, 언마운트 과정 중에 glock 작업(glock_work_func)이 진행되면 gfs2_log_flush()가 호출됩니다. 이때 sdp->sd_jdesc 가 NULL인 경우를 제대로 검사하지 않아 커널 내부에서 NULL 포인터 역참조가 발생하고, 결과적으로 OOPS 또는 패닉이 일어나 시스템이 중단될 수 있습니다.
악용 가능성: 이 취약점은 CVSS 벡터 AV:L/AC:L/PR:L/UI:N 로, 공격자는 반드시 대상 시스템에 로컬 접근 권한을 보유해야 하며, 복잡도는 낮고(AC:L) 저권한 사용자(PR:L)만으로도 시도할 수 있습니다. 또한 이용 과정에서 별도의 사용자 동작이 필요 없으므로(UI:N) 자동화된 스크립트로도 실행 가능하지만, 로컬 계정 자체가 전제 조건이라는 점이 난이도를 제한합니다. EPSS 값 0.00268 은 실제 악용 확률이 매우 낮지만 완전히 배제되지 않음을 의미하고, KEV 목록에 등재되지 않은 것은 현재까지 대규모 공격 사례가 보고되지 않았다는 실증적 근거입니다. 공격 표면은 GFS2 파일시스템의 마운트·언마운트 경로와 로그 플러시 로직이며, 특히 gfs2_jindex_free() 와 gfs2_log_flush() 가 동시에 실행되는 상황에서 발생합니다. 따라서 공격자는 GFS2가 사용 중인 시스템에 접근해 파일시스템을 마운트·언마운트 하거나, 관련 glock 작업을 트리거할 수 있는 로컬 프로세스를 실행해야 합니다. 이러한 전제가 충족될 때만 NULL 포인터 역참조가 발생하여 커널 패닉이 일어나므로, 실제 악용 가능성은 제한적이지만 로컬 저권한 계정을 통한 내부 위협에 대해서는 주의를 요합니다.
💥 영향 분석
- 커널 패닉 → 전체 시스템 다운(서비스 중단)
- 로컬 루트 권한을 이미 보유한 프로세스는 서비스 거부(DoS) 효과를 즉시 얻음
- 추가적인 메모리 손상 단계가 없으므로 권한 상승 체인 자체는 형성되지 않으며, 주된 위험은 가용성 상실입니다.
🔗 관련 취약점·체이닝
- 동일 파일시스템(GFS2)에서 발생하는 다른 로그 플러시 관련 버그와 결합될 경우 연쇄적인 OOPS가 유발될 가능성이 있습니다.
gfs2_jindex_free()에서의 부적절한 포인터 관리와 연관된 과거 CVE(예: CVE‑2023‑xxxx)와 유사한 패턴을 보이지만, 현재까지 확인된 직접적인 체이닝 사례는 없습니다.
🔎 탐지
-
커널 로그
dmesg또는/var/log/kern.log에 “BUG: kernel NULL pointer dereference” 혹은 “sdp->sd_jdesc” 문자열이 포함될 경우 경보 생성.- 정규식 예시:
(?i)kernel.*null.*pointer.*dereference.*sdp->sd_jdesc
-
auditd 이벤트
- GFS2 파일시스템에 대한
umount호출 감시 (syscall=umount2+path=/.../gfs2*). - SIEM 쿼리 예시 (Splunk SPL):
text1index=linux_audit sourcetype=auditd (exe="*/umount" OR exe="*/umount2")2AND (obj_path="/dev/*" OR obj_path="*.gfs2*")3| stats count by host, user, exe, obj_path
- GFS2 파일시스템에 대한
-
시스템 콜 트레이스
tracepoint:sched:sched_process_exit와tracepoint:gfs2:gfs2_log_flush를 연계하여 “log flush” 발생 직후 프로세스 종료가 감지되면 의심 이벤트로 기록.
-
오탐 튜닝
- 정상적인 GFS2 유지보수 작업(예: 클러스터 관리자가 수행하는 계획된 언마운트)에서 발생하는 로그는
uid=0와msgid=20001(정상 종료 코드) 로 필터링. - 빈번한 테스트 환경에서는 해당 호스트를 “허용 리스트”에 추가하고, 경보 임계값을 “동일 호스트·사용자당 5분 내 3회 초과”로 설정.
- 정상적인 GFS2 유지보수 작업(예: 클러스터 관리자가 수행하는 계획된 언마운트)에서 발생하는 로그는
🛡️ 완화 방안
-
umount 권한 제한:
auditd규칙을 추가해 비루트 사용자의 GFS2 언마운트를 차단하고, 위반 시 로그와 알림 생성.text1-a always,exit -F arch=b64 -S umount2 -F dir=/dev/*gfs2* -F auid>=1000 -F auid!=4294967295 -K gfs2_umount구현 난이도: ★★☆ (auditd 규칙 편집)
운영 영향: 일반 사용자 또는 자동화 스크립트가 GFS2를 언마운트하지 못하게 함 → 관리 절차 조정 필요.
검증 방법:ausearch -k gfs2_umount로 이벤트 발생 여부 확인. -
커널 패닉 로그 알림:
systemd-journald와 연동된systemd-notify스크립트를 배포해 “kernel BUG” 메시지가 기록되면 즉시 Slack/Email 으로 전파.
구현 난이도: ★★☆ (스크립트 배포 및 서비스 재시작)
운영 영향: 최소(알림 트래픽 증가).
검증 방법: 테스트용으로 인위적인 OOPS를 발생시켜 알림 수신 확인.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00268 · exploit=hard · in_scope=None