[단독방어] 분석 — CVE-2026-23452
A race condition in pm_runtime_work may cause a use‑after‑free of the parent device pointer, leading to kernel crashes (availability impact); immediate mitigation is to disable runtime autosuspend for all devices.
📋 요약
- 심각도 medium · CVSS 4.7 · EPSS 0.00091 · 악용난이도 hard
🔍 공격 기법
- 로컬 프로세스가 블록 디바이스 테스트(예: blktest block/001)를 실행하면
pm_runtime_work()가 스케줄되고, 부모 디바이스가 해제된 뒤에도dev->parent를 참조하게 된다. - 이 레이스 컨디션이 발생하면 KASAN에 의해 slab‑use‑after‑free 오류가 보고되며 커널 OOPS/패닉으로 이어져 시스템 가용성이 상실된다.
악용 가능성: 이 취약점은 AV:L(Local)이며, 공격자는 반드시 해당 시스템에 로컬 접근 권한을 보유해야 합니다. 또한 AC:H(High)인 만큼 레이스 컨디션을 정확히 타이밍 맞춰 발생시켜야 하며, 이는 커널 스케줄러와 kworker 쓰레드의 동작을 정밀히 예측·조작해야 함을 의미합니다. 프리빌리지 요구가 PR:L(Low)인 점은 일반 사용자 계정으로도 시도 가능하다는 뜻이지만, 앞선 고난이도의 타이밍 제어가 없으면 exploitation이 불가능합니다. UI:N(No User Interaction)는 공격자가 별도의 피싱·클릭 유도 없이 자체적으로 트리거를 생성해야 함을 나타냅니다. EPSS 점수 0.00091은 현재 실세계에서 악용 사례가 극히 드물다는 것을 반영하지만, 낮은 프리빌리지와 로컬 접근 가능성 때문에 이론적 위험은 여전히 존재합니다. KEV에 등재되지 않은 이유는 아직까지 대규모 공격이 보고되지 않았기 때문이며, 이는 위의 높은 난이도와 직접 연결됩니다. 공격 표면은 pm_runtime_work() 함수가 호출되는 커널 전원 관리 경로와, 디바이스 제거 시점에 실행되는 kworker 작업(blktest block/001 등)으로 제한되며, 해당 엔드포인트·파라미터는 일반 사용자 공간에서 직접 조작할 수 없습니다. 따라서 이 취약점을 실제로 악용하려면 로컬 시스템에 대한 깊은 이해와 정밀한 레이스 조건 트리거가 전제되어야 합니다.
💥 영향 분석
- 성공 시 시스템 다운(커널 패닉) 및 재부팅 필요 → 서비스 중단 (Availability High).
- 기밀성·무결성은 영향을 받지 않는다(C:N/I:N).
🔗 관련 취약점·체이닝
- 동일한 런타임 전원 관리(pm_runtime) 영역에서 발생하는 다른 Use‑After‑Free(예: 과거 커밋에 포함된
pm_runtime_get_sync관련 버그)와 연계될 가능성이 있다. - 현재 확인된 CVE 번호 외에 추가적인 체이닝은 보고되지 않았다.
🔎 탐지
로그 지표
dmesg//var/log/kern.log등에 기록되는 KASAN 메시지- 필드: 전체 로그 라인 (
_raw) - 패턴:
BUG: KASAN: slab-use-after-free.*pm_runtime_work
- 필드: 전체 로그 라인 (
- Workqueue 스택 트레이스에
rpm_idle,rpm_suspend,pm_runtime_work가 포함된 경우 - 커널 OOPS 발생 시
panic혹은Oops:로 시작하는 라인과 함께 위 함수명이 나타나는 경우
SIEM 탐지 규칙 예시 (pseudo‑query)
1index=kernel_logs ("KASAN" AND "pm_runtime_work") 2| regex _raw="(?i)BUG:\s+KASAN.*slab-use-after-free.*pm_runtime_work" 3| stats count by host, _time 1index=kernel_logs ("Oops:" AND ("rpm_idle" OR "rpm_suspend" OR "pm_runtime_work")) 2| stats count by host, _time오탐 튜닝
pm_runtime_work가 정상적인 디버그 메시지로 기록되는 경우는 드물다. 오탐이 발생하면 정규식에slab-use-after-free를 반드시 포함하도록 확장한다.- 특정 테스트 스위트(예: blktest)에서만 재현되므로, 해당 테스트 실행 시에는 알림 레벨을 낮추어 운영자 피드백을 수집한다.
🛡️ 완화 방안
-
Live‑patch 적용 : 커널 live‑patch 프레임워크(kpatch/kgraft)로
pm_runtime_remove()에flush_work()삽입 패치를 적용한다.- 구현 난이도: 중간 (패치 빌드·배포 필요)
- 운영 영향: 재부팅 없이 커널 코드 교체 가능, 일부 시스템에서는 live‑patch 지원이 제한될 수 있음.
- 검증 방법:
kpatch list로 적용 상태 확인 후, 동일 테스트(블록/001) 실행 시 오류 발생 여부 관찰.
-
테스트 환경 격리 : 해당 커널 버전을 사용하는 호스트를 별도 스테이징 영역에 두고, 자동 슬립 비활성화 정책을 강제한다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=4.7 · non-KEV · EPSS=0.00091 · exploit=hard · in_scope=None