[공격] 분석 — CVE-2025-71085
CVE-2025-71085 is a remote integer‑overflow in the IPv6 CALIPSO handling that can trigger an immediate kernel panic (DoS); patch immediately and disable CALIPSO as interim mitigation.
📋 요약
- 심각도 high · CVSS 7.5 · EPSS 0.00239 · 악용난이도 moderate
🔍 공격 기법
-
트리거 조건
skb_cow()에 전달되는headroom값이INT_MAX(2,147,483,647) 를 초과하고, 내부에서 계산된delta = headroom - skb_headroom(skb)가 음수(<= -NET_SKB_PAD)가 되면pskb_expand_head()에서nhead < 0로BUG_ON이 발생한다.
-
공격 표면
- Netlink
NETLINK_ROUTE를 이용한 netlabel 인터페이스 (netlabelctl calipso …) - IPv6 패킷에 포함된 CALIPSO 옵션(길이 필드) – 특히 비정상적으로 큰 값(실제로는
INT_MAX초과)을 삽입할 경우.
- Netlink
-
전술 흐름
- 정찰 – 대상 호스트가 IPv6 스택을 사용 중이며 CALIPSO 모듈이 로드돼 있는지 확인한다.
sysctl net.ipv6.conf.all.calipso혹은lsmod | grep calipso로 존재 여부 판단.
- 초기 접근 – 원격 공격자는 두 가지 방법 중 하나를 선택한다.
- (a)
netlabelctl를 통해 Netlink 메시지를 전송,calipso add …혹은map add …로 CALIPSO 속성을 설정하고 의도적으로 과도한 헤드룸을 지정한다. - (b) 직접 IPv6 패킷을 조작하여 CALIPSO 옵션에 비정상적인 길이(> INT_MAX)를 삽입 후 전송한다 (
UDP/IPv6혹은ICMPv6).
- (a)
- 실행·권한 획득 – 커널 내부에서
calipso_skbuff_setattr()→skb_cow()→pskb_expand_head()로 흐름이 진행되며, 위 조건을 만족하면BUG_ON(nhead < 0)이 발동한다. 결과는 즉시 kernel oops → panic 으로 서비스 가용성이 상실된다(DoS). CVSS 벡터와 일치하게AV:N/AC:L/PR:N/UI:N로 원격 무권한 공격이 가능하다. - 지속·영향 – 시스템 재부팅 전까지 서비스가 중단되며, 커널 패닉 로그를 통해 공격 사실을 확인할 수 있다. 현재 보고된 바에 따르면 추가적인 권한 상승은 직접적으로 발생하지 않는다(다른 결함과 연계될 경우 LPE 가능성은 추정).
- 정찰 – 대상 호스트가 IPv6 스택을 사용 중이며 CALIPSO 모듈이 로드돼 있는지 확인한다.
-
공격 전제 조건 –
- 커널 버전이 영향을 받는 범위(
4.8.1‑5.10.248,5.11‑5.15.198,5.16‑6.1.160,6.2‑6.6.120,6.7‑6.12.64,6.13‑6.18.4등)이어야 함. - CALIPSO 옵션이 활성화돼 있어야 하며, Netlabel 기능에 접근 가능한 권한(보통 root)이 없어도 netlink 메시지는 커널에서 검증 없이 처리된다(실제 PoC는
netlabelctl로 확인).
- 커널 버전이 영향을 받는 범위(
악용 가능성: 이 취약점은 AV:N/AC:L/PR:N/UI:N 벡터가 의미하듯, 네트워크를 통해 별도의 권한이나 사용자 조작 없이 원격에서 트리거할 수 있습니다. 실제 공격 조건은 IPv6 패킷을 처리하는 커널 경로(예: calipso_skbuff_setattr 또는 skb_cow)에서 headroom 값이 INT_MAX (≈2 GB)를 초과하도록 조작된 헤더‑옵션을 포함시키는 것입니다. 이때 (headroom > skb_headroom(skb)) 검사는 통과하지만 내부 정수 캐스트 오류로 delta 가 음수가 되어 pskb_expand_head() 의 BUG_ON이 발동, 커널 oops → 서비스 거부(DoS) 상태가 됩니다. 네트워크 스택은 일반적으로 MTU 제한으로 2 GB 이상의 패킷을 받지 않지만, 조각화 재조립이나 특수 드라이버를 이용해 가상‑헤드룸을 인위적으로 크게 만들 수 있으므로 이 조건을 충족시키는 것이 핵심 난이도 포인트입니다. EPSS가 0.00239 로 매우 낮아 실제 악용 사례가 거의 없으며, KEV에 등재되지 않은 점은 현재까지 공격자가 이를 활용한 보고가 없다는 것을 의미합니다. 따라서 위험도는 “moderate” 수준으로 평가되지만, IPv6 패킷을 받아들이는 모든 서비스(예: router‑advertisement, netfilter hook)와 해당 커널 버전이 노출된 경우에는 원격 DoS 공격 표면이 존재
💥 영향 분석
- 성공 시 즉각적인 서비스 가용성 손실이 발생한다. 커널 패닉으로 시스템이 재부팅될 때까지 모든 프로세스가 중단되며, 복구에는 물리적 접근 또는 원격 관리 인터페이스(예: IPMI) 이용이 필요하다.
- 영향 제품은 광범위한 Linux kernel 버전 전체에 걸쳐 있어, 배포판 및 클라우드 이미지 전반에 걸친 대규모 DoS 위험을 내포한다.
🔗 관련 취약점·체이닝
- 본 결함은
skb_cow()→pskb_expand_head()경로에서 발생하는 정수 오버플로우이며, 동일한 메모리 관리 루틴을 이용한 과거 커널 OOM/버퍼 오버플로우 취약점과 패턴 수준에서 연계될 수 있다(예: CWE‑190 정수 오버플로우 → 커널 패닉). - 현재 공개된 자료에서는 이 CVE 단독으로 메모리 손상이나 임의 코드 실행(RCE)까지 이어지는 사례는 보고되지 않았다. 다만 추정: 다른 커널 메모리 관리 결함(예: 슬랩 힙 오버플로우)과 연계될 경우 LPE(권한 상승) 시나리오가 성립할 가능성이 있다.
🔎 탐지
dmesg또는 시스템 로그에BUG: pskb_expand_head: nhead < 0혹은kernel BUG at net/core/skbuff.c:2232와 같은 메시지가 반복적으로 나타나는 경우.- Audit/SELinux 로그에서 Netlink(
NETLINK_ROUTE)을 통한 CALIPSO 속성 변경 시도(netlabelctl calipso add …)가 기록될 때. - 네트워크 IDS/IPS 에서 IPv6 패킷에 비정상적인 CALIPSO 옵션 길이(예: 2 GB 이상) 포함 트래픽을 탐지하도록 규칙 설정.
🛡️ 완화 방안
- 패치 적용 – upstream 커널에서 제공하는 최신 보안 업데이트를 즉시 배포한다. (다중 소스에서 일관성이 확인됐으며, CVSS 7.5·EPSS 0.00239·우선순위 scheduled 에 따라 이번 주 내 적용 권고)
- CALIPSO 비활성화 –
sysctl -w net.ipv6.conf.all.calipso=0및net.ipv6.conf.default.calipso=0로 전역 차단하고, 필요 시modprobe -r calipso로 모듈을 언로드한다. - Netlabel 접근 제한 –
netlabelctl실행 권한을 루트 또는 지정된 그룹에만 부여하고, AppArmor/SELinux 정책으로 NetlinkNETLINK_ROUTE호출을 제한한다. - 방화벽 차단 –
ip6tables -A INPUT -p ipv6-option --ipv6-option 53 -j DROP(CALIPSO 옵션 번호) 혹은nft add rule ip6 filter input ip protocol 53 drop로 CALIPSO 트래픽을 차단한다. - 로그·모니터링 강화 – 커널 oops 로그와 Netlink 변경 이벤트를 SIEM에 연동하여 실시간 경보 체계를 구축한다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.5 · non-KEV · EPSS=0.00239 · exploit=moderate · in_scope=None