[공격] 분석 — CVE-2026-31446
CVE-2026-31446 is a local ext4 use‑after‑free during unmount that can be chained to full kernel compromise, requiring immediate patching and restriction of unmount/sysfs access.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00135 · 악용난이도 hard
🔍 공격 기법
- 트리거 조건
- 로컬 사용자(특권·비특권 모두) 가
umount를 수행 중이며, 동시에/proc/fs/ext4/*/mb_groups파일에 읽기/쓰기 접근이 발생할 때 발생. ext4_unregister_sysfs()가 kobject를 해제한 뒤, 남아 있는update_super_work가sysfs_notify()로 해제된 kobject의kernfs_node에 접근 → use‑after‑free.
- 로컬 사용자(특권·비특권 모두) 가
- 공격 흐름
- 정찰 – 시스템에 ext4 파일시스템이 마운트돼 있음을 확인 (
mount | grep ext4). - 초기 접근 – 로컬에서
umount /target명령을 실행, 동시에 별도 프로세스가/proc/fs/ext4/<dev>/mb_groups를 열어 읽거나 쓰는 작업을 시작(예:cat혹은echo >). - 경쟁 조건 유발 – 타이밍을 맞춰
umount가 진행되는 사이에update_super_work가 스케줄되어 실행되면, 해제된 kobject 를 참조해 커널 메모리 오버라이트 가능. - 실행·권한 획득 – 임의 데이터(예: 사용자‑제공 페이로드) 를
mb_groups에 기록하여 커널 힙에 삽입, 이후 OOB write 로 함수 포인터를 조작하면 루트 권한으로 코드 실행. - 지속·영향 – 성공 시 커널 모드 쉘 획득 → 시스템 전체 장악, 백도어 심기, 로그 삭제 등 전통적인 RCE 후 지속 단계 수행 가능.
- 정찰 – 시스템에 ext4 파일시스템이 마운트돼 있음을 확인 (
- 공격 표면
/proc/fs/ext4/<sb>/mb_groups(읽기·쓰기) – 프로시저 파일 인터페이스.umount시스템 콜 – 로컬 호출, UI:R(사용자 상호작용 필요).
- CVSS 벡터와 실제 조건 매핑
- AV:L → 공격자는 로컬에 존재해야 함.
- AC:L → 타이밍 경쟁만 맞추면 낮은 복잡도.
- PR:N → 권한 없이도 트리거 가능(특권이 없어도
umount은 일반 사용자에게 허용된 경우). - UI:R → 사용자가
umount를 수행해야 함(정상적인 관리 작업).
악용 가능성: 이 취약점은 AV:L(로컬) 조건이므로 공격자는 대상 시스템에 직접 접근해야 하며, AC:L(낮은 난이도) 덕분에 로컬 권한 없이도 코드 흐름을 조작하기는 비교적 쉽습니다. PR:N(권한 필요 없음) 과 UI:R(사용자 동작 요구) 조합은, 공격자가 umount 명령을 실행하고 동시에 다른 프로세스가 /proc/fs/ext4/…/mb_groups 파일을 읽도록 유도해야 함을 의미합니다. 실제 트리거는 언마운트 과정에서 ext4_unregister_sysfs() 가 수행된 뒤, 아직 남아 있는 update_super_work 이 sysfs_notify()를 호출하면서 해제된 kobject 에 접근하는 레이스 상황입니다. 공격 표면은 procfs 경로와 해당 파일 읽기 파라미터이며, 이를 통해 로컬 사용자는 의도적으로 언마운트를 시작하고 동시에 파일을 읽게 함으로써 use‑after‑free를 발생시킬 수 있습니다. EPSS 0.00135라는 수치는 현재 실제 악용 사례는 드물지만, 공격 가능성이 전혀 없지는 않음을 보여주며, KEV에 등재되지 않은 점은 아직 광범위한 공격이 보고되지 않았다는 의미입니다. 따라서 “hard” 등급이 부여된 이유는 로컬 접근과 사용자 동작이라는 두 단계가 필요하지만, 일단 조건을 만족하면 exploit 난이도 자체는 낮기 때문입니다.
💥 영향 분석
- 커널 메모리 손상 → 전체 시스템 권한 상승 (루트/커널 수준)
- 성공 시 공격자는 모든 파일·프로세스에 접근, 네트워크 스택 조작 및 보안 로그 삭제 가능.
- 서비스 중단(패닉) 위험도 존재: 경쟁 조건이 비정상적으로 발생하면 커널 패닉으로 시스템 다운.
🔗 관련 취약점·체이닝
- CWE‑416 (Use After Free) – 기본적인 메모리 관리 오류, 다른 커널 모듈에서 동일한 유형의 UAF 가 존재한다면 체인 가능.
- 추정:
CWE‑119 (Improper Restriction of Operations within the Bounds of a Memory Buffer)와 결합하면 OOB write 로 직접 코드 실행이 쉬워짐. - 추정:
CWE‑20 (Improper Input Validation)과 연계해/proc/fs/ext4/*에 비정형 데이터를 전달하면 초기 검증을 우회, 이후 UAF 를 이용한 권한 상승으로 이어질 수 있음. - 이와 유사한 기존 ext4 관련 버그(예: 과거
ext4_dir_entry오류) 와 조합 시, 파일시스템 메타데이터 변조 → 영구적인 루트킷 설치가 가능.
🔎 탐지
- 커널 로그:
ext4_notify_error_sysfs호출 직후kobject_del에러 메시지가 연속적으로 나타나는 경우. - procfs 모니터링: 짧은 시간 내
/proc/fs/ext4/*/mb_groups파일에 비정상적인 read/write 시도와 동시에umount이벤트가 기록되면 경보. - KASAN / KMSAN: 메모리 해제 후 접근이 감지될 경우 (UAF 탐지) 알림 발생.
🛡️ 완화 방안
- 즉시 조치: 해당 커널 버전(5.10.114‑5.11, 5.15.38‑5.15.203, … 6.19‑6.19.11) 사용 중이라면 최신 패치를 적용하거나, 최소한
ext4_unregister_sysfs호출 순서를 롤백할 수 없는 경우 해당 파일시스템을 마운트 해제하고 재부팅 후 최신 커널로 업그레이드. - 보조 방어:
/proc/fs/ext4/*/mb_groups에 대한 쓰기 권한을 제한(읽기 전용으로 마운트 옵션 적용).umount수행 시 자동화된 스크립트로 경쟁 조건을 방지하도록 순차적 락을 도입.
- 장기 해결: 커널 소스에서
update_super_work에서의sysfs_notify호출 전 kobject 존재 여부를 검증하는 방어 코드를 추가하고, 전체 ext4 모듈에 대한 메모리 관리 강화(예: RCU 기반 해제 후 접근 차단).
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00135 · exploit=hard · in_scope=None