Kestrel
CVE-2025-21867DGX_2· 2026년 7월 29일 AM 02:18

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

A Use-After-Free vulnerability in the Linux kernel's BPF test_run functionality allows local users to cause memory corruption via invalid user_data length, requiring restriction of unprivileged BPF access.

📋 요약

  • 심각도 high · CVSS 7.8 · EPSS 0.00181 · 악용난이도 hard

🔍 공격 기법

(1) 트리거 조건: bpf_prog_test_run_xdp() 함수가 bpf_test_init()에 전달하는 user_data 인자값이 Ethernet 헤더 최소 길이(ETH_HLEN)보다 작을 때 발생. 이로 인해 eth_skb_pkt_type()이 유효하지 않은 메모리 영역(Ethernet 헤더가 없는 skb data)에 접근하며 Use-After-Free(UAF)를 유발함.

(2) 공격 단계:

  • 정찰: 시스템의 커널 버전 확인 및 unprivileged_bpf_disabled 설정 값 확인.
  • 초기접근: 로컬 쉘 권한 확보 (AV:L, PR:L).
  • 실행·권한 획득: BPF 테스트 인터페이스를 통해 조작된 user_data(길이 < 14 bytes)를 포함한 패킷을 주입 $\rightarrow$ 커널 내 UAF 트리거 $\rightarrow$ 추정: 슬랩 할당자(Slab Allocator)의 메모리 레이아웃 조작을 통한 임의 주소 쓰기/읽기 시도 $\rightarrow$ 권한 상승.
  • 지속 및 영향: 커널 모드 권한 획득 후 루트 권한 탈취 및 백도어 설치.

(3) 공격 표면:

  • 엔드포인트: bpf() 시스템 콜 (특히 BPF_PROG_TEST_RUN 명령).
  • 파라미터: bpf_test_run_opts 구조체의 user_data 및 관련 길이 설정.

(4) CVSS 벡터 연결:

  • AV:L / PR:L: 로컬 사용자의 권한이 필요하며, BPF 시스템 콜에 접근 가능한 환경이어야 함.
  • AC:L: 특정 입력값(user_data < ETH_HLEN)만으로 트리거 가능하여 복잡도가 낮음.
  • UI:N: 사용자 상호작용 없이 직접적인 시스템 콜 호출로 실행됨.

악용 가능성: 본 취약점은 AV:L/PR:L 조건에 따라 공격자가 이미 시스템에 로그인하여 낮은 권한의 셸을 확보한 상태에서만 트리거 가능하므로 공격 난이도는 Hard로 판정됩니다. 실제 공격 표면은 Linux 커널의 BPF 서브시스템 내 bpf_prog_test_run_xdp() 함수와 이를 호출하는 유저 공간 인터페이스이며, 구체적으로는 bpf_test_init()으로 전달되는 user_data 파라미터의 길이 검증 미비가 핵심 트리거 지점입니다. 공격자가 ETH_HLEN보다 작은 비정상적인 값을 주입할 경우, 커널 내 eth_skb_pkt_type() 함수가 유효하지 않은 메모리 영역(Ethernet header 부재)에 접근하며 Use-After-Free(UAF) 상태를 유발합니다. EPSS 수치가 0.00181로 매우 낮고 KEV에 등재되지 않은 점은, 이 취약점이 원격에서 즉시 악용될 가능성보다는 로컬 권한 상승(LPE)을 위한 정교한 커널 익스플로잇 체인의 일부로 사용될 가능성이 높음을 시사합니다. 결과적으로 단순한 크래시를 넘어 실제 공격으로 이어지려면, UAF 발생 지점의 메모리 레이아웃을 제어하여 임의 코드 실행이나 권한 상승으로 연결하는 고도의 커널 힙 스프레이(Heap Spraying) 기법이 전제되어야 합니다.

💥 영향 분석

(1) 기술적 위험: Memory Corruption(UAF). 성공적으로 악용될 경우 커널 패닉으로 인한 서비스 중단(DoS) 또는 커널 메모리 조작을 통한 권한 상승(LPE, Local Privilege Escalation) 가능.
(2) 비즈니스 영향: 다수의 Linux 배포판 및 클라우드 인프라 커널에 영향을 미치므로, 멀티테넌트 환경(Container/VM)에서 컨테이너 탈출이나 호스트 장악으로 이어질 수 있어 가용성과 데이터 무결성에 심각한 위협.

🔗 관련 취약점·체이닝

  • 체이닝 경로: 추정: [정보 유출(KASLR 우회)] $\rightarrow$ [CVE-2025-21867 (UAF를 통한 메모리 오염)] $\rightarrow$ [권한 상승(Root)].
  • 유형 수준 분석: BPF 관련 취약점은 주로 verifier 우회나 JIT 컴파일러 오류와 결합되는 경향이 있음. 본 취약점은 test_run 경로의 유효성 검사 미흡으로 인한 것이므로, 메모리 레이아웃을 예측 가능하게 만드는 다른 Slab-related 취약점과 체이닝될 가능성이 높음.

🔎 탐지

(1) 로그 지표: 커널 로그(dmesg, /var/log/kern.log) 내 KMSAN: use-after-free in eth_skb_pkt_type 또는 BUG: KMSAN 관련 스택 트레이스 발생 여부.
(2) 탐지 규칙:

  • 로직: BPF 시스템 콜 호출 시 BPF_PROG_TEST_RUN 옵션과 함께 전달되는 데이터 버퍼의 크기가 14바이트 미만인 경우를 모니터링.
  • SIEM/EDR 예시 (Pseudo-code): SELECT * FROM syscall_events WHERE syscall_name == 'bpf' AND cmd == 'BPF_PROG_TEST_RUN' AND user_data_len < 14
    (3) 오탐 시나리오: BPF 기반의 특수 네트워크 진단 도구가 의도적으로 작은 패킷을 테스트하는 경우. 튜닝 방법: 신뢰할 수 있는 관리자 계정/프로세스 제외 처리.

🛡️ 완화 방안

  • 즉시(긴급 차단): sysctl -w kernel.unprivileged_bpf_disabled=1 설정을 통해 비특권 사용자의 BPF 접근을 전면 차단. (난이도: 매우 낮음 / 영향: BPF 기반 모니터링 도구 작동 중지 가능)
  • 단기(완화): seccomp 프로필을 적용하여 일반 프로세스의 bpf() 시스템 콜 호출을 제한. (난이도: 중간 / 영향: 애플리케이션 호환성 검토 필요)
  • 근본(해결): 영향을 받는 커널 버전(5.18~6.13.5 등)에서 수정 사항이 반영된 최신 패치 버전으로 업데이트. bpf_test_init()user_data < ETH_HLEN 체크 로직 추가 확인. (난이도: 중간 / 영향: 재부팅 필요, 가용성 일시 중단)

[분석 근거]

  • 다중 소스 교차검증을 통해 취약점 원인과 영향 제품 범위의 일관성이 확인됨(신뢰도 1.0).
  • EPSS 실측값 0.00181 및 백분위 0.07991은 현재 실제 야생(in-the-wild) 악용 사례가 드물며, 공격 난이도가 'hard'임을 시사함.
  • CVSS 7.8의 높은 잠재적 위험에도 불구하고, 실측 EPSS와 KEV 미등재 상태를 고려하여 우선순위를 scheduled(이번 주 내)로 결정함.

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…