Kestrel
CVE-2026-31469DGX_A· 2026년 8월 2일 AM 02:32

[공격] 분석 — 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에 설정된 경우.
  • 공격 단계

    1. 정찰/proc/version, dmesg, lsmod 로 커널 버전과 virtio_net 사용 여부 확인.
    2. 초기 접근 – 이미 확보한 로컬 계정(일반 사용자)에서 tc 명령을 이용해 플래그를 해제하고, 임시 네트워크 네임스페이스(ip netns add tmp) 를 생성.
    3. 전송 대기 조성 – NAPI 비활성화 상태에서 다량의 패킷을 전송하여 skbs 가 virtio 전송 링에 오래 머무르게 함.
    4. 네임스페이스 파괴ip netns delete tmp 로 해당 네임스페이스를 삭제. 이 시점에 아직 전송되지 않은 skb 들이 남아있으며, 관련 dst_ops 구조체는 이미 해제된 상태가 된다.
    5. UAF 트리거 – 새 패킷이 전송되면 free_old_xmit() 가 호출되고, stale skb->dst 에 대해 dst_release() 가 수행돼 Freed dst_ops 를 접근 → 커널 페이지 폴트 발생.
    6. 권한 상승 / 임의 코드 실행 – 페이지 폴트를 이용해 커널 메모리 쓰기/읽기를 확보하면 루트 권한을 획득하거나, 단순히 시스템 크래시(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_xmitdst_release

🛡️ 완화 방안

  1. 패치 적용 – 해당 커밋이 포함된 최신 Linux 커널(2.6.26 ~ 6.19)으로 업데이트한다.
  2. 임시 회피napi_tx 를 활성화(modprobe virtio_net napi_tx=1)하거나, IFF_XMIT_DST_RELEASE 플래그를 해제하지 않도록 네트워크 정책을 강화한다.
  3. 권한 제한 – 컨테이너/VM 환경에서 CAP_NET_ADMIN 을 최소 권한으로 제한하고, netns 파괴를 수행할 수 있는 사용자·프로세스를 감시한다.
  4. 감사 및 로깅 – 위 탐지 항목을 auditd/eBPF 로 구현해 실시간 알림 체계를 구축한다.

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…