Kestrel
CVE-2025-71079DGX_F· 2026년 8월 1일 AM 02:03

[단독방어] 분석 — CVE-2025-71079

A deadlock between nfc_unregister_device() and rfkill_fop_write() can freeze NFC functionality on affected Linux kernels, and the immediate mitigation is to disable the NFC kernel module until a patched kernel is deployed.

📋 요약

  • 심각도 medium · CVSS 5.5 · EPSS 0.00089 · 악용난이도 hard

🔍 공격 기법

rfkill_fop_write() (예: /dev/rfkill을 통해 비행기 모드 토글)와 nfc_unregister_device() (예: NFC 드라이버 언로드 또는 sysfs /sys/class/nfc/.../remove)가 동시에 실행되면,

  • Thread A는 rfkill_global_mutex를 잡고 device_lock(&dev->dev)을 기다리고,
  • Thread B는 device_lock(&dev->dev)를 잡은 뒤 rfkill_global_mutex를 기다리는 ABBA 형태의 교착 상태가 발생한다.

공격자는 사용자 권한으로도 NFC 드라이버를 언로드하거나 rfkill 인터페이스에 반복적인 쓰기를 수행함으로써 이 경쟁 상황을 유발해 시스템 전체를 정지(DoS)시킬 수 있다.

악용 가능성: 이 취약점은 AV:L (로컬 접근)으로, 공격자는 해당 시스템에 직접 코드를 실행할 수 있어야 합니다. AC:L (낮은 난이도)인 이유는 nfc_unregister_device 와 rfkill_fop_write 함수를 순서대로 호출하기만 하면 잠금 순서 역전으로 인한 ABBA 데드락을 쉽게 유발할 수 있기 때문이며, 두 함수 모두 커널 모듈 인터페이스(예: /dev/rfkill 또는 NFC sysfs 경로)를 통해 로컬 프로세스가 접근 가능합니다. PR:L (낮은 권한)으로 평가된 것은 해당 호출이 루트 권한 없이도 가능한 경우가 존재한다는 점을 반영합니다(특히, NFC 장치를 관리하는 일반 사용자 그룹에 포함된 경우). UI:N 은 사용자의 별도 조작이 필요 없으며, 악성 로컬 프로그램만 실행하면 자동으로 트리거됩니다. EPSS 값 0.

💥 영향 분석

  • 서비스 가용성: 교착 상태 발생 시 커널이 멈추어 모든 프로세스가 응답하지 않으며, 재부팅이 필요하다.
  • 보안 속성: CVSS 벡터(C:N/I:N/A:H)와 일치하게 기밀성·무결성은 영향을 받지 않는다.

🔗 관련 취약점·체이닝

추정: 이 유형은 Lock Order Inversion (CWE‑??)ABBA deadlock 패턴에 해당한다. 동일한 잠금 순서 역전 문제는 다른 드라이버(예: Bluetooth, Wi‑Fi)에서도 보고된 바 있어, 공격자가 여러 서브시스템을 연쇄적으로 언로드/제어하면 시스템 전체가 교착 상태에 빠질 위험이 있다.

🔎 탐지

  • 로그 소스

    • dmesg / kernel.log : “deadlock detected” 혹은 “blocked for too long” 메시지.
    • auditd : syscall=write/dev/rfkill 접근 기록과 동시에 rmmod nfc(또는 unlink/sys/class/nfc/*) 이벤트.
    • tracepoint: lock_contention_start/end (kernel‑lockdep) – 동일한 스레드가 rfkill_global_mutexdevice_lock을 교차 대기하는 경우.
  • SIEM 쿼리 예시 (ELK/Kibana DSL)

sql
1filter {
2 and
3 .message =~ "rfkill_fop_write"
4 .process.name == "rfkill"
5 .thread.id in (
6 // 같은 타임윈도우(5s) 내에 device_lock 대기 로그와 매칭
7 select thread.id from logs where message =~ "device_lock.*nfc" and @timestamp > now()-5s
8 )
9}
  • 정규식 탐지

    • rfkill_fop_write\(\).*mutex_lock\(.*&rfkill_global_mutex
    • nfc_unregister_device\(\).*device_lock\(.*&dev->dev
  • 오탐 튜닝

    • 정상적인 NFC 모듈 로드/언로드 시점에만 발생할 수 있으므로, 위 쿼리에 @timestamp 조건을 “짧은 연속 호출(≤2 s)”으로 제한한다.
    • 시스템 부팅 초기 단계에서의 대량 모듈 초기화는 제외(process.name == "systemd" 필터 추가).

🛡️ 완화 방안

  • 즉시(긴급 차단)

    • /etc/modprobe.d/blacklist-nfc.confblacklist nfc를 추가하고 modprobe -r nfc로 현재 로드된 NFC 모듈을 언로드한다. 이는 NFC 기능을 완전히 비활성화해 교착 상태 발생 경로를 차단한다.
    • 구현 난이도: 낮음 / 운영 영향: NFC 사용 불가 (대부분 서버에서는 영향을 받지 않음) / 검증: lsmod | grep nfc에 결과 없고, rfkill 토글 시 커널 로그에 deadlock 메시지가 나타나지 않는지 확인.
  • 단기(완화)

    • /dev/rfkill 접근 권한을 제한한다: chmod 600 /dev/rfkill && chown root:root /dev/rfkill. 비루트 사용자는 rfkill 상태를 변경할 수 없어 경쟁 상황이 발생하지 않는다.
      구현 난이도: 중간 / 운영 영향: 관리자가 아닌 일반 사용자에게 RF‑Kill 토글 기능 제한 / 검증: stat -c %a /dev/rfkill가 600인지 확인하고, 비루트 계정으로의 write 시도가 audit 로그에 기록되는지 점검.
    • 커널 lockdep 디버깅을 활성화(CONFIG_LOCKDEP=y)하고, sysctl kernel.lock_stat=1 로 잠금 대기 통계를 수집한다. 운영자는 주기적으로 /proc/lock_stat 를 확인해 비정상적인 대기 시간을 모니터링한다.
      구현 난이도: 중간 / 운영 영향: 약간의 성능 오버헤드 (잠금 추적) / 검증: cat /proc/lock_stat | grep rfkill_global_mutex 에 비정상적인 대기 횟수가 없음을 확인.
  • 근본(해결)

    • 공식 패치를 포함한 커널 버전으로 업그레이드한다. 영향을 받는 릴리즈는 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,

⚖️ 위험도 / 우선순위

  • 조치: monitor (모니터링)
  • 근거: CVSS=5.5 · non-KEV · EPSS=0.00089 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…