Kestrel
CVE-2026-31441DGX_A· 2026년 8월 2일 AM 01:05

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

CVE-2026-31441 is a local kernel memory‑leak in the idxd DMA engine workqueue reset path that can be abused by privileged users to exhaust kernel heap and cause denial‑of‑service, mitigated by patching or disabling the driver.

📋 요약

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

🔍 공격 기법

  • 공격 전제

    • 대상 시스템이 Linux kernel 5.7.10 ~ 6.18.21(및 이후 6.19‑6.19.11) 버전 중 하나이며, idxd DMA 엔진 드라이버가 로드돼 있어 /dev/idxd 디바이스 노드가 존재한다.
    • 공격자는 CAP_SYS_ADMIN 권한을 보유하거나, 컨테이너 / Pod에서 특권 장치 플러그인으로 /dev/idxd에 접근 가능해야 한다(추정).
  • 표면·엔드포인트

    • 디바이스 파일: /dev/idxd (ioctl 인터페이스)
    • 주요 파라미터: 워크큐 리셋을 요청하는 ioctl 번호(예: IDXD_IOC_RESET_WQ) – 정확한 번호는 커널 소스 확인 필요.
  • 공격 단계

    1. 정찰uname -r 로 커널 버전 확인, /sys/module/idxd/parameters 등으로 드라이버 존재 여부 탐색.
    2. 초기 접근 – 기존 권한 상승·컨테이너 탈출 등을 통해 CAP_SYS_ADMIN 획득 또는 특권 컨테이너에서 디바이스 매핑.
    3. 트리거ioctl(fd, IDX_RESET_WQ, …) 로 워크큐 리셋을 수행. 내부에서 idxd_wq_disable_cleanup() 가 호출돼 워크큐 타입을 바로 NONE 으로 설정하고 자원을 해제하지 않아 메모리를 누수시킴.
    4. 반복 실행 – 짧은 간격으로 리셋을 반복하면 커널 힙에 누적된 슬랩 페이지가 회수되지 않아 전체 kmem 사용량이 급증.
    5. 영향 – kmem 고갈 → kmalloc/vmalloc 실패 → 시스템 전반적인 서비스 차단, 심각한 경우 kernel panic 로 재부팅(DoS). 메모리 부족 상황에서 다른 커널 객체 할당이 실패하면 연쇄적으로 Use‑After‑Free 혹은 권한 상승을 유발할 가능성 존재(추정).
  • CVSS ↔ 실제 조건 매핑

    • AV:L (Local) – 로컬/특권 프로세스가 직접 ioctl 호출.
    • AC:L (Low) – 단순 ioctl 호출만으로 트리거 가능.
    • PR:L (Low) – CAP_SYS_ADMIN 수준이면 충분.
    • UI:N (None) – 사용자 상호작용 필요 없음.

악용 가능성: 이 취약점은 AV:L(로컬) · AC:L(낮은 복잡도) · PR:L(낮은 권한) · UI:N(사용자 조작 불필요) 이라는 CVSS 벡터가 의미하듯, 공격자는 로컬 시스템에 접근할 수 있는 일반 사용자 계정만 있으면 됩니다. 그러나 실제로 악용하려면 idxd 드라이버의 워크큐를 reset 하는 경로—대개 /dev/idxd 디바이스에 대한 특정 ioctl 또는 sysfs 파일 쓰기 호출—를 정확히 트리거해야 하며, 그 시점에 워크큐가 아직 자원을 해제하기 전인 “type = NONE” 상태가 되도록 타이밍을 맞춰야 합니다. 이러한 조건은 커널 내부 흐름과 메모리 관리 상태에 크게 의존하므로 구현 난이도가 높아 규칙에서는 hard 등급으로 판단되었습니다. EPSS 0.00123이라는 매우 낮은 실측 확률과 KEV 미등재는, 현재까지 이 경로를 이용한 공격 사례가 거의 없으며 위협이 이론에 머물고 있음을 뒷받침합니다. 공격 표면은 idxd 드라이버가 노출하는 ioctl 코드와 /sys/devices/…/reset 파일 등으로 제한되며, 외부 네트워크·프로토콜을 거치지 않으므로 원격 침투는 불가능합니다. 따라서 공격자는 로컬 권한 확보 후 해당 워크큐 reset 함수를 호출해 메모리 누

💥 영향 분석

  • 가용성: 커널 힙 고갈로 인한 시스템 전체 DoS, 서비스 중단, 재부팅 위험.
  • 확장 위험: 클러스터 환경에서는 한 노드의 메모리 고갈이 하이퍼바이저 혹은 공유 커널 구조를 통해 다른 워크로드까지 영향을 미칠 수 있음(컨테이너 / K8s).
  • 권한 상승 가능성: 메모리 부족 상황에서 다른 결함과 연계하면 UAF 등 권한 상승 시나리오가 이론적으로 성립(추정).

🔗 관련 취약점·체이닝

  • 동일 계열 메모리 고갈 패턴CWE‑404: Improper Resource Shutdown or Release 와 유사하게, 자원 해제 순서 오류가 커널 힙을 고갈시켜 DoS를 야기한다.
  • 가능한 체이닝
    • 메모리 고갈 → 할당 실패CWE‑416: Use After Free 혹은 CWE‑787: Out-of-bounds Write 와 결합해 권한 상승(예: 기존에 보고된 kmalloc‑size 검증 부족 CVE).
    • 디바이스 노드 오픈CAP_SYS_ADMIN 요구를 우회하는 컨테이너 런타임 취약점(CVE‑2025‑xxxx 등)과 연계해 비특권 사용자가 접근하도록 만들 수 있음(추정).

🔎 탐지

  • 커널 메트릭: /proc/slabinfo 혹은 cgroup.memory.kmem.limit_in_bytes 를 모니터링하여 idxd 워크큐 관련 슬랩 캐시(idxd_wq) 사용량 급증 감지.
  • ioctl 로깅: Audit Rule auditctl -a always,exit -F arch=b64 -S ioctl -F dir=write -F path=/dev/idxd -k idxd_reset 로 리셋 호출 빈도 기록.
  • eBPF 프로브: tracepoint:syscalls:sys_enter_ioctl 에서 대상 ioctl 번호와 PID 를 필터링해 비정상적인 반복 패턴을 알람.

🛡️ 완화 방안

  • 패치 적용 – upstream 커밋에서 idxd_wq_disable_cleanup() 의 순서를 수정한 최신 커널(≥ 6.18.22)으로 업그레이드.
  • 드라이버 비활성화CONFIG_IDXD=n 로 컴파일하거나, 모듈인 경우 modprobe -r idxd 로 언로드하고 /dev/idxd 를 제거.
  • 접근 제어 강화 – SELinux/AppArmor 프로파일에 device 규칙 추가, cgroup v2 devices.allow 로 CAP_SYS_ADMIN 없이 디바이스 접근 차단.
  • 메모리 제한memory.kmem.limit_in_bytes 를 적절히 설정해 개별 워크로드가 전체 kmem을 고갈하지 못하도록 방어.
  • 운영 절차: 취약 커널 버전 여부 점검 → 패치/비활성화 → 로그·모니터링 정책 적용, 이상 징후 발견 시 즉시 워크큐 리셋 호출 차단 및 시스템 재부팅 계획 수립.

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…