[공격] 분석 — CVE-2025-71079
CVE-2025-71079 is a local kernel deadlock in NFC/rfkill handling that can cause system hangs; promptly apply the upstream patch and monitor NFC‑related lock contention logs.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00089 · 악용난이도 hard
🔍 공격 기법
-
트리거 조건
nfc_unregister_device()가 실행되는 시점과/dev/rfkill(rfkill_fop_write) 에 대한 쓰기 요청이 동시에 발생해야 함.- 두 함수는 각각
device_lock(&dev->dev)와mutex_lock(&rfkill_global_mutex)를 잡고, 반대 순서로 다른 락을 대기하므로 ABBA 형태의 교착 상태가 형성됨.
-
공격 흐름
- 정찰·초기 접근 – 공격자는 로컬 시스템에 루트 권한(또는 NFC 드라이버를 제어할 수 있는 권한) 확보. 이는
nfc_unregister_device()를 호출하거나 커널 모듈을 언로드하는 데 필요함. - 동시 실행 – 동시에 특권 프로세스가
/dev/rfkill에 값을 쓰는 요청(예:echo 1 > /sys/class/rfkill/rfkill0/state) 을 수행. 두 스레드가 각각 A·B 경로에 진입하면 교착 상태 발생. - 영향 – 커널이 해당 락을 영구적으로 대기하게 되어 시스템 전체가 응답하지 않음(DoS). 프로세스는 복구 불가능한 상태가 되며 재부팅 필요.
- 정찰·초기 접근 – 공격자는 로컬 시스템에 루트 권한(또는 NFC 드라이버를 제어할 수 있는 권한) 확보. 이는
-
공격 표면
/dev/rfkill문자 디바이스 또는sysfs경로(.../rfkill*/state) 에 대한 쓰기 권한.- NFC 드라이버 언로드(예:
rmmod nfc) 혹은 커널 내부에서nfc_unregister_device()를 호출할 수 있는 루트 수준 API.
-
CVSS 벡터와 실제 조건 매핑
- AV:L (로컬) → 공격자는 로컬 시스템에 접근해야 함.
- AC:L (낮음) → 락 순서만 맞추면 자동으로 교착이 발생, 별도 복잡한 조작 불필요.
- PR:L (저 privileges) → 루트 권한만 있으면 충분; 일반 사용자에게는 제한됨.
- UI:N (사용자 상호 작용 없음) → 자동화된 스크립트로 동시 호출 가능.
-
실제 악용 난이도 – EPSS 0.00089(극히 낮음)이며, “hard” 등급으로 평가된 바와 같이 로컬 루트 권한·동시성 제어가 필요해 실전 활용은 제한적임.
악용 가능성: 이 취약점은 AV:L(로컬) · AC:L(낮은 복잡도) · PR:L(저권한) · UI:N(사용자 개입 없음) 이라는 CVSS 벡터가 의미하듯, 공격자는 로컬 시스템에 접근 가능한 일반 사용자 계정만 있으면 충분합니다. 그러나 실제 악용을 위해서는 rfkill_fop_write를 수행하는 쓰레드와 nfc_unregister_device를 호출하는 쓰레드가 동시에 같은 NFC 디바이스 객체를 잠그는 상황을 강제로 만들어야 하는데, 이는 커널 내부의 락 순서 역전(ABBA deadlock) 타이밍을 정밀히 조율해야 하므로 실전 난이도가 높습니다. EPSS 0.00089이라는 매우 낮은 확률과 KEV에 등재되지 않은 점도, 현재까지 실제 공격 시나리오가 보고되지 않았음을 반영합니다. 노출되는 공격 표면은 주로 /sys/class/rfkill/...와 같은 rfkill sysfs 엔드포인트(쓰기 가능)와 NFC 서브시스템이 제공하는 nfc_unregister_device를 호출할 수 있는 netlink 혹은 ioctl 인터페이스이며, 두 경로가 동일한 디바이스 구조체에 접근할 때만 충돌이 발생합니다. 따라서 공격자는 로컬에서 해당 엔드포인트에 쓰기 요청을 지속적으로 전송하면서 동시에 NFC 디바이스 제거 작업(예: echo 0 > /sys/class/nfc/.../remove)을 트리거해 락 경쟁을 유도해야 합니다. 이러한 동시성 조건을 정확히 맞추지 못하면 deadlock이 발생하지 않으므로, 이 취약점은 이론적으로는 로컬 저권한으로 이용 가능하지만 실제 악용 난이도는 “hard” 수준으로 평가됩니다.
💥 영향 분석
- 교착 상태 발생 시 커널 전체가 멈추어 서비스 중단(DoS)이 일어나며, 재부팅 없이는 복구 불가능.
- NFC 기능을 사용 중인 임베디드·IoT 장비에서 시스템 가용성이 즉시 상실될 수 있음.
🔗 관련 취약점·체이닝
- 유형: 락 순서 역전(Deadlock) → 가용성 파괴(DoS).
- 잠재 체인: 동일 커널 버전의 다른 드라이버에서
mutex_lock/spin_lock순서를 잘못 잡는 경우와 결합하면 전체 시스템이 연쇄적으로 멈출 수 있음. 예를 들어,rfkill_unregister()가 다른 모듈에서도 호출될 때 추가적인 교착 위험이 존재함(추정).
🔎 탐지
- 커널 로그(
dmesg)에nfc_dev_down→device_lock대기 후rfkill_fop_write스택 트레이스가 반복적으로 나타나는 경우. /var/log/kern.log등에서 “blocked waiting for mutex rfkill_global_mutex” 혹은 “blocked waiting for device lock” 문구를 실시간 모니터링.- 시스템 응답 지연이 감지되면
cat /proc/locks로 현재 락 대기 상태 확인.
🛡️ 완화 방안
- 패치 적용 – 커널 4.4.293‑4.5, 4.9.291‑4.10, 4.14.256‑4.15, 4.19.218‑4.20, 5.4.162‑5.5, 5.10.82‑5.10.248, 5.15.5‑5.15.198, 5.16.1‑6.1.160 에 포함된 upstream 수정(
rfkill_unregister()를device_lock밖으로 이동) 을 즉시 적용하고 재부팅. - 임시 회피 – NFC 드라이버가 필요 없을 경우
modprobe -r nfc*로 언로드하거나,/sys/class/rfkill/*/state에 대한 쓰기 권한을 제한하여 동시 호출 가능성을 차단. - 모니터링 강화 – 위 탐지 항목을 SIEM에 연동해 교착 징후가 포착되면 자동 알람 및 서비스 재시작 절차를 트리거.
다중 소스에서 일관성이 확인됐으며, EPSS 0.00089와 CVSS 5.5·hard 악용 난이도·non‑KEV 특성을 고려해 우선순위는 “monitor” 로 지정되었습니다. 빠른 패치 적용과 로그 기반 탐지가 핵심 대응 방안입니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00089 · exploit=hard · in_scope=None