[단독공격] 분석 — CVE-2025-21731
CVE-2025-21731 is a local use‑after‑free in the Linux NBD driver that can be triggered by an unprivileged process to achieve kernel memory corruption and privilege escalation; immediate mitigation is to disable or patch the NBD module.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00219 · 악용난이도 hard
🔍 공격 기법
- 공격 표면:
nbd커널 모듈이 로드된 시스템에서 Generic Netlink 인터페이스(netlink)를 통해nbd_genl_disconnect()와nbd_genl_reconfigure()호출이 가능하면 노출됨. - 전제 조건:
- 공격자는 로컬 계정으로
CAP_NET_ADMIN수준 이하의 권한을 보유 (CVSS PR:L). - NBD 모듈이 활성화돼 있어
/sys/module/nbd가 존재하거나modprobe nbd가 가능해야 함.
- 공격자는 로컬 계정으로
- 단계별 흐름:
- 정찰 –
lsmod | grep nbd,cat /proc/netlink등으로 NBD 모듈 존재 확인. - 초기 접근 – 사용자 공간 프로그램에서 Netlink 메시지를 전송해
nbd_genl_disconnect()호출, 기존recv_work큐를 플러시하고NBD_RT_HAS_CONFIG_REF비트를 클리어하지 않은 상태 유지. - 경쟁 조건 유발 – 바로 이어서
nbd_genl_reconfigure()를 호출해 새로운recv_work작업을 다시 큐에 삽입. 이때 아직 해제되지 않은nbd_config참조가 남아 있음. - 실행·권한 획득 – 플러시된
recv_work가 실행되면nbd_config_put()로 이미 해제된 객체를 다시 접근 → Use‑After‑Free 발생, 임의 커널 메모리 덮어쓰기 가능. - 지속·영향 – 성공 시 커널 주소 공간을 조작해 루트 권한으로 쉘을 얻거나, 악성 모듈 로드 등 지속적인 제어 확보.
- 정찰 –
- CVSS와 실제 조건 매핑: AV:L (로컬), AC:L (경쟁 조건 트리거가 단순), PR:L (저권한), UI:N (사용자 개입 없음) → 공격이 현장에선 실현 가능함을 의미.
악용 가능성: 이 취약점은 AV:L(Local)·AC:L(Low complexity)·PR:L(Low privileges)·UI:N(No interaction)이라는 CVSS 벡터가 의미하듯, 로컬에 접근할 수 있는 일반 사용자 계정만으로도 공격을 시작할 수 있습니다. 그러나 실제로 악용하려면 NBD(netlink) 인터페이스를 통해 nbd_genl_disconnect와 nbd_genl_reconfigure 호출을 연속적으로 수행해 UAF(use‑after‑free) 상태가 발생하도록 워크큐 플러시와 재큐잉 사이의 레이스 타이밍을 정확히 맞춰야 하므로, 공격 난이도는 “hard”로 평가됩니다. EPSS = 0.00219이라는 실측값은 현재까지 이 조건을 만족하는 실제 공격 사례가 극히 드물다는 것을 보여주며, KEV에 등재되지 않은 점 역시 현 시점에서 활발한 위협으로 전환되지 않았음을 뒷받침합니다. 노출된 공격 표면은 NBD 디바이스를 관리하는 generic netlink 메시지와 /dev/nbd* 장치 파일이며, 특히 disconnect·reconfigure 파라미터가 조작 가능한 경우에만 레이스 조건이 성립됩니다. 따라서 공격자는 먼저 로컬에서 해당 커널 모듈이 로드된 시스템을 식별하고(정찰), netlink 소켓을 열어 위 두 API를 연속 호출해 워크큐가 비워지는 순간을 포착해야 합니다. 이 과정에서 요구되는 정확한 타이밍 제어와 특정 커널 설정(NBD 지원) 때문에, 실제 환경에서 재현하기는 어려우나 이론적으로는 권한 상승 및 서비스 거부 효과를 얻
💥 영향 분석
- 커널 메모리 손상 → 루트 권한 상승 및 전체 시스템 장악.
- NBD 디바이스가 마운트된 경우 데이터 무결성 파괴, 서비스 중단 가능.
🔗 관련 취약점·체이닝
- CWE‑416 (Use After Free) 를 기반으로 한 일반적인 커널 RCE 패턴과 동일하게 동작함.
- 추정: 다른 로컬 권한 상승 결함(예:
CVE-2024-XXXXX와 같은privilege escalation via race condition) 과 연계하면 초기 저권한을 바로 루트로 전이 가능함. (구체적인 CVE 번호는 확인되지 않음)
🔎 탐지
- 커널 로그(
dmesg,/var/log/kern.log)에 “use after free” 또는 “nbd_config_put” 관련 OOPS 메시지가 기록됨. - auditd/netlink 감시:
auditctl -a exit,always -S netlink_sendmsg -F subj_type=unconfined_t로 NBD Netlink 호출 빈도 급증 시 알림. - Workqueue 모니터링:
cat /proc/$(pidof kworker)/status에서 비정상적인recv_workq재큐 현황 포착.
🛡️ 완화 방안
- 즉시: NBD 모듈이 필요 없으면
modprobe -r nbd로 언로드하거나/etc/modprobe.d/disable-nbd.conf에install nbd /bin/true추가. - 패치 적용: 커널 5.15.180 이상, 6.1.130 이상 등 해당 취약점이 수정된 버전으로 업그레이드. 기존 LTS 배포판에서는 백포트 패치를 적용.
- 권한 제한:
cap_net_admin권한을 최소화하고 SELinux/AppArmor 프로파일에서 NBD Netlink 인터페이스 접근을 차단. - 모니터링 강화: 위 탐지 항목을 SIEM에 연동해 실시간 알림 설정.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00219 · exploit=hard · in_scope=None