Kestrel
CVE-2025-71098DGX_A· 2026년 8월 1일 AM 02:39

[공격] 분석 — CVE-2025-71098

CVE-2025-71098 allows a local unprivileged process to trigger an ip6gre header handling bug that causes a kernel panic, and the fastest mitigation is to apply the upstream kernel patch or temporarily disable IPv6 GRE tunnels.

📋 요약

  • 심각도 medium · CVSS 5.5 · EPSS 0.00114 · 악용난이도 hard

🔍 공격 기법

  • 트리거 조건
    • 로컬에서 team 또는 bonding 네트워크 인터페이스가 dev->needed_headroom·dev->hard_header_len 값을 동적으로 변경할 수 있어야 함.
    • 이후 IPv6 GRE(ip6gre) 디바이스를 생성하고, MLD 패킷 전송 흐름(mld_newpack()mld_sendpack())이 실행될 때, 할당된 SKB의 헤드룸이 부족해 ip6gre_header() 내부에서 BUG_ON(skb_under_panic) 가 발생한다.
  • 공격 표면
    • 노출 엔드포인트: /sys/class/net/<iface>/needed_headroom, /sys/class/net/<iface>/hard_header_len (root가 아니어도 일부 시스템에서는 일반 사용자에게 쓰기 권한이 부여될 수 있음).
    • 호출 함수: ip6gre_header()(net/ipv6/ip6_gre.c), mld_newpack(), dev_hard_header().
  • 단계별 흐름
    1️⃣ 정찰ls /sys/class/net/*/needed_headroom 등으로 헤드룸 조정 가능 여부와 team·bonding 인터페이스 존재를 확인한다.
    2️⃣ 초기 접근 – 로컬 사용자 권한만으로 echo <value> > /sys/class/net/<iface>/needed_headroom 와 같이 값 변경이 가능한 경우 진행한다. (PR:L, AV:L).
    3️⃣ 실행 – 조정된 헤드룸 상태에서 ip -6 gre add dev ip6gre0 remote <addr> local <addr> 로 GRE 디바이스를 만들고, mld_sendpack() 를 유발하는 MLD 패킷을 전송한다(예: ping6 -I ip6gre0 ff02::1). 이때 커널은 ip6gre_header() 에서 헤드룸 부족을 감지하고 BUG 발생 → 시스템 전체 패닉(A:H).
    4️⃣ 영향 – 즉시 서비스 거부(DoS) 발생. 재부팅 후 자동 복구가 되지만, 지속적인 공격이 가능하다.
  • CVSS 벡터와 실제 조건 매핑AV:L(로컬), AC:L(헤드룸 값만 조정), PR:L(일반 사용자 권한 충분), UI:N, S:U, C:N/I:N/A:H.
  • 추정: 현재 공개된 증거는 커널 패닉을 초래하는 DoS에 국한되며, 메모리 오염을 통한 로컬 권한 상승(LPE) 가능성은 확인되지 않았다(추정).

악용 가능성: 이 취약점은 로컬 공격자(Privilege Required = Low)만으로도 충분히 악용할 수 있으며, 네트워크를 통한 원격 접근이 필요하지 않으므로 공격 전제조건이 비교적 단순합니다. CVSS 벡터 AV:L/AC:L/UI:N에 따라 물리적 또는 컨테이너 내부 등 로컬 환경에서 실행 가능한 코드가 있으면, 복잡한 권한 상승 절차 없이도 커널 크래시를 유발할 수 있습니다. EPSS 0.00114는 실제 악용 사례가 드물지만 존재함을 의미하며, KEV에 등재되지 않은 점은 아직 대규모 공격이 보고되지 않았다는 점을 반영합니다. 핵심 공격 표면은 ip6gre_header() 함수와 이를 호출하는 경로인 mld_newpack()·mld_sendpack()에서 할당되는 skb의 헤드룸이며, 팀(team) 혹은 본딩(bonding) 드라이버가 동적으로 dev->needed_headroom·dev->hard_header_len을 조정할 때 메모리 오버플로우가 발생합니다. 공격자는 로컬에서 특수하게 구성된 네트워크 인터페이스(예: ip6gre device)를 삽입하고, 의도적으로 헤드룸이 부족한 skb를 생성해 커널 패닉을 트리거할 수 있습니다. 따라서 난이도는 “hard”로 평가되지만, 로컬 권한만 확보하면 실현 가능성이 충분히 존재합니다.

💥 영향 분석

  • 성공 시 BUG at net/core/skbuff.c 가 발생하여 시스템 전체가 강제 재부팅된다.
  • 서비스 중단이 즉시 발생하고, 복구 전까지 모든 사용자와 프로세스가 영향을 받는다.
  • 취약한 커널 버전(3.7.1‑6.18.4 및 이후 6.x 계열)이 다수 배포판에 포함돼 있어 광범위한 환경에서 DoS 위험이 존재한다.

🔗 관련 취약점·체이닝

  • 추정: CWE‑787 (Out‑of‑bounds Write) – 헤드룸 계산 오류로 SKB 구조를 초과 쓰기.
  • 추정: CWE‑20 (Improper Input Validation) – 드라이버가 제공한 needed_headroom 값을 충분히 검증하지 않음.
  • 체인 가능 패턴
    • 메모리 손상 → 커널 코드 실행(함수 포인터 오염 등) : 현재는 확인되지 않았으나, 동일 힙 오버플로를 이용한 다른 CVE와 결합하면 LPE가 이론적으로 가능할 수 있다(추정).

🔎 탐지

  • dmesg·/var/log/kern.log 에서 "BUG at net/core/skbuff.c" 혹은 "skb_under_panic" 문자열이 기록되는지 실시간 모니터링.
  • auditd 또는 ftracemld_newpack, ip6gre_header 호출 흐름을 추적하고, 짧은 헤드룸(hard_header_len < 40) 을 가진 ip6gre 디바이스가 생성될 때 알림.

🛡️ 완화 방안

  • 즉시: 해당 커널 버전을 최신 보안 패치가 적용된 릴리즈로 업데이트한다(패키지 매니저 혹은 공식 커널 소스).
  • 임시: sysctl -w net.ipv6.conf.all.disable_ipv6=1 로 IPv6 GRE 사용을 차단하거나, modprobe -r ip6_gre 로 모듈을 언로드한다.
  • 추가: SELinux/AppArmor 정책으로 /sys/class/net/*/needed_headroom·hard_header_len 쓰기 권한을 제한하고, team·bonding 인터페이스에서 헤드룸 자동 조정 기능을 비활성화한다.

교차검증 결과 다중 소스에서 일관성이 확인됐으며, EPSS 0.00114(실측 악용 가능성 낮음)와 “monitor” 우선순위 결정 로직(CVSS 5.5·non‑KEV·exploit=hard)을 근거로 위 대응을 권고합니다.

⚖️ 위험도 / 우선순위

  • 조치: monitor (모니터링)
  • 근거: CVSS=5.5 · non-KEV · EPSS=0.00114 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…