[공격] 분석 — CVE-2024-42079
CVE‑2024‑42079 is a local GFS2 kernel NULL‑pointer dereference that can cause an immediate kernel panic (DoS); the highest‑priority mitigation is to apply the patched Linux kernel (≥ 6.6.37 or 6.7‑6.9.8) and restrict unmount operations on GFS2 filesystems.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00268 · 악용난이도 hard
🔍 공격 기법
-
전제 조건
- 로컬 계정이 시스템에 로그인한 상태여야 합니다.
- 대상 시스템에 GFS2 파일시스템이 마운트돼 있어야 하며, 커널 버전은
< 6.6.37혹은6.7‑6.9.8사이(패치 미적용)이어야 합니다. - 해당 계정이
umount명령을 실행할 수 있는 권한(CAP_SYS_ADMIN 또는 sudo 등)을 가지고 있어야 합니다.
-
공격 표면
- 함수 경로:
gfs2_jindex_free()→sdp->sd_jdesc = NULL(log flush lock 보유) →gfs2_log_flush()가sdp->sd_jdesc를 검사하지 않고 역참조. - 레이스 트리거:
glock_work_func(inode sync 작업)와 동시에 진행되는 GFS2 파일시스템 언마운트(umount)가 발생할 때.
- 함수 경로:
-
공격 단계
- 정찰 –
/proc/filesystems,mount | grep gfs2로 GFS2 마운트 여부 확인. - 초기 접근 – 파일 I/O(예:
dd of=/mnt/gfs2/bigfile bs=1M count=10 && sync) 로 glock 작업을 큐에 넣음(inode_go_sync). - 레이스 유발 – 바로 뒤이어
umount /mnt/gfs2를 실행해 언마운트를 시도. 이때glock_work_func가 아직 진행 중이면gfs2_log_flush()가 NULL 포인터를 역참조하게 됨. - 실행·영향 – 커널이 Oops/BUG 메시지를 출력하고 시스템 전체가 패닉(DoS) 상태에 진입한다.
- 정찰 –
-
CVSS 벡터 ↔ 실제 조건 매핑
- AV:L → 로컬 접근만 필요 (SSH, 콘솔 등).
- AC:L → 레이스를 일으키는 시점 제어만으로 충분, 특별한 권한 상승 기법 불필요.
- PR:L → 일반 사용자라도
umount권한이 있으면 가능(권한 제한이 없을 경우). - UI:N → 자동화 스크립트로 순차 실행 가능.
-
실제 악용 난이도 – EPSS 0.00268, hard 등급이지만 레이스 타이밍이 정확히 맞아야 하므로 현재까지 실전 활용 사례는 보고되지 않았음(추정).
악용 가능성: CVSS AV:L/AC:L/PR:L/UI:N 벡터는 공격자가 로컬 계정만 있으면 되고, 복잡한 사전 준비 없이도 (Low Complexity) 실행할 수 있으나 사용자 개입이 필요 없음을 의미합니다. EPSS 0.00268은 현재까지 실제 악용 사례가 극히 드물지만(관측된 공격이 존재함) 완전히 무시할 수는 없으며, KEV에 등재되지 않은 점은 아직 대규모·공격자 중심의 위협으로 확산되지 않았다는 것을 보여줍니다. 이 취약점은 GFS2 파일시스템을 사용하는 Linux 커널에서 gfs2_log_flush()가 로그 플러시 락 보유 중에 sdp->sd_jdesc가 NULL인 상태로 dereference되는 상황이며, 해당 코드 경로는 파일 시스템 언마운트 과정과 glock 작업(glock_work_func → run_queue → do_xmote → inode_go_sync)이 동시에
💥 영향 분석
- 성공 시 커널 패닉으로 시스템 전체가 다운되어 가용성이 완전히 상실됩니다.
- 메모리 손상에 따른 데이터 유출·원격 코드 실행은 보고되지 않았으며, 이 취약점 자체만으로는 권한 상승이 일어나지 않습니다.
🔗 관련 취약점·체이닝
- CWE‑476 (NULL‑pointer dereference) → DoS 수준 영향.
- 추정: 동일 시스템에 로컬 권한 상승(CVE‑2023‑xxxx 등) 취약점이 존재한다면, 먼저 그 취약점으로 루트 권한을 획득하고 이후 본 취약점을 이용해 의도적으로 커널 패닉을 유발해 보안 로그를 은폐하거나 악성 모듈 로드를 위한 재부팅을 강제할 수 있음.
- 직접적인 체이닝은 현재 확인된 바 없으며, 이 취약점 자체는 단독 DoS에 국한됨.
🔎 탐지
dmesg·journalctl -k에 “BUG: kernel NULL pointer dereference, address … in gfs2_log_flush” 와 같은 Oops 메시지가 기록될 경우 경보.- Oops 스택 트레이스에
gfs2_jindex_free와gfs2_log_flush함수명이 포함된 로그. auditd또는systemd-journald에서umount이벤트 직후 1~2초 이내에 커널 Oops가 발생하면 의심 신호.
🛡️ 완화 방안
- 패치 적용 – 커널을
≥ 6.6.37혹은6.7‑6.9.8최신 버전으로 업데이트(다중 소스 교차검증 결과 일관). - 임시 회피 – GFS2 모듈 로드를 차단하거나, 사용 중인 GFS2 파일시스템을 가능한 한 빨리 언마운트하고
sync로 모든 glock 작업이 완료됐는지 확인 후 재마운트. - 권한 최소화 – 일반 사용자에게
umount /path/to/gfs2권한을 부여하지 않도록/etc/sudoers·SELinux/AppArmor 정책을 강화하고, CAP_SYS_ADMIN 제한 적용. - 모니터링 – 위 탐지 지표를 SIEM에 연동해 실시간 알림 설정 및 레이스 조건 재현 시도 감시.
- Live‑patch 옵션 – 커널 live‑patch가 제공되는 경우 해당 패치를 즉시 적용하여 서비스 중단 없이 취약점 차단.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00268 · exploit=hard · in_scope=None