Kestrel
CVE-2024-42079DGX_E· 2026년 8월 6일 AM 06:38

[단독공격] 분석 — CVE-2024-42079

The GFS2 kernel race can be locally triggered to cause a null‑pointer dereference and system panic, so apply the upstream patch immediately and monitor for suspicious umount‑related kernel oops.

📋 요약

  • 심각도 medium · CVSS 5.5 · EPSS 0.00268 · 악용난이도 hard

🔍 공격 기법

  • 트리거 조건

    • 로컬 사용자가 GFS2 파일시스템을 마운트한 상태에서 gfs2_jindex_free()가 로그 플러시 락을 보유 중일 때, 동시에 umount를 수행하면 sdp->sd_jdesc 가 NULL인 채 gfs2_log_flush()가 역참조되어 커널 패닉이 발생한다.
    • CVSS 벡터 AV:L/AC:L/PR:L/UI:N 과 일치해 로컬 접근·낮은 복잡도·특권 요구 낮음이 실제 공격 조건이다.
  • 공격 단계

    1. 정찰lsmod | grep gfs2 또는 /proc/filesystems 로 GFS2 모듈 존재 여부 확인 (다중 소스에서 일관성이 확인됨).
    2. 초기 접근 – 블록 디바이스 혹은 이미지 파일을 준비하고 mount -t gfs2 /dev/sdx1 /mnt/gfs2 로 마운트한다.
    3. 실행·권한 획득 – 파일 생성·삭제 등으로 내부 glock 작업이 큐에 쌓이게 만든 뒤, 백그라운드에서 umount /mnt/gfs2 & 를 동시에 실행해 레이스를 유도한다 (glock_work_func → run_queue → do_xmote → inode_go_sync → gfs2_log_flush).
    4. 지속 – 레이스는 일시적이며 재현을 위해 스크립트로 반복 가능하지만, 성공 시 커널이 즉시 패닉 상태가 되므로 지속성 자체는 필요하지 않다.
    5. 영향BUG: kernel NULL pointer dereference 로 인한 시스템 전체 가용성 상실 (Availability = High).
  • 공격 표면

    • GFS2 마운트 포인트, umount 시스템 콜, 내부 glock 작업 큐.
    • EPSS 0.00268(백분위 0.18674) 은 현재 실측 악용 사례가 드물지만, 로컬 권한만 있으면 조건을 만들 수 있음을 의미한다([실측 악용예측]).

악용 가능성: 이 취약점은 AV가 L(Local)로 지정돼 있어 공격자가 해당 시스템에 직접 접근해야 하며, AC가 L(Low)인 만큼 구현 자체는 복잡하지 않지만 정확한 레이스 타이밍을 맞추어야 합니다. PR이 L(Low)으로 설정된 점은 루트 권한 없이도 파일시스템을 마운트·언마운트할 수 있는 일반 사용자 계정만 있으면 공격이 가능함을 의미합니다. UI가 N(No Interaction)이므로 사용자의 별도 행동을 유발하지 않아도 되지만, gfs2_jindex_free와 gfs2_log_flush 함수가 동시에 실행되는 순간을 포착해야 하는데 이는 커널 내부의 glock 작업과 언마운트 과정이 겹치는 특정 상황에 한정됩니다. EPSS = 0.00268이라는 수치는 현재 실제 악용 사례는 드물지만, 이 정도 확률이라도 존재한다는 점에서 방어자가 무시해서는 안 되는 위협임을 보여줍니다. KEV 목록에 등재되지 않은 것은 아직 대규모 공격으로 활용된 적이 없다는 의미이며, 이는 취약점 자체가 난이도가 높아 실제 악용이 제한적이라는 해석과 일치합니다. 따라서 공격 표면은 GFS2 파일시스템을 사용하는 노드에서 제공되는 마운트·언마운트 API와 내부 로그 플러시 로직이며, 이들 엔드포인트에 대한 접근 권한만 확보하면 레이스 조건을 조작해 NULL 포인터 역참조를 유발할 수 있습니다.

💥 영향 분석

  • 성공 시 NULL 포인터 역참조에 의해 커널 OOPS/패닉이 발생하고 시스템은 재부팅되거나 서비스가 중단된다.
  • 데이터 손실이나 권한 상승은 직접적으로 일어나지 않으며, 주 위험은 서비스 가용성 파괴이다.

🔗 관련 취약점·체이닝

  • CWE‑476(Null Pointer Dereference) 및 CWE‑362(Race Condition)와 동일 유형.
  • 추정: 이미 시스템에 로컬 권한 상승(LPE) 취약점이 존재한다면, 공격자는 해당 LPE를 이용해 GFS2 마운트 권한을 획득하고 이후 이 레이스를 활용해 서비스 중단 후 추가 악성 행위를 수행할 수 있다.

🔎 탐지

  • dmesg·커널 로그에 “BUG: kernel NULL pointer dereference” 와 함께 gfs2_log_flush 함수명이 출력되는 항목.
  • auditd 로 umount 호출을 기록하고, 동시에 glock_work_func 실행이 감지되면 경고 생성.
  • eBPF tracepoint(tracepoint:gfs2:*) 를 이용해 sdp->sd_jdesc NULL 체크 전후의 호출 흐름을 모니터링할 수 있다.

🛡️ 완화 방안

  • 패치 적용 – 6.6.37 이전 버전 및 6.7‑6.9.8 사이 커널에 포함된 최신 보안 업데이트를 즉시 배포한다(최우선 조치).
  • GFS2 사용 제한 – 필요하지 않은 경우 modprobe -r gfs2 로 모듈을 언로드하고, SELinux/AppArmor 정책으로 비특권 사용자에게 mount/umount 권한을 차단한다.
  • 모니터링 강화 – 위 탐지 지표를 SIEM에 연동해 실시간 알림을 설정하고, 커널 패닉 발생 시 자동 복구(예: kdump, watchdog) 절차를 구축한다.

우선순위 결정 근거: CVSS 5.5·non‑KEV·EPSS 0.00268·exploit hard 로 판단되어 “monitor” 등급이 적용되었으며, 이는 패치 배포와 동시에 로그 기반 감시가 실효성 있는 대응임을 의미한다.

⚖️ 위험도 / 우선순위

  • 조치: monitor (모니터링)
  • 근거: CVSS=5.5 · non-KEV · EPSS=0.00268 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…