🔍 CVE-2025-71132

7.5
CVSS Score
HIGH
2026-01-14
2026-10-19 19:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 smc91x 드라이버에서 PREEMPT_RT 환경 사용 시 인터럽트 컨텍스트가 제대로 복구되지 않는 취약점이 발견되었습니다. smc_special_trylock()이 인터럽트를 비활성화하지만, smc_special_unlock()이 PREEMPT_RT 환경에서 이를 정상적으로 복구하지 못해 시스템 오류를 유발합니다.

💡 쉬운 설명

컴퓨터의 네트워크 장치를 제어하는 소프트웨어에서 작업 중 중단된 신호를 다시 연결하는 과정에 오류가 발생합니다. 이로 인해 시스템이 불안정해지거나 멈출 수 있는 문제가 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: smc91x: fix broken irq-context in PREEMPT_RT When smc91x.c is built with PREEMPT_RT, the following splat occurs in FVP_RevC: [ 13.055000] smc91x LNRO0003:00 eth0: link up, 10Mbps, half-duplex, lpa 0x0000 [ 13.062137] BUG: workqueue leaked atomic, lock or RCU: kworker/2:1[106] [ 13.062137] preempt=0x00000000 lock=0->0 RCU=0->1 workfn=mld_ifc_work [ 13.062266] C ** replaying previous printk message ** [ 13.062266] CPU: 2 UID: 0 PID: 106 Comm: kworker/2:1 Not tainted 6.18.0-dirty #179 PREEMPT_{RT,(full)} [ 13.062353] Hardware name: , BIOS [ 13.062382] Workqueue: mld mld_ifc_work [ 13.062469] Call trace: [ 13.062494] show_stack+0x24/0x40 (C) [ 13.062602] __dump_stack+0x28/0x48 [ 13.062710] dump_stack_lvl+0x7c/0xb0 [ 13.062818] dump_stack+0x18/0x34 [ 13.062926] process_scheduled_works+0x294/0x450 [ 13.063043] worker_thread+0x260/0x3d8 [ 13.063124] kthread+0x1c4/0x228 [ 13.063235] ret_from_fork+0x10/0x20 This happens because smc_special_trylock() disables IRQs even on PREEMPT_RT, but smc_special_unlock() does not restore IRQs on PREEMPT_RT. The reason is that smc_special_unlock() calls spin_unlock_irqrestore(), and rcu_read_unlock_bh() in __dev_queue_xmit() cannot invoke rcu_read_unlock() through __local_bh_enable_ip() when current->softirq_disable_cnt becomes zero. To address this issue, replace smc_special_trylock() with spin_trylock_irqsave().

📍 영향받는 시스템

PREEMPT_RT 커널 옵션이 활성화된 Linux 커널 (smc91x 드라이버 사용 시)

⚔️ 공격 벡터

로컬 시스템에서 특정 네트워크 드라이버 환경을 통해 시스템 불안정 유발 가능

🛡️ 대응 방법

smc_special_trylock() 함수를 spin_trylock_irqsave()로 교체하여 인터럽트 복구 로직을 수정해야 합니다.

🔧 검증 코드

출력 결과에 PREEMPT_RT가 포함되어 있다면 해당 취약점이 발생할 수 있는 환경임을 의미합니다.

Shell / Script
uname -a | grep -E 'PREEMPT_RT'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel