[공격] 분석 — CVE-2025-21731
CVE-2025-21731 is a high‑severity use‑after‑free bug in the Linux NBD driver that can be fully mitigated by applying the upstream kernel patch or by disabling the nbd module.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00219 · 악용난이도 hard
🔍 공격 기법
-
공격 표면 : Linux 커널의 NBD(Network Block Device) 드라이버가 제공하는 netlink 인터페이스(
nbd_genl_disconnect,nbd_genl_reconfigure)와 내부 workqueue(recv_workq). -
전제 조건 : 로컬 계정이 존재하고, 해당 시스템에 NBD 모듈이 로드되어 있으며 netlink 메시지를 전송할 수 있어야 함(Privileges = Low).
-
단계별 흐름
- 정찰 –
lsmod | grep nbd로 NBD 모듈 존재 확인,/proc/net/netlink를 통해 지원되는 genl family 조회. - 초기 접근 – 로컬에서 netlink 소켓을 열어
NBD_GENL_DISCONNECT메시지를 전송해 NBD 디바이스를 “disconnect” 상태로 만든다. 이때 내부적으로nbd_genl_disconnect()가 호출되어nbd_config의 레퍼런스 카운트가 0이 되지 않은 채 플러시 작업(flush_workqueue)을 수행한다. - 경쟁 조건 유도 – 바로 이어서
NBD_GENL_RECONFIGURE메시지를 전송한다.nbd_genl_reconfigure()가nbd_get_config_unlocked()로 현재nbd_config포인터를 얻고,nbd_reconnect_socket()을 통해 다시recv_workq에 작업을 큐에 넣는다. - 레퍼런스 해제 – 첫 단계에서 잡아두던 임시 레퍼런스가 해제되면
nbd_config가 실제로 free 된다. - UAF 트리거 – 워크큐에 남아 있던
recv_work()가 실행될 때nbd_config_put()이 이미 해제된 객체를 다시 참조·해제하면서 use‑after‑free가 발생한다.
- 정찰 –
-
공격 결과 : 커널 레벨에서 임의 코드 실행이 가능해지며, 루트 권한을 획득하거나 시스템 전체를 장악할 수 있다(Impact = High).
-
CVSS와 실제 조건 매핑 : AV:L (로컬), AC:L (복잡도 낮음, 타이밍 레이스만 필요), PR:L (일반 사용자 권한), UI:N (사용자 개입 없음) – 따라서 위 단계가 그대로 공격 성공에 필요한 전제조건이다.
악용 가능성: 이 취약은 AV:L(로컬)·AC:L(낮은 복잡도)·PR:L(저권한)·UI:N(사용자 개입 없음)이라는 CVSS 벡터가 그대로 실제 전제조건을 반영합니다. 즉, 공격자는 로컬 시스템에 접근할 수 있는 일반 사용자 계정만 있으면 되며, 특별한 환경 설정이나 순서 없이도 바로 악용이 가능하다는 뜻입니다. 그러나 nbd(Network Block Device) 모듈이 커널에 로드되고 /dev/nbd* 디바이스가 노출돼 있어야 하며, netlink 인터페이스(nbd_genl_disconnect, nbd_genl_reconfigure)를 통해 재연결 흐름을 조작할 수 있는 권한이 필요합니다. 공격 표면은 주로 netlink 메시지와 ioctl(NBD_SET_… ) 호출이며, 이들 파라미터가 커널 내부의 nbd_config 객체에 대한 임시 참조를 남긴 뒤 해제되지 않을 경우 UAF(Use‑After‑Free)가 발생합니다. EPSS = 0.00219이라는 실측값은 현재 실제 공격이 매우 드물지만, 존재한다는 점을 보여 주며, KEV 미등재는 아직 광범위하게 악용된 사례가 없음을 의미합니다. 따라서 난이도는 “hard”로 평가되지만, 로컬 저권한 사용자가 NBD 디바이스를 자유롭게 사용할 수 있는 환경이면 이론적으로 완전한 권한 상승 및 커널 패닉을 일으킬 수 있는 실질적인 위협이 존재합니다.
💥 영향 분석
- 커널 메모리 손상으로 인한 권한 상승 및 전체 시스템 장악이 가능함.
- NBD 디바이스가 사용 중인 환경(스토리지 백엔드, 클라우드 이미지 서버 등)에서는 서비스 중단이나 데이터 무결성 훼손 위험이 존재함.
🔗 관련 취약점·체이닝
- Memory‑Corruption (CWE‑416: Use After Free) 가 기본 원리이며, 동일한 메모리 해제/재사용 패턴을 이용하는 다른 커널 드라이버 결함과 연계될 수 있음(예:
CVE‑2024‑XXXX와 같은 workqueue race). - 추정: NBD 모듈이
ioctl기반으로 외부 스토리지에 접근할 경우, 해당 ioctl 취약점과 조합하면 원격 공격 벡터로 확장될 가능성이 있다.
🔎 탐지
- dmesg 혹은 커널 로그에
nbd_config_put후 바로 발생하는 use‑after‑free 오류 메시지가 기록되는 경우. - 짧은 시간 내에 동일한 netlink family에 대해
DISCONNECT→RECONFIGURE순서가 반복적으로 전송되는 트래픽 패턴. recv_workq가 비정상적으로 높은 빈도로 스케줄링되거나 워크큐 플러시 로그가 급증하는 현상.
🛡️ 완화 방안
- 즉시 조치 – NBD 모듈을 언로드하고 블랙리스트에 등록합니다.
text1modprobe -r nbd2echo "blacklist nbd" > /etc/modprobe.d/blacklist-nbd.conf
- 패치 적용 – 커널 버전을
4.12‑5.15및6.2‑6.13등 영향을 받는 범위에서 최신 패치가 포함된 릴리스(예: 5.10.236, 6.1.130 이상)로 업데이트합니다. - 백포트 – NBD 드라이버 소스에
NBD_RT_BOUND플래그를nbd_genl_disconnect()에서 클리어하는 패치를 직접 적용하고 재컴파일합니다. - 감시 강화 – 위 탐지 항목을 SIEM/EDR 정책에 추가하여 비정상적인 netlink 메시지 흐름 및 워크큐 활동을 실시간 알림으로 모니터링합니다.
위 조치를 이번 주 내에 수행하는 것이 권고됩니다. (우선순위 = scheduled, 교차검증 결과 다중 소스에서 일관성 확인, EPSS 0.00219 로 실제 악용 확률은 낮지만 CVSS 7.8·hard 난이도·non‑KEV 특성을 고려한 신속 대응 필요)
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00219 · exploit=hard · in_scope=None