[방어] 분석 — CVE-2025-71085
CVE-2025-71085 is an integer‑overflow in the IPv6 CALIPSO handling that can trigger a kernel panic (DoS) and should be temporarily mitigated by dropping CALIPSO packets until the upstream kernel patch is applied.
📋 요약
- 심각도 high · CVSS 7.5 · EPSS 0.00239 · 악용난이도 moderate
🔍 공격 기법
CALIPSO 옵션을 포함한 IPv6 패킷이 커널 내부 calipso_skbuff_setattr() 로 전달될 때, skb_cow() 에 headroom 값이 INT_MAX 보다 크게 설정되면 정수 캐스팅 오류가 발생하고 pskb_expand_head() 에 음수 nhead 가 전달돼 BUG_ON 이 발동합니다. 이로 인해 즉시 커널 oops/ panic 가 일어나 시스템 가용성이 상실됩니다. 원격 공격자는 CALIPSO 확장 헤더를 포함한 IPv6 패킷을 전송함으로써 트리거할 수 있습니다(AV:N, PR:N, UI:N).
악용 가능성: 이 취약점은 AV:N 으로 네트워크를 통해 원격에서 접근할 수 있으나, 실제 트리거는 skb_cow()에 headroom 값을 INT_MAX 보다 크게 전달해야 합니다. 따라서 공격자는 커널이 처리하는 IPv6 패킷 혹은 netlink 메시지의 헤더 영역을 비정상적으로 확대하도록 조작된 데이터를 전송해야 하며, 이는 일반적인 패킷 크기 제한이나 메모리 할당 검증에 의해 쉽게 차단됩니다. AC:L · PR:N · UI:N 조합은 인증·사용자 개입 없이도 실행 가능함을 의미하지만, “headroom > INT_MAX”라는 조건 자체가 낮은 복잡도(예: 단순 스크립트)로 달성하기는 어렵습니다. EPSS = 0.00239이라는 수치는 현재 관측된 실제 악용 사례가 매우 드물지만, 완전히 배제되지 않음을 보여줍니다. KEV에 등재되지 않은 점은 아직 대규모 공격이 보고되지 않았다는 의미이며, 이로 인해 위험도는 moderate 등급으로 판단됩니다. 공격 표면은 IPv6 스택과 calipso_skbuff_setattr() 루틴이 호출되는 모든 엔드포인트(예: 라우터, 서버)이며, 해당 코드가 실행되는 커널 버전에서만 노출됩니다. 따라서 원격 공격자는 취약한 커널을 구동하는 시스템에 대해 특수 제작된 IPv6 패킷을 전송함으로써 OOPS를 유발하고 서비스 거부(DoS)를 초래할 수 있습니다.
💥 영향 분석
- 성공 시 커널이 즉시 panic 상태에 빠져 전체 서버·컨테이너가 다운됩니다.
- 재부팅 필요하며, OOPS 로그와 코어 덤프가 남아 추후 포렌식 조사에 활용될 수 있습니다.
- 현재 보고된 바는 DoS 뿐이며, 정수 오버플로우가 메모리 손상으로 이어질 경우 권한 상승(LPE) 가능성은 추정 단계에 머물고 있습니다.
🔗 관련 취약점·체이닝
- IPv6 확장 헤더 처리와 연관된 다른 integer‑overflow 취약점(예: 과거 CALIPSO/IPv6 버그)과 결합될 경우, 커널 메모리 레이아웃을 조작해 LPE 로 이어질 위험이 있습니다.
netfilter/iptables규칙 우회를와 연계하면 DoS 이후 자동 재시작 스크립트를 악용하는 시나리오가 이론적으로 가능하지만, 현재 실증된 사례는 없습니다.
🔎 탐지
로그 지표
/var/log/kern.log,journalctl -k등에"BUG_ON.*pskb_expand_head"혹은"net/core/skbuff.c:2232"문자열이 기록됩니다.dmesg출력에kernel panic직전ipv6: CALIPSO와 연관된 메시지가 나타날 수 있습니다.
SIEM / ELK 쿼리 예시 (Splunk/Elastic)
1index=linux_kernel ("BUG_ON" AND "pskb_expand_head") 2 OR (source="/var/log/kern.log" AND message="ipv6.*CALIPSO") 1{ 2 "bool": { 3 "should": [ 4 { "match_phrase": { "message": "BUG_ON pskb_expand_head" }}, 5 { "wildcard": { "message": "*ipv6*CALIPSO*" }} 6 ] 7 } 8}정규식 (로그 파싱용)
^.*BUG_ON\(.*pskb_expand_head\).*$^.*ipv6:.*CALIPSO.*$
오탐 튜닝
- 정상 운영 중 CALIPSO 확장 헤더를 사용하는 서비스가 있다면, 해당 서비스의 IP/포트 조합을 화이트리스트에 추가하고, 위 쿼리에서
source_ip!=<whitelisted>조건을 적용합니다. - 커널 디버그 메시지(
printk로 출력되는 일반 INFO)와 실제 OOPS 를 구분하기 위해panic=파라미터가 설정된 경우와systemd[1]: Starting직전 로그를 연계해 알림 임계값을 조정합니다.
검증 절차
- 위 쿼리를 적용한 후 정상 트래픽에서 경보 발생 여부 확인.
- PoC 수준의 CALIPSO 패킷(예:
scapy로IPv6(ext_hdr=CALIPSO))을 전송해 경보가 실제 OOPS 를 감지하는지 검증.
🛡️ 완화 방안
-
CALIPSO 모듈 비활성화 (커널이 모듈형일 경우)
text1modprobe -r calipso_ipv6 # 실제 모듈명 확인 후 언로드2echo "blacklist calipso_ipv6" >> /etc/modprobe.d/disable-calipso.conf구현 난이도: 중간 (의존성 체크 필요).
운영 영향: CALIPSO 라벨링 기능 전체 비활성화, 정책 기반 트래픽 제어가 불가능해짐.
검증:lsmod | grep calipso로 모듈이 언로드 되었는지 확인. -
sysctl 로 제한 (커널 파라미터 지원 시)
text1sysctl -w net.ipv6.calipso=0 # 존재한다면 적용구현 난이도: 낮음, 재부팅 없이 즉시 적용.
운영 영향: 동일하게 CALIPSO 기능 차단.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.5 · non-KEV · EPSS=0.00239 · exploit=moderate · in_scope=None