Kestrel
CVE-2024-53170DGX_E· 2026년 8월 6일 AM 08:48

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

A local use‑after‑free in the Linux blk_mq block layer can be triggered by low‑privileged users to corrupt kernel memory, so patched kernels must be deployed without delay.

📋 요약

  • 심각도 high · CVSS 7.8 · EPSS 0.0024 · 악용난이도 hard

🔍 공격 기법

  • 공격 표면

    • blk_mq_destroy_queue() 가 호출될 때 tags->rqs[] 에 남아 있는 플러시 요청을 해제하지 않는 흐름.
    • del_gendisk()QUEUE_FLAG_INIT_DONE 가 클리어되는 시점과 blk_queue_init_done() 검사 사이의 상태 불일치가 핵심.
    • 대상 디바이스: SCSI·virtio 등 blk_mq 를 사용하는 블록 디바이스(예: /dev/loop*, /dev/sd*).
  • 트리거 조건 (AV:L / AC:L / PR:L / UI:N)

    1. 커널 버전이 6cfeadb… ≤ x < 1921fe7d… 혹은 5.19 이상이며, 해당 패치가 적용되지 않은 상태(다중 소스에서 일관성이 확인됨).
    2. 로컬 사용자에게 블록 디바이스 생성·삭제 권한이 있어 del_gendisk() 를 실행할 수 있음 (PR:L).
    3. 연속적인 디스크 초기화·해제 작업을 통해 blk_mq_destroy_queue() 가 플러시 RQ 를 비우지 못하도록 타이밍을 맞춤 (AC:L).
  • 공격 단계

    1. 정찰/proc/version, uname -r 로 커널 버전 확인; lsblk, dmesg 로 blk_mq 사용 여부 파악.
    2. 초기 접근losetup -f /path/to/file 등으로 루프 디바이스 생성 후, ioctl(BLKFLUSH) 혹은 파일 시스템 레이어에서 fsync/sync 호출로 플러시 요청을 대기 상태로 만든다.
    3. 플래그 조작 – 바로 뒤에 del_gendisk /dev/loopX 를 수행해 디스크를 해제하면서 QUEUE_FLAG_INIT_DONE 가 클리어되도록 함.
    4. UAF 트리거blk_mq_destroy_queue() 가 실행될 때 아직 해제되지 않은 플러시 요청 구조체가 blk_mq_find_and_get_req() 에서 dereference 되어 KASAN 로그에 “slab‑use‑after‑free” 가 기록된다.
    5. 후속 활용 – 메모리 재할당이 가능한 시점에 동일 크기의 객체(예: 다른 struct request 혹은 커널 내부 구조) 를 할당해, 해제된 구조체의 함수 포인터를 공격자가 제어한 주소로 덮어쓰면 커널 코드 실행 가능(※ 실제 활용 여부는 추가 연구 필요).
  • 난이도 – 정확한 타이밍과 디스크 큐 조작이 요구되므로 EPSS 0.0024 로 “hard” 수준으로 평가됨. 다만 로컬 권한만 있으면 트리거 자체는 가능하다는 점에서 AV:L, PR:L, UI:N 벡터와 일치한다.

악용 가능성: 이 취약은 AV:L·AC:L·PR:L·UI:N 벡터에 따라 “로컬 환경에서 낮은 권한(일반 사용자)만 있으면 복잡한 사전 준비 없이 바로 이용 가능”하다는 전제조건을 의미합니다. 실제 공격은 블록 서브시스템의 blk_mq_find_and_get_req 함수가 I/O 플러시 요청을 처리할 때, del_gendisk 후에 QUEUE_FLAG_INIT_DONE 플래그가 해제되는 흐름을 강제로 재현하면 발생하는데, 이는 디스크 삭제·재등록 작업을 수행할 수 있는 사용자 수준 프로세스만으로도 트리거됩니다. 공격 표면은 커널 내부 blk‑mq 태깅 구조와 flush rq 배열이며, 해당 배열에 접근되는 모든 블록 I/O 경로(예: /dev/sdX 디바이스 파일을 통한 read/write)에서 악용이 가능합니다. EPSS 0.0024라는 수치는 현재까지 실제 공격 사례가 드물지만 완전히 무시할 수준은 아니며, KEV에 등재되지 않은 점은 아직 공개된 익스플로잇이 없다는 의미이지만 이론적으로 로컬 권한 상승을 충분히 달성할 수 있음을 시사합니다. 따라서 난이도는 “hard”로 평가되지만, 로컬 접근 권한만 확보하면 복잡도·조건이 낮아 실전에서 충분히 활용될 가능성이 존재합니다.

💥 영향 분석

  • 커널 메모리 손상 → 임의 코드 실행 또는 시스템 크래시(DoS).
  • 성공 시 공격자는 루트 권한을 획득해 전체 시스템 기밀·무결성·가용성을 장악할 수 있음.

🔗 관련 취약점·체이닝

  • CWE‑416 (Use‑After‑Free) 유형, 블록 레이어 메모리 관리 결함.
  • 추정: 동일 커널 버전에서 보고된 다른 blk_mq 관련 UAF(CVE‑2023‑xxxx 등)와 연계하면 재사용 패턴을 예측해 RCE 성공 확률이 상승할 수 있음.
  • 추정: CONFIG_DEBUG_KMEMLEAK 비활성화 시 메모리 재배치가 예측 가능해져, NVMe 초기화 버그와 결합하면 권한 상승 경로가 단축될 가능성이 존재함.

🔎 탐지

  • KASAN 또는 Oops 로그에 BUG: KASAN: slab-use-after-free in blk_mq_find_and_get_req 와 함께 주소가 출력되는 경우.
  • 비정상적인 kworker/1:* 스레드가 blk_mq_timeout_work 를 수행하는 순간을 auditd/syslog 로 기록하고 알림 생성.
  • /proc/kallsyms 에서 blk_mq_destroy_queue 호출 빈도 급증 시 모니터링 경보.

🛡️ 완화 방안

  • 패치 적용 – 커밋 aec89dc5d421 이후 수정이 포함된 최신 커널(6.6.x‑stable 이상)으로 즉시 업데이트.
  • 임시 보호CONFIG_DEBUG_SLAB, KASAN 을 활성화해 UAF 발생 시 시스템을 중단하고 로그를 남김.
  • 권한 제한 – 일반 사용자에게 /dev/loop*, /dev/sd* 등 블록 디바이스 생성·삭제 권한을 부여하지 않도록 SELinux/AppArmor 정책 강화.
  • 모니터링 – 위 탐지 지표를 기반으로 실시간 알림 체계 구축 및 로그 분석 자동화.

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…