[단독방어] 분석 — CVE-2025-71097
CVE-2025-71097 is a reference‑count leak in IPv4 nexthop handling that can hang device removal, and the immediate mitigation is to block creation of blackhole routes that reference nexthop objects.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00114 · 악용난이도 hard
🔍 공격 기법
IPv4 라우팅 테이블에 blackhole 오류 라우트를 nhid <ID> 옵션과 함께 추가한 뒤, 해당 nexthop 객체를 삭제하면 커널은 객체를 “dead” 상태로 표시하지만 fib_table_flush() 가 오류 라우트를 플러시하지 않는다. 남아 있는 blackhole 라우트가 nexthop 및 그 장치에 대한 참조 카운트를 유지해 인터페이스 삭제 시 unregister_netdevice: waiting for <dev> to become free. Usage count = X 메시지가 반복 출력되고, 실제 디바이스 해제가 지연된다.
악용 가능성: 이 취약점은 AV:L(로컬) · AC:L(낮은 복잡도) · PR:L(저권한) · UI:N(사용자 개입 없음) 이라는 CVSS 벡터가 의미하듯, 공격자는 로컬 시스템에 직접 접근해 네트워크 네임스페이스 내에서 ip 명령이나 Netlink API를 이용해 더미 인터페이스와 nexthop 객체를 생성·삭제할 수만 하면 된다.
그 과정에서 삭제된 nexthop가 아직 남아 있는 오류 라우트(blackhole 등)를 플러시하지 못하도록 하는 로직 결함을 악용하면, 해당 라우트는 “dead” 상태의 nexthop 정보를 그대로 보유한 채 남아 있어 커널 내부 참조 카운트가 누수되고, 이후 특권 명령어 실행 시 메모리 손상이나 서비스 거부(DoS) 상황을 유발할 수 있다.
이 취약점은 로컬 권한만 있으면 충분히 재현 가능하므로 hard 등급으로 판정되었으며, 실제 공격자는 일반 사용자 계정이라도 네트워크 설정을 조작할 수 있는 CAP_NET_ADMIN 정도의 최소 권한만 확보하면 된다.
EPSS 값이 0.00114 이라는 점은 현재까지 보고된 악용 사례가 매우 드물지만, 존재 자체가 완전히 배제되지 않음을 의미하고, KEV에 등재되지 않은 이유는 아직 대규모 공격이 관측되지 않았기 때문이다.
공격 표면은 Linux 커널의 IPv4 라우팅 서브시스템이며, 노출되는 엔드포인트는 ip nexthop, ip route 명령 및 해당 Netlink 메시지(특히 RTM_NEWNEXTHOP, RTM_DELNEXTHOP)이다.
따라서 로컬에서 네트워크 네임스페이스를 자유롭게 조작할 수 있는 환경이 존재한다면, 이 경로 플러시 결함을 이용해 시스템 안정성을 위협하는 실용적인 공격 시나리오가 성립된다.
💥 영향 분석
레퍼런스 카운트가 해제되지 않아 네트워크 장치(예: dummy, veth) 삭제가 무한정 대기 상태에 빠지며, 해당 인터페이스와 연관된 메모리 객체가 회수되지 않아 커널 메모리 고갈·서비스 거부(DoS) 상황이 발생할 수 있다.
🔗 관련 취약점·체이닝
레퍼런스‑카운트 누수 패턴은 파일시스템, cgroup 등 다른 서브시스템에서도 발견될 수 있어, 동일한 객체 해제 오류와 결합하면 메모리 고갈 공격으로 연계될 가능성이 있다.
🔎 탐지
-
로그 지표
- 대상 로그:
/var/log/kern.log,dmesg - 매치 패턴(정규식):
unregister_netdevice: waiting for .* to become free\. Usage count = \d+
- 대상 로그:
-
SIEM 쿼리 예시
- Elastic/Kibana
1{ 2 "query": { 3 "bool": { 4 "must": [ 5 { "match_phrase": { "message": "unregister_netdevice: waiting for" } }, 6 { "regexp": { "message": "Usage count = [0-9]+" } } 7 ] 8 } 9 }10}-
Splunk
index=linux_logs "unregister_netdevice:" "Usage count =" -
Netlink 이벤트 기반 탐지 의사코드
xss1on netlink_event(event):2 if event.type == "NEXTHOP_DELETE":3 schedule check_blackhole_routes(event.namespace) after 5s45function check_blackhole_routes(ns):6 routes = ip -j route show type blackhole7 for r in routes:8 if r.nhid references deleted_nexthop:9 alert("Potential nexthop reference leak", r) -
오탐 튜닝
- 테스트 환경에서
dummy*혹은test*인터페이스가 삭제될 때도 동일 메시지가 발생할 수 있다. 따라서 장치 이름이 위 패턴에 해당하면 경고 레벨을 “주의”로 낮추고, 운영 환경(예:eth*,ens*)에서는 “높음”으로 설정한다. - 같은 호스트에서 30 초 이내에 동일 메시지가 3회 이상 발생하면 실제 누수로 판단하도록 임계값을 적용한다.
- 테스트 환경에서
🛡️ 완화 방안
- 즉시(긴급 차단) – 오늘 당장 적용할 임시 조치
ip route add blackhole … nhid …명령을 금지하는 auditd 규칙을 추가한다.
1auditctl -a always,exit -F arch=b64 -S execve \ 2 -F exe=/usr/sbin/ip -F a0=route -F a1=add -F a2=blackhole \ 3 -k block_nexthop_blackhole-
구현 난이도: 낮음(단일 명령). 운영 영향: blackhole 라우트 사용 제한. 검증:
auditctl -l로 규칙 존재 확인 후 차단 시도 로그에 “blocked” 이벤트가 기록되는지 확인. -
단기(완화)
- Nexthop 삭제 스크립트를 래핑해 오류 라우트를 자동 플러시한다. 예:
ip nexthop del id <ID> && ip route flush table main type blackhole nhid <ID> - 기존 시스템에서 존재하는
blackhole‑nhid조합을 정기 점검하고, 필요 시ip route replace blackhole <prefix>로 변환하거나nhid옵션을 제거한다. - 구현 난이도: 중간(스크립트 배포·스케줄링). 운영 영향: 최소(추가 명령 실행). 검증: 스크립트 실행 후
unregister_netdevice메시지 재발 여부 확인.
- Nexthop 삭제 스크립트를 래핑해 오류 라우트를 자동 플러시한다. 예:
-
근본(해결)
- 취약점이 포함된 모든 커널 버전(5.3.1‑6.18.4)에서 최신 보안 업데이트를 적용한다. 배포판별 패키지 매니저(
apt,yum,zypper등)로linux-image-*-security혹은kernel최신 패키지를 설치하고 재부팅 후uname -r로 버전 확인한다. - 구현 난이도: 중~높음(재부팅 필요). 운영 영향: 서비스 일시 중단(재부팅)·성능 변화 없음. 검증: 업데이트 적용 후 동일 시나리오를 재현해 메시지가 사라지는지 확인.
- 취약점이 포함된 모든 커널 버전(5.3.1‑6.18.4)에서 최신 보안 업데이트를 적용한다. 배포판별 패키지 매니저(
잔여 리스크
긴급 차단은 blackhole 라우트 사용 자체를 제한하므로 일부 네트워크 설계에 제약이 남는다. 단기 보강만으로는 다른 네임스페이스에서 동일 취약점이 재현될 가능성이 있으니, 패치 적용 전까지 정기적인 로그 모니터링과 스크립트 점검을 지속해야 한다.
우선순위 근거
[교차검증] 다중 소스에서 일관된 정보가 확인되었으며, CVSS 5.5·AV:L·AC:L·PR:L·UI:N 조합으로 로컬 권한만 있으면 악용 가능성을 보여준다. [실측 악용예측] EPSS 0.00114(극히 낮은 실제 악용 확률)에도 불구하고 exploit 난이도가 hard이라 위험도 판단에 반영하였다. 이러한 신호를 종합해 우선순위는 “monitor” 로 설정했으며, 즉시 차단 조치를 통해 위험을 최소화한다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00114 · exploit=hard · in_scope=None