[단독방어] 분석 — CVE-2024-42079
CVE-2024-42079 is a local NULL‑pointer dereference in GFS2’s log flush that can cause kernel panic; the fastest mitigation is to unmount and disable all GFS2 filesystems until the kernel is updated.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00268 · 악용난이도 hard
🔍 공격 기법
GFS2 파일시스템이 마운트된 상태에서 glock 작업(glock_work_func)이 진행 중일 때 관리자가 시스템을 언마운트하면, gfs2_log_flush() 가 sdp->sd_jdesc 가 NULL 인지를 확인하지 않고 dereference 하여 커널 패닉을 일으킵니다. 로컬 사용자가 파일 생성·삭제 등 일반 I/O를 수행하고 동시에 언마운트를 트리거하는 레이스 조건이 핵심이며, 원격 공격은 불가능합니다.
악용 가능성: CVSS 벡터 AV:L은 공격자가 로컬에서 실행 권한을 확보해야 함을 의미하므로, 원격 네트워크 접근만으로는 악용이 불가능합니다. AC:L(낮은 복잡도) 때문에 일단 로컬에 코드가 존재하면, GFS2 파일시스템의 언마운트 시점과 glock 작업 사이의 레이스 조건만 발생시키면 충분합니다. PR:L·UI:N은 비관리자 권한으로도 사용자 개입 없이 자동으로 트리거될 수 있음을 나타내며, 일반 사용자 계정만으로도 공격이 가능함을 의미합니다. EPSS 0.00268이라는 실측값은 현재 관찰된 악용 사례가 매우 드물지만, KEV에 등재되지 않은 점은 아직 대
💥 영향 분석
- 가용성: NULL‑pointer dereference 로 인해 커널 패닉 → 시스템 전체 재부팅 필요 (A:H).
- 데이터 무결성: 비정상 종료 시 GFS2 메타데이터 손상이 발생할 가능성이 있습니다.
- 범위: Linux kernel < 6.6.37 및 6.7‑6.9.8 모든 버전이 영향을 받으며, GFS2 파일시스템을 사용하는 노드가 대상입니다.
🔗 관련 취약점·체이닝
GFS2 내부 동기화 결함과 연계된 레이스 컨디션은 동일 모듈의 다른 메모리 해제 오류와 조합될 수 있습니다. 현재 알려진 별도 CVE는 없으나, 유사한 파일시스템‑레벨 DoS 취약점과 체이닝 시 재부팅 후 부트 파라미터 변조 공격으로 확대될 위험이 존재합니다.
🔎 탐지
-
로그 지표
dmesg·/var/log/kern.log에"BUG: kernel NULL pointer dereference, address:"와 함께gfs2_log_flush함수명이 포함된 스택 트레이스가 기록될 때.- 커널 로그 필드
message에gfs2_log_flush와NULL pointer문자열이 동시에 나타나는 경우.
-
SIEM 규칙 예시
- Splunk
1index=linux_logs sourcetype=kmsg ("gfs2_log_flush" AND "NULL pointer dereference") 2| stats count by host, _time 3| where count > 0- Elastic Security (KQL)
1event.category:"process" and message:*gfs2_log_flush* and message:/NULL\spointer/- OSSEC
1<rule id="100201" level="10"> 2 <if_sid>5710</if_sid> 3 <regex>.*gfs2_log_flush.*NULL pointer dereference.*</regex> 4 <description>Potential GFS2 NULL‑pointer DoS</description> 5</rule>- 오탐 튜닝
- 디버그 커널 빌드에서는
NULL pointer문자열이 정상적으로 남을 수 있으므로,log_level=debug인 로그는 제외(log_level != debug). - 동일 호스트에서 짧은 시간(5 분) 내 다중 발생 시에만 알림 레벨을 “critical”로 상승시키고, 단일 이벤트는 “info” 수준으로 낮춥니다.
- 디버그 커널 빌드에서는
🛡️ 완화 방안
-
즉시(긴급 차단) – 오늘 당장 적용할 임시 차단 한 가지: 모든 GFS2 파일시스템을 언마운트하고
/etc/fstab에 해당 항목에noauto옵션을 추가한 뒤,modprobe -r gfs2로 모듈 로드를 차단합니다.- 구현 난이도: 낮음 (명령어 실행 및 fstab 편집).
- 운영 영향: GFS2 기반 클러스터 서비스가 일시 중단됩니다.
- 검증 방법:
mount | grep gfs2가 빈 출력인지 확인하고, 이후 24 시간 동안 커널 로그에gfs2_log_flush관련 panic가 기록되지 않는지 모니터링합니다.
-
단기(완화) – 패치 적용 전까지 위험을 낮추는 방법:
- 백포트 패치 – 배포된 커밋(
gfs2: Fix NULL pointer dereference in gfs2_log_flush)을 현재 커널 소스에 적용하고, 모듈만 재컴파일하여 로드합니다.- 구현 난이도: 중간 (소스 다운로드·패치·make modules_install).
- 운영 영향: 재부팅 없이 모듈 교체 가능하지만, 빌드 환경 필요.
- 검증 방법:
grep GFS2 /proc/kallsyms로 새 심볼 확인 후, 테스트 워크로드에서 커널 로그에 오류가 없음을 확인합니다.
- 자동 재부팅 설정 –
sysctl kernel.panic=10과kernel.panic_on_oops=1을 활성화해 패닉 발생 시 자동으로 재부팅하도록 합니다. 이는 서비스 가용성을 유지하는 데 도움이 됩니다.- 구현 난이도: 낮음 (sysctl 설정).
- 운영 영향: 패닉 후 짧은 다운타임(≈10 초) 발생.
- 백포트 패치 – 배포된 커밋(
-
근본(해결) – 공식 보안 업데이트 적용:
- 업그레이드 대상: Linux kernel 6.6.37 이상, 또는 6.7‑6.9.8 최신 패치 버전.
- 구현 난이도: 중~높음 (패키지 매니저를 통한 커널 교체 및 재부팅 필요).
- 운영 영향: 전체 시스템 재시작으로 인한 일시적 서비스 중단.
- 검증 방법:
uname -r로 버전 확인 후, 동일 레이스 조건을 재현(예: gfs2 파일 생성·삭제 → 언마운트)했을 때 커널 로그에 panic가 발생하지 않는지 테스트합니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00268 · exploit=hard · in_scope=None