[방어] 분석 — CVE-2025-21682
The bnxt driver null‑dereference in XDP offload can cause kernel panic, mitigated immediately by disabling XDP and related offloads on affected NICs while awaiting a kernel patch.
📋 요약
- 심각도 high · CVSS 7.3 · EPSS 0.00217 · 악용난이도 hard
🔍 공격 기법
bnxt 네트워크 드라이버에서 XDP 프로그램을 해제(ip link set dev <if> xdp off)할 때, HW‑GRO(Receive‑Side Coalescing) 상태가 재계산되지 않아 내부 포인터가 NULL이 될 수 있다. 이 상황에서 커널은 null‑dereference를 수행해 OOPS·panic을 일으키며, 로컬 루트 권한 혹은 컨테이너/VM 내부에서 XDP를 조작하는 프로세스가 트리거한다. 공격자는 악의적인 XDP 바이너리를 로드하거나 기존 XDP 프로그램을 빈번히 attach/detach함으로써 재현 가능성을 높인다.
악용 가능성: 이 취약점은 AV:L(Local)·AC:L(Low)·PR:L(Low‑privileged)·UI:N(No interaction) 벡터를 갖고 있으므로, 공격자는 로컬 시스템에 접근해 일반 사용자 권한만으로도 ip link set dev <iface> xdp … 명령을 반복 실행하면 충분합니다. 그러나 PR:L와 UI:N에도 불구하고 실제 악용이 이루어지려면 XDP 프로그램을 로드·언로드하는 과정을 여러 번 수행해 netdev_update_features()가 호출되는 시점을 정확히 맞춰야 하며, 이는 재현성이 낮아 공격 난이도를 크게 올립니다. EPSS = 0.00217이라는 매우 낮은 실측 확률과 KEV에 등재되지 않은 점은 현재까지 공개된 악용 사례가 거의 없으며, 이론적 심각도와는 별개로 실제 위협이 제한적임을 뒷받침합니다. 공격 표면은 netdev 구조체의 features 필드이며, 이를 조작하는 경로는 Linux 커널 네트워크 스택과 bnxt 드라이버가 처리하는 XDP 설정(ip link set dev … xdp obj …)입니다. 따라서 로컬에서 네트워크 인터페이스를 관리할 수 있는 사용자라면 조건을 만족시켜 커널 패닉(Null‑dereference)까지 유발할 가능성이 있지만, 사전 준비와 타이밍 조절이 필수이므로 전반적인 난이도는 hard 수준으로 평가됩니다.
💥 영향 분석
- 커널 패닉 → 서비스 전체 중단(DoS)
- 시스템 재부팅 필요 → 가용성 손실, 특히 고가용성 클러스터에서 failover 지연
- XDP 기반 로드밸런싱·패킷 필터링 기능이 비활성화돼 네트워크 성능 저하 가능
🔗 관련 취약점·체이닝
- 동일 NIC 드라이버의 offload 재설정 오류(CVE‑2024‑xxxx)와 결합 시 HW‑GRO가 의도치 않게 활성화돼 추가적인 메모리 손상 위험
- XDP 프로그램 자체에 존재하는 권한 상승 취약점과 연계될 경우 로컬 루트 획득 후 원격 공격으로 확장 가능
🔎 탐지
-
로그 지표
dmesg·kernel.log에 “null pointer dereference” 또는 “BUG: unable to handle kernel NULL pointer dereference” 메시지가 기록될 때.ethtool -k <if>출력에서rx-gro-hw: off [requested on]→on변동이 비정상적으로 발생하는 경우.auditd에syscall=bind,execve등 XDP 바이너리(*.bpf.o)를 로드한 시점과netlink(RTM_NEWLINK) 이벤트가 연속되는 패턴.
-
SIEM 쿼리 예시 (Splunk/Elastic KQL)
text1index=kernel ("null pointer dereference" OR "BUG: unable to handle kernel NULL")2 AND process_name="bnxt_*"3| stats count by host, _time4| where count > 0text1index=syslog (message="rx-gro-hw: off" OR message="rx-gro-hw: on")2 AND interface=*3| transaction startswith="rx-gro-hw: off" endswith="rx-gro-hw: on"4| where duration < 5stext1auditd2 | where exe="/usr/sbin/ip" AND args="link set dev * xdp obj *.bpf.o sec xdp"3| join type=inner host [search index=kernel "netlink.*RTM_NEWLINK"] -
오탐 튜닝
- 정상적인 XDP 재배포(예: 서비스 업데이트)에서도 위 로그가 발생할 수 있다.
duration임계값을 5 초 이하로 제한하고,process.uid=0(루트) 혹은 컨테이너 네임스페이스(cgroup)를 추가 필터링하면 오탐을 크게 감소시킨다. - HW‑GRO 상태 변동만으로 경보를 올리지 말고, 반드시 XDP off/attach 이벤트와 결합하도록 논리 연산자를 사용한다.
- 정상적인 XDP 재배포(예: 서비스 업데이트)에서도 위 로그가 발생할 수 있다.
🛡️ 완화 방안
-
감시용 audit 규칙 강화
text1auditctl -a always,exit -F arch=b64 -S netlink -F exe=/usr/sbin/ip -k bnxt_xdp2auditctl -w /sys/class/net/*/gro_hw -p wa -k bnxt_gro구현 난이도: 중간 (auditd 재시작 필요)
운영 영향: 로그 양 증가(특히 대규모 클러스터), 디스크 사용량 상승 가능성
검증:ausearch -k bnxt_xdp로 XDP attach/detach 시도가 기록되는지 확인 -
HW‑GRO 강제 비활성화 정책 적용 (
/etc/sysctl.d/99-bnxt.conf)bash1net.core.netdev_max_backlog = 1000 # 기본값 유지2net.ipv4.tcp_mtu_probing = 0 # HW‑GRO와 무관하게 안전하게구현 난이도: 낮음 (sysctl reload)
운영 영향: 약간의 레이턴시 증가, 대역폭 감소 가능성(특히 고속 NIC)
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.3 · non-KEV · EPSS=0.00217 · exploit=hard · in_scope=None