[공격] 분석 — CVE-2025-71097
CVE-2025-71097 allows an unprivileged local user to trigger a reference‑count leak in IPv4 routing by deleting a nexthop used by blackhole routes, leading to device cleanup failure and potential denial‑of‑service on affected Linux kernels.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00114 · 악용난이도 hard
🔍 공격 기법
- 공격 표면:
ip/netlink명령을 통한 IPv4 라우팅 설정 API (ip link add,ip nexthop add/del,ip route add blackhole … nhid). - 전제 조건: 로컬 접근 권한(L) 및 낮은 난이도(AC:L, PR:L). 컨테이너 등 네임스페이스 내부에서 CAP_NET_ADMIN 권한을 가진 프로세스가 필요하지만, 이는 일반적인 멀티‑테넌트 환경에서는 비특권 사용자에게 부여될 수 있음.
- 정찰:
uname -r로 커널 버전 확인 → 취약 범위(5.3.1 ~ 6.18.4) 내에 있는지 판단. - 초기 접근·실행 단계
ip link add name dummyX up type dummy로 더미 인터페이스 생성.ip nexthop add id <id> dev dummyX로 nexthop 객체 생성.ip route add blackhole <IP>/32 nhid <id>로 오류 라우트(blackhole)와 nexthop 연결.ip nexthop del id <id>로 nexthop 삭제 → 내부 플래그는 dead으로 표시되지만,fib_table_flush()가flush_all=true상황이 아니면 오류 라우트를 정리하지 않음.
- 지속·영향 단계: 삭제된 nexthop에 대한 참조가 남아
dev dummyX의 사용 카운트가 감소되지 않아unregister_netdevice가 블록됨. 반복 수행 시 커널 객체 레퍼런스 누적으로 메모리 고갈, 장치 정리 실패, 최악의 경우 커널 패닉(DoS) 발생.
악용 가능성: AV:L·AC:L·PR:L·UI:N 벡터는 공격자가 로컬 시스템에 낮은 권한(Low)만 있으면, 복잡도 없이(Low) 사용자 개입 없이(N) 취약점을 이용할 수 있음을 의미합니다. 실제로 이 결함은 ip route/ip nexthop 명령이 내부적으로 사용하는 Netlink 인터페이스를 통해 트리거되며, fib_table_flush() 가 오류 라우트(blackhole 등)를 삭제하지 않아 남아 있는 넥스탭 객체에 대한 레퍼런스가 누수됩니다. 공격 표면은 ① Netlink 소켓을 통한 라우팅 설정 API, ② nexthop del 명령에 전달되는 ID 파라미터, 그리고 ③ 커널 내부의 fib_table_flush() 함수이며, 이들 모두 로컬 프로세스가 접근 가능한 엔드포인트입니다. EPSS = 0.00114 은 현재까지 실제 악용 사례는 드물지만(KEV 미등재), 낮은 복
💥 영향 분석
- 직접적 위험: 로컬 사용자에 의한 Device Cleanup Failure →
unregister_netdevice: waiting for <dev> to become free. Usage count = X로그와 함께 네트워크 인터페이스가 해제되지 않아 시스템 전반의 네트워크 기능 마비. - 간접적 위험: 누적된 레퍼런스는 커널 메모리 파편화를 가속화하고, 심각한 메모리 고갈 시 Kernel Panic 또는 서비스 중단을 초래할 수 있음(특히 공유 호스트 커널을 사용하는 컨테이너 환경).
🔗 관련 취약점·체이닝
- 동일 계열: IPv4 라우팅 경로 관리에서 레퍼런스 카운트 누수가 발생하는 다른 CVE(예: CVE‑2022‑XXXX)와 유사한 메모리 고갈 패턴.
- 잠재적 체이닝: 추정: 레퍼런스 누수에 의해 특정 slab 캐시(
sk_buff)가 비정상적으로 증가하면, 이후 UAF(Use‑After‑Free) 또는 Heap Spraying 취약점과 결합해 권한 상승(RCE)으로 전이될 가능성이 있음. 현재 이 CVE 자체만으로는 RCE를 제공하지 않으며, 추가 메모리 손상 버그와의 연계가 필요함(※ 추정).
🔎 탐지
- 커널 로그:
unregister_netdevice: waiting for <dev> to become free와 함께 사용 카운트가 2 이상인 경우 경고. - Auditd / Netlink 모니터링:
netlink=NETLINK_ROUTE이벤트에서ip route add blackhole … nhid후 즉시ip nexthop del id가 발생하는 패턴을 감시. - 시스템 메트릭:
/proc/net/dev에서 인터페이스 상태가UP이면서도operstate=down로 전환되지 않는 경우, 혹은netstat -i로 확인되는 비정상적인 사용 카운트 증가 추적.
🛡️ 완화 방안
- 패치 적용: 해당 커널 라인(5.3.1 ~ 6.18.4)에서 upstream 패치를 적용하여 nexthop이 dead 상태가 되면 오류 라우트를 강제 플러시하도록 업데이트.
- 버전 업그레이드: 가능한 경우 최신 장기 지원(LTS) 커널(≥ 6.19)으로 교체.
- 권한 제한: 컨테이너 및 비특권 사용자에 대해
CAP_NET_ADMIN권한을 차단하거나, 네임스페이스 내부에서ip route add blackhole … nhid와 같은 명령어 실행을 sysctl(net.ipv4.conf.all.route_localnet=0) 등으로 제한. - 운영 정책: 불필요한 더미 인터페이스와 blackhole 라우트 사용을 금지하고, 네트워크 설정 변경 시 리뷰 절차를 도입.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00114 · exploit=hard · in_scope=None