[공격] 분석 — CVE-2025-71085
A local privilege user can trigger a kernel panic (DoS) via an integer overflow in the CALIPSO IPv6 implementation, requiring monitoring due to low EPSS and high exploit difficulty.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00114 · 악용난이도 hard
🔍 공격 기법
본 취약점은 Linux 커널의 calipso_skbuff_setattr() 함수에서 skb_cow()로 전달되는 headroom 값에 대한 검증 미흡으로 발생하는 Integer Overflow 및 Kernel Oops 결함이다.
-
공격 표면 (Attack Surface):
- 프로토콜: IPv6 CALIPSO ( encapsulation protocol).
- 엔드포인트/인터페이스:
netlabelctl도구를 통한 커널 네트워크 설정 인터페이스. - 취약 함수:
net/core/skbuff.c:2232의pskb_expand_head()내BUG_ON(nhead < 0).
-
트리거 원리 및 경로:
- 공격자는
netlabelctl을 사용하여 CALIPSO 설정을 조작한다. calipso_skbuff_setattr()가 호출될 때, 매우 큰 값(headroom > INT_MAX)을skb_cow()에 전달하도록 유도한다.__skb_cow()내부에서 암시적 정수 형변환(Implicit Integer Cast)이 발생하며,(int)(skb_headroom(skb) + len_delta)계산 결과가 음수가 된다.- 결과적으로
pskb_expand_head()에 음수 값(nhead < 0)이 전달되어 커널의BUG_ON매크로가 작동, 시스템이 즉시 중단(Panic)된다.
- 공격자는
-
공격 체인 및 전제 조건:
- 정찰 $\rightarrow$ 초기 접근: 공격자는 이미 시스템에 로그인한 상태여야 하며, 네트워크 설정을 변경할 수 있는 권한(
PR:L)이 필요하다. (CVSS 벡터AV:L/PR:L반영) - 실행 $\rightarrow$ 영향:
netlabelctl을 통해 특정 CALIPSO 맵과 주소를 설정함으로써 커널 내부의 메모리 관리 로직을 트리거한다. 별도의 복잡한 페이로드 없이 잘못된 길이 값 전달만으로 즉시 DoS 상태에 진입한다.
- 정찰 $\rightarrow$ 초기 접근: 공격자는 이미 시스템에 로그인한 상태여야 하며, 네트워크 설정을 변경할 수 있는 권한(
악용 가능성: 본 취약점은 Linux 커널의 IPv6 Calipso 캡슐화 구현 중 pskb_expand_head() 함수에서 발생하는 정수 오버플로우 기반의 Kernel Oops(DoS) 결함입니다. 공격 벡터가 AV:L인 만큼 로컬 권한을 가진 사용자가 특수하게 조작된 네트워크 패킷 구조를 생성하여 커널에 전달해야 하므로 진입 장벽이 높으며, 이에 따라 공격 난이도는 Hard로 판정됩니다. AC:L, PR:L, UI:N 조건은 일단 로컬 접근 권한만 확보된다면 추가적인 사용자 상호작용 없이 낮은 복잡도로 트리거가 가능함을 의미합니다. 하지만 EPSS 수치가 0.00114로 매우 낮고 KEV에 등재되지 않은 점은, 실제 야생(In-the-wild)에서 이 경로를 통해 권한 상승이나 원격 코드 실행으로 이어지는 공격 사례가 극히 드물다는 것을 시사합니다. 주요 공격 표면은 calipso_skbuff_setattr() 함수로 전달되는 headroom 파라미터이며, INT_MAX를 초과하는 값을 주입해 암시적 형변환(Implicit Cast)을 유도함으로써 BUG_ON 조건을 트리거하는 것이 핵심입니다. 결과적으로 본 취약점은 정교한 커널 메모리 조작 능력이 필요하며, 실전에서는 단독 공격보다는 시스템 가용성을 파괴하는 DoS 공격이나 다른 메모리 오염 취약점과 체이닝하여 커널 패닉을 유도하는 용도로 악용될 가능성이 큽니다.
💥 영향 분석
- 가용성 상실 (DoS): 커널 패닉(Kernel Oops)으로 인해 시스템이 완전히 중단된다.
- 영향 범위: 다중 소스 교차검증 결과 Linux 커널 4.8.1부터 6.18.4까지 매우 광범위한 버전이 영향권에 있어, 공급망 관점의 잠재적 위험도가 높다.
🔗 관련 취약점·체이닝
- 단독 공격 시: 본 취약점은
BUG_ON을 트리거하므로 단순 DoS로 종료된다. 권한 상승(LPE)이나 코드 실행으로 직접 이어질 가능성은 낮다. - 추정 체이닝 경로:
- DoS $\rightarrow$ 서비스 우회: 고가용성(HA) 클러스터 환경에서 특정 노드를 의도적으로 다운시켜 트래픽을 다른 취약한 노드로 유도하는 정밀 타격의 수단으로 활용될 수 있다.
- 메모리 오염 체이닝: 추정: 만약
BUG_ON이 없는 환경이거나 커널 설정에 따라 패닉 대신 메모리 덮어쓰기가 가능하다면,skb구조체의 헤드룸 조작을 통해 Out-of-bounds Write 또는 Heap Overflow 유형의 결함과 체이닝하여 권한 상승(LPE)을 시도할 가능성이 있다.
🔎 탐지
- 런타임 지표: 커널 로그(
dmesg)에서pskb_expand_head()함수와 관련된BUG: unable to handle kernel paging request또는Kernel panic - not syncing: BUG()메시지 확인. - 명령어 모니터링: 권한이 없는 사용자가
netlabelctl도구를 사용하여 CALIPSO 설정을 빈번하게 변경하는 행위 탐지.
🛡️ 완화 방안
- 근본 해결: 영향받는 Linux 커널 버전의 최신 보안 패치를 적용하여
calipso_skbuff_setattr()가 음수 또는 비정상적인 headroom 크기를 전달하지 않도록 수정한다. - 즉시 조치: 불필요한 경우 CALIPSO 모듈 로드를 제한하거나, 일반 사용자의
netlabelctl접근 권한을 엄격히 통제한다. - 우선순위 근거: 본 취약점은 다중 소스에서 일관성이 확인되었으나, EPSS 수치가 0.00114로 매우 낮고 실측 악용 등급이
hard이며 KEV에 등재되지 않았다. 따라서 즉각적인 긴급 대응보다는 패치 주기 내 업데이트하는 monitor 수준의 대응을 권고한다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00114 · exploit=hard · in_scope=None