[공격] 분석 — CVE-2025-21760
A Use-After-Free vulnerability in the Linux kernel's ndisc module allows a local attacker to achieve memory corruption, necessitating an immediate kernel update to versions that implement proper RCU protection in
ndisc_send_skb().
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.095 · 악용난이도 moderate
🔍 공격 기법
(1) 트리거 조건: ndisc_send_skb() 함수가 RTNL lock이나 RCU read lock 없이 호출될 때 발생. 이 상태에서 dev_net_rcu()를 통해 네트워크 장치에 접근하면, 해당 객체가 해제된 후 참조되는 Use-After-Free(UAF) 조건이 형성됨.
(2) 공격 단계:
- 정찰: 대상 시스템의 커널 버전 확인 (영향을 받는 2.6.26 ~ 6.13.4 범위 내인지 확인).
- 초기 접근: 로컬 사용자 계정 확보 (
PR:L조건). 네트워크 설정 변경 권한이나 특정 소켓 생성 권한이 필요함. - 실행 및 권한 획득:
ndisc관련 패킷 전송을 유도하여ndisc_send_skb()를 트리거 $\rightarrow$ Race Condition을 이용해 RCU 보호 구간 밖에서 객체 해제 유도 $\rightarrow$ UAF 발생 $\rightarrow$ 커널 메모리 오염 및 제어 흐름 탈취(Control Flow Hijacking) $\rightarrow$ 권한 상승(LPE). - 지속: 커널 모드에서 백도어 설치 또는 루트 권한 프로세스 생성.
- 영향: 시스템 전체 제어권 획득.
(3) 공격 표면: IPv6 Neighbor Discovery Protocol (NDP) 관련 커널 서브시스템, ndisc 모듈 내의 SKB 전송 함수 및 네트워크 인터페이스 관리 경로.
(4) CVSS 벡터 연결:
AV:L: 로컬 쉘 접근이 필수적임.AC:L: 트리거 조건이 단순하며 특정 커널 버전에서 일관되게 나타남.PR:L: 일반 사용자 권한만으로도 네트워크 스택의 일부 기능에 접근 가능함.UI:N: 사용자 상호작용 없이 백그라운드에서 실행 가능.
악용 가능성: 본 취약점은 AV:L 및 PR:L 조건으로 인해 로컬 시스템에 이미 접근 권한을 가진 사용자만이 트리거할 수 있어 진입 장벽이 존재합니다. 하지만 AC:L과 UI:N 판정에서 알 수 있듯, 일단 권한을 확보한 공격자가 특수하게 조작된 네트워크 패킷이나 인터페이스 설정을 통해 ndisc_send_skb() 함수를 호출할 수 있다면 추가적인 사용자 상호작용 없이 즉시 악용이 가능합니다. 특히 EPSS 0.095는 KEV 미등재 상태임에도 불구하고 실제 야생에서 공격 시도가 관찰되거나 잠재적 활용 가치가 높음을 시사하며, 단순한 이론적 결함을 넘어 실질적인 위협임을 입증합니다. 공격 표면은 Linux Kernel의 IPv6 Neighbor Discovery Protocol(NDP) 스택으로, 특히 ndisc_send_skb() 내에서 RCU 락 없이 dev_net_rcu()를 호출할 때 발생하는 Use-After-Free(UAF) 지점이 핵심 타겟입니다. 공격자는 네트워크 인터페이스의 상태를 급격히 변경하거나 특정 NDP 메시지를 유도하여 레이스 컨디션을 일으킴으로써 메모리 오염을 유발하고, 이를 통해 커널 권한 상승으로 이어지는 체이닝 경로를 구축할 수 있습니다.
💥 영향 분석
(1) 기술적 위험: Memory Corruption을 통한 커널 패닉(DoS) 유발 또는 임의 코드 실행을 통한 루트 권한 획득(Privilege Escalation).
(2) 비즈니스 영향: 다수의 리눅스 배포판 및 커널 버전(2.6.26 ~ 6.13.4)이 광범위하게 영향을 받으므로, 인프라 전반의 시스템 무결성 파괴 및 데이터 유출 위험이 높음.
🔗 관련 취약점·체이닝
- 체이닝 경로: 추정: [정보 노출(KASLR 우회)] $\rightarrow$ [CVE-2025-21760 (UAF/Memory Corruption)] $\rightarrow$ [권한 상승(LPE)].
- 유형 수준 분석: UAF 취약점은 단독으로 사용되기보다, 커널 메모리 레이아웃을 파악할 수 있는 정보 유출(Information Leak) 결함과 체이닝될 때 실전 성공률이 극대화됨. 특히
slub할당자의 특성을 이용한 Heap Spraying 기법과 결합하여 제어권을 획득하는 패턴이 전형적임.
🔎 탐지
(1) 로그 지표: /var/log/syslog 또는 dmesg에서 kernel: General protection fault, kernel: Unable to handle kernel paging request와 같은 커널 패닉 및 메모리 덤프 로그 확인.
(2) 탐지 규칙:
- Rule 1 (Kernel Panic):
event_id == KERNEL_PANIC && message ~= /ndisc_send_skb/ - Rule 2 (Unexpected Crash):
process == "kworker" && status == "SEGFAULT" && stack_trace ~= /ndisc/ - Rule 3 (Abnormal Network Activity): 로컬 사용자 계정에서 단시간 내에 대량의 NDP(Neighbor Discovery Protocol) 관련 비정상 패킷 생성 시도 탐지.
(3) 오탐 시나리오 및 튜닝: 네트워크 드라이버 업데이트 중이나 하드웨어 장애로 인한 커널 패닉과 구분이 어려움.ndisc함수 호출 스택이 포함된 Crash Dump만 필터링하여 정밀 분석 필요.
🛡️ 완화 방안
- 즉시(긴급 차단):
- 불필요한 IPv6 기능 비활성화 (
sysctl -w net.ipv6.conf.all.disable_ipv6=1). - 구현 난이도: 낮음 / 운영 영향: IPv6 통신 불가 / 검증:
ip addr확인.
- 불필요한 IPv6 기능 비활성화 (
- 단기(완화):
- 비특권 사용자의 네트워크 설정 변경 및 Raw Socket 생성 제한 (
CAP_NET_ADMIN,CAP_NET_RAW권한 제거). - 구현 난이도: 중간 / 운영 영향: 일부 네트워크 도구 작동 불가 / 검증:
getcap명령어로 권한 확인.
- 비특권 사용자의 네트워크 설정 변경 및 Raw Socket 생성 제한 (
- 근본(해결):
- 커널 패치 적용 및 업데이트 (영향 버전별 최신 수정 버전으로 업그레이드).
ndisc_send_skb()내에rcu_read_lock()이 조기에 적용된 버전 사용. - 구현 난이도: 높음(재부팅 필요) / 운영 영향: 서비스 일시 중단 / 검증:
uname -r및 패치 로그 확인.
- 커널 패치 적용 및 업데이트 (영향 버전별 최신 수정 버전으로 업그레이드).
[파이프라인 근거] 본 분석은 다중 소스에서 데이터 일관성이 확인된 결과를 바탕으로 작성되었습니다. 실측 EPSS 값 0.095(백분위 0.94928)는 이론적 CVSS 점수와 별개로 실제 야생에서의 악용 가능성이 moderate 수준임을 시사하며, 이에 따라 우선순위를 scheduled(이번 주 내 대응)로 결정하였습니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.095 · exploit=moderate · in_scope=None