Kestrel
CVE-2026-23113DGX_2· 2026년 7월 30일 AM 09:20

[공격] 분석 — CVE-2026-23113

Local DoS via io_uring worker queue hang by leveraging slow I/O operations on specific device files, requiring kernel updates or restricted unprivileged access to io_uring.

📋 요약

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

🔍 공격 기법

본 취약점은 io_uring의 워커 큐(io-wq)가 종료 신호를 받았음에도 불구하고, 이미 큐에 쌓인 무거운 작업들이 완료될 때까지 프로세스가 중단(Uninterruptible Sleep) 상태로 유지되는 결함을 이용한다.

  • 공격 표면: io_uring 인터페이스 및 /dev/msr*와 같이 read_iter()를 지원하지 않아 loop_rw_iter()가 처리해야 하는 특수 장치 파일.
  • 트리거 조건:
    1. 권한을 가진 로컬 사용자가 io_uring을 통해 대량의 읽기 요청(예: 2GB 이상의 거대 사이즈)을 생성.
    2. 대상 파일이 /dev/msr*와 같이 처리 속도가 매우 느린(요청당 수십 초 소요) 장치여야 함.
    3. 작업들이 io-wq에 쌓인 상태에서 종료 경로가 호출될 때, 루프 내부에서 IO_WQ_BIT_EXIT 체크가 누락되어 모든 작업이 끝날 때까지 대기함.
  • 공격 체인:
    • 정찰/초기접근: 로컬 쉘 권한 확보 (AV:L / PR:L).
    • 실행: io_uring을 사용하여 /dev/msr* 파일에 대해 다수의 거대 Read 요청을 비동기로 큐잉.
    • 영향: 커널 워커 스레드가 loop_rw_iter()의 반복적인 처리로 인해 점유되며, 시스템은 응답 불능 상태(Hung Task)에 빠짐.
  • CVSS 벡터 분석: AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H는 로컬 권한만 있다면 복잡한 설정 없이 가용성(Availability)을 완전히 파괴할 수 있음을 의미한다.

악용 가능성: 본 취약점은 AV:LPR:L 조건에 따라, 공격자가 이미 시스템에 낮은 권한의 쉘(Low-privileged User)을 확보한 상태에서만 트리거 가능한 로컬 공격 벡터를 가집니다. 공격 표면은 Linux 커널의 비동기 I/O 인터페이스인 io_uring과 특정 하드웨어 레지스터 접근 파일인 /dev/msr* 엔드포인트로 좁혀지며, 특히 loop_rw_iter() 함수가 처리하는 대량의 읽기 요청이 핵심 트리거 조건입니다. EPSS 수치가 0.00115로 매우 낮고 KEV에 등재되지 않은 점은 외부에서 즉각적으로 악용 가능한 공개 익스플로잇이 드물며, 일반적인 환경보다 특수한 파일 시스템 설정이나 하드웨어 접근 권한이 필요함을 시사합니다. 하지만 AC:L인 만큼 전제 조건만 충족된다면 복잡한 타이밍 공격 없이도 io-wq 워커 스레드의 종료 지연을 유발하여 커널 자원 고갈이나 서비스 거부(DoS) 상태를 만들 수 있습니다. 결과적으로 이론적 심각도는 높으나, 실제 악용 가능성은 /dev/msr*과 같은 특정 디바이스 파일에 대한 접근 권한 및 io_uring 사용 가능 여부에 종속되어 공격 난이도가 'Hard'로 판정됩니다.

💥 영향 분석

  • 시스템 가용성 상실: 커널 스레드가 D state(uninterruptible sleep)에 빠져 CPU 자원을 점유하거나 시스템 전체가 프리징되어 서비스 불능 상태가 됨.
  • DoS (Denial of Service): 관리자가 강제 재부팅을 하기 전까지 복구가 불가능한 로컬 DoS 발생.

🔗 관련 취약점·체이닝

본 취약점 단독으로는 권한 상승(LPE)이나 정보 유출이 불가능하지만, 다음과 같은 체이닝 경로가 추정된다.

  • 추정: 가용성 저하 $\rightarrow$ 보안 솔루션 무력화: 시스템 전체를 Hang 상태로 만들어 EDR이나 모니터링 에이전트의 로그 전송 및 탐지 기능을 일시적으로 마비시킨 후, 다른 커널 취약점을 이용한 공격을 시도하는 윈도우 타임 확보 수단으로 활용 가능.
  • 추정: Race Condition 체이닝: io_uring 내부의 상태 관리 결함과 연계하여, 워커 스레드가 종료되지 않고 유지되는 동안 메모리 해제-재할당 과정에서 Use-After-Free(UAF)나 Double Free를 유도하는 타이밍 공격의 기반으로 활용될 가능성이 있음.

🔎 탐지

  • 로그 분석: 커널 로그(dmesg)에서 INFO: task ... blocked for more than 143 seconds 메시지와 함께 io-wq 또는 loop_rw_iter 스택 트레이스가 관찰되는지 확인.
  • 프로세스 상태: ps 명령어로 D state(uninterruptible sleep)에 빠진 다수의 커널 워커 스레드 확인.
  • 시스템 호출 모니터링: 권한이 낮은 사용자가 /dev/msr* 등 특수 장치 파일에 대해 비정상적으로 큰 사이즈의 io_uring 요청을 반복적으로 생성하는 패턴 탐지.

🛡️ 완화 방안

  • 근본 해결: Linux 커널 패치를 통해 io-wq 작업 실행 루프 내부에서 IO_WQ_BIT_EXIT를 체크하도록 업데이트. (영향 버전: 5.12.1~6.18.8 범위 내 다수)
  • 즉시 조치: /proc/sys/kernel/unprivileged_io_uring_disabled 설정을 통해 비특권 사용자의 io_uring 접근을 차단.
  • 접근 제어: /dev/msr* 등 민감한 장치 파일에 대한 일반 사용자 접근 권한 제한.

[파이프라인 근거] 본 분석은 다중 소스에서 일관성이 확인된 데이터를 기반으로 하며, EPSS 0.00115(실측값) 및 CVSS 5.5를 근거로 실제 악용 난이도가 높고(hard) 즉각적인 위협은 낮다고 판단하여 'monitor' 우선순위로 결정되었다.

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…