[방어] 분석 — CVE-2025-71079
CVE-2025-71079 is a local kernel deadlock in the NFC/rfkill subsystem that can cause system hangs, and the top‑priority mitigation is to immediately restrict unprivileged writes to /dev/rfkill while preparing an upstream kernel upgrade.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00089 · 악용난이도 hard
🔍 공격 기법
NFC 드라이버가 로드된 Linux 시스템에서 저권한 사용자가 /dev/rfkill에 write()를 수행하면 rfkill_fop_write() 가 rfkill_global_mutex 를 잡고 NFC 콜백을 호출합니다. 동시에 다른 스레드가 nfc_unregister_device() 를 실행하면 device_lock 을 먼저 잡아 rfkill_global_mutex 를 기다리는 상황이 발생해 ABBA 형태의 교착 상태가 생깁니다. 결과적으로 커널 스케줄러는 해당 태스크들을 무한 대기시키고 시스템 전체가 응답하지 않게 됩니다.
악용 가능성: 이 취약점은 로컬에서만 이용할 수 있는 AV:L 특성을 가지며, 공격자는 시스템에 이미 존재하는 권한 PR:L (일반 사용자 수준)만으로도 충분히 접근할 수 있습니다. 복잡도가 낮아 AC:L 인 만큼, NFC 디바이스를 등록·해제하거나 rfkill 파일을 쓰는 rfkill_fop_write() 시스템 콜을 호출하는 것만으로도 트리거가 가능합니다(사용자 개입 UI:N 필요 없음
💥 영향 분석
- 가용성: 교착 상태가 발생하면 전체 OS가 멈추어 서비스 중단(DoS) 위험이 있습니다.
- 권한 요구 수준: PR:L 로 낮은 권한(일반 사용자)만으로 트리거 가능하므로 내부 공격자 또는 물리적 접근을 가진 악성 사용자가 쉽게 이용할 수 있습니다.
- 범위: Linux 4.4‑5.16 계열 중 다수 버전(8개 커널 라인)에 존재하므로, NFC 기능이 활성화된 임베디드·IoT·서버 등 다양한 환경에 영향을 미칠 수 있습니다.
🔗 관련 취약점·체이닝
- 동일한 lock ordering inversion 패턴을 이용하는 다른 커널 모듈(예: Bluetooth, Wi‑Fi)에서 발생하는 교착 상태와 연계될 가능성이 있습니다.
rfkill인터페이스를 통해 제어되는 무선 장치 전반에 대한 권한 상승·DoS 체이닝 공격 시나리오와 결합될 수 있습니다(다른 CVE 번호는 현재 확인되지 않음).
🔎 탐지
-
커널 로그(dmesg / syslog) 패턴
blocked task혹은task blocked for more than와 함께nfc_dev_down또는rfkill_fop_write문자열이 나타나는 경우.- lockdep 경고에
potential deadlock이 포함된 라인.
-
SIEM 쿼리 예시 (예: Elastic Kibana, Splunk)
text1source:"/var/log/kern.log"2AND ("blocked task" OR "potential deadlock")3AND ("nfc_dev_down" OR "rfkill_fop_write") -
auditd 규칙 (unprivileged write to /dev/rfkill)
- 감시 대상:
path=/dev/rfkill perm=w auid>=1000 - 경고 발생 시 알림 전송 및 해당 프로세스 PID 기록.
- 감시 대상:
-
오탐 튜닝
- 정상적인 rfkill 상태 변경(예: 사용자가 Wi‑Fi/블루투스를 켜는 경우)도 동일 로그를 남길 수 있으므로,
exe=/usr/sbin/rfkill혹은uid=0(root)인 이벤트만 허용하도록 필터링합니다. blocked task가 5 초 이상 지속될 때만 경보를 발생시키면 일시적인 스케줄러 지연에 대한 오탐을 감소시킬 수 있습니다.
- 정상적인 rfkill 상태 변경(예: 사용자가 Wi‑Fi/블루투스를 켜는 경우)도 동일 로그를 남길 수 있으므로,
🛡️ 완화 방안
-
NFC 모듈 언로드
text1modprobe -r nfc구현 난이도: 쉬움, 해당 커널에 NFC가 필요 없는 경우에만 적용.
운영 영향: NFC 기능 사용 불가(대부분 서버·데스크톱에서는 영향 없음).
검증 방법:lsmod | grep nfc로 모듈 비활성화 확인. -
rfkill 인터페이스 차단 서비스 (systemd)
/etc/systemd/system/rfkill-block.service를 작성해 부팅 시chmod 600 /dev/rfkill실행하도록 설정.
구현 난이도: 중간, 시스템 관리자가 필요.
운영 영향: 지속적인 권한 제한 보장.
-
Lockdep 디버깅 활성화 (임시 모니터링)
- 커널 부팅 파라미터에
lock_debug를 추가해 교착 상태 발생 시 로그를 상세히 남기게 함.
구현 난이도: 중간, 재부팅 필요.
운영 영향: 약간의 성능 저하와 로그 양 증가.
- 커널 부팅 파라미터에
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00089 · exploit=hard · in_scope=None