[공격] 분석 — CVE-2026-31469
CVE-2026-31469 is a local use‑after‑free in the virtio_net driver triggered when IFF_XMIT_DST_RELEASE is cleared while napi_tx is disabled, and must be mitigated immediately by applying kernel patches or disabling NAPI TX.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00135 · 악용난이도 hard
🔍 공격 기법
-
공격 전제
- 대상 시스템이 Linux kernel 2.6.26 – 6.19.11 중 하나이며 virtio_net 드라이버가 로드된 상태여야 함.
- 공격자는
CAP_NET_ADMIN수준의 권한을 가지고 있어 netlink/tc명령으로 네트워크 인터페이스와 네임스페이스를 조작할 수 있어야 한다 (CVSS PR:L, AC:L).
-
공격 표면
tc혹은ip link set dev <if> IFF_XMIT_DST_RELEASE off로 IFF_XMIT_DST_RELEASE 플래그를 해제.napi_tx=N(즉, NAPI 기반 전송 비활성화) 옵션이 virtio_net에 설정된 경우.
-
공격 단계
- 정찰 –
/proc/version,dmesg,lsmod로 커널 버전과 virtio_net 사용 여부 확인. - 초기 접근 – 이미 확보한 로컬 계정(일반 사용자)에서
tc명령을 이용해 플래그를 해제하고, 임시 네트워크 네임스페이스(ip netns add tmp) 를 생성. - 전송 대기 조성 – NAPI 비활성화 상태에서 다량의 패킷을 전송하여 skbs 가 virtio 전송 링에 오래 머무르게 함.
- 네임스페이스 파괴 –
ip netns delete tmp로 해당 네임스페이스를 삭제. 이 시점에 아직 전송되지 않은 skb 들이 남아있으며, 관련dst_ops구조체는 이미 해제된 상태가 된다. - UAF 트리거 – 새 패킷이 전송되면
free_old_xmit()가 호출되고, staleskb->dst에 대해dst_release()가 수행돼 Freeddst_ops를 접근 → 커널 페이지 폴트 발생. - 권한 상승 / 임의 코드 실행 – 페이지 폴트를 이용해 커널 메모리 쓰기/읽기를 확보하면 루트 권한을 획득하거나, 단순히 시스템 크래시(DoS) 를 유발할 수 있다.
- 정찰 –
-
CVSS 벡터와 실제 조건 매핑
- AV:L → 로컬에서 네임스페이스와 인터페이스를 직접 조작해야 함.
- AC:L → 플래그 해제와 네임스페이스 삭제는 기본 netlink 명령만으로 가능, 특별한 기술적 난이도 없음.
- PR:L →
CAP_NET_ADMIN수준이면 충분, 일반 사용자 권한보다 낮음. - UI:N → 사용자의 추가적인 입력 없이 스크립트화 가능.
악용 가능성: 이 취약점은 AV가 L(로컬)이며, 공격자가 대상 호스트에 직접 접근할 수 있어야 합니다. AC는 L(낮은 복잡도)이므로 특별한 환경 설정 없이도 tc 명령이나 netlink을 통해 IFF_XMIT_DST_RELEASE 플래그를 해제하고 napi_tx=N으로 드라이버를 구성하는 것만으로 조건을 만족시킬 수 있습니다. PR이 L(낮은 권한)인 점은 루트가 아니더라도 네트워크 네임스페이스를 생성·삭제할 수 있는 일반 사용자 권한이면 충분함을 의미합니다. UI는 N(사용자 상호작용 없음)이므로 공격자는 자동화된 스크립트만으로도 흐름을 진행할 수 있습니다. EPSS가 0.00135로 낮지만 0이 아니며, KEV에 등재되지 않은 점은 현재까지 실전 악용 사례는 거의 없으나 이론적으로 로컬 권한을 가진 공격자가 충분히 재현 가능한 상황임을 시사합니다. 주요 공격 표면은 net_device 구조의 플래그를 조작하는 netlink 메시지와 네트워크 네임스페이스 삭제 API이며, 해당 경로에서 플래그가 해제된 상태에서 오래 머무는 skb가 존재하면 해제된 dst_ops에 접근해 Use‑After‑Free가 발생합니다. 따라서 공격자는 로컬에서 네임스페이스를 파괴하고 이후 패킷 전송을 유도함으로써 커널 메모리 손상을 일으킬 수 있습니다.
💥 영향 분석
- 성공 시 커널 페이지 폴트로 시스템 전체가 패닉(panic)되어 서비스 거부(DoS)가 발생한다.
- 메모리 손상 상태를 이용해 커널 주소 공간을 조작하면 로컬 루트 권한 획득이 가능하다.
- 공격자는 이후 임의 모듈 로드, 비밀 데이터 탈취, 지속적 백도어 설치 등 전형적인 권한 상승 후 악용 시나리오를 수행할 수 있다.
🔗 관련 취약점·체이닝
- CWE‑416 (Use‑After‑Free) – 본 결함 자체가 UAF이며, 동일 메모리 영역에 대한 다른 쓰기/읽기 버그와 결합하면 임의 코드 실행으로 이어질 수 있다.
- 추정: 커널 힙 가드(kmalloc/slab) 오버플로우(CWE‑122) 혹은 double free(CWE‑415) 와 연계해 이미 해제된
dst_ops구조체를 재배치하고 조작하는 체인이 가능하다. - 추정: LSM(SELinux/AppArmor) 우회와 결합하면 제한된 컨테이너 환경에서도 루트 권한 상승을 달성할 수 있다.
🔎 탐지
- 커널 로그에
Unable to handle kernel paging request와 함께free_old_xmit→dst_release
🛡️ 완화 방안
- 패치 적용 – 해당 커밋이 포함된 최신 Linux 커널(2.6.26 ~ 6.19)으로 업데이트한다.
- 임시 회피 –
napi_tx를 활성화(modprobe virtio_net napi_tx=1)하거나,IFF_XMIT_DST_RELEASE플래그를 해제하지 않도록 네트워크 정책을 강화한다. - 권한 제한 – 컨테이너/VM 환경에서
CAP_NET_ADMIN을 최소 권한으로 제한하고, netns 파괴를 수행할 수 있는 사용자·프로세스를 감시한다. - 감사 및 로깅 – 위 탐지 항목을 auditd/eBPF 로 구현해 실시간 알림 체계를 구축한다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00135 · exploit=hard · in_scope=None