🔍 CVE-2026-93815

0.0
CVSS Score
UNKNOWN
2026-09-24
2026-10-03 11:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 au1000 드라이버에서 au1000_close() 함수가 스핀락(spin_lock_irqsave)을 유지한 채로 free_irq()를 호출하는 취약점이 발견되었습니다. free_irq()는 내부적으로 뮤텍스를 사용하여 잠들 수(sleep) 있는데, 이는 스핀락을 보유한 상태에서 허용되지 않는 동작입니다. 이로 인해 커널의 안정성이 저해되거나 시스템 충돌이 발생할 수 있습니다.

💡 쉬운 설명

컴퓨터의 핵심 부품을 제어하는 프로그램이 아주 짧은 시간 동안만 잠가야 하는 자물쇠를 채운 채로, 긴 휴식이 필요한 작업을 수행하려고 시도한 오류입니다. 이로 인해 시스템이 멈추거나 예상치 못한 오류가 발생할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: net: au1000: move free_irq out of the close-time spinlocked section au1000_close() calls free_irq() while aup->lock is still held with spin_lock_irqsave(). free_irq() can sleep because it takes the IRQ descriptor request mutex, so it does not belong inside the close-time spinlocked section. This was found by our static analysis tool and then confirmed by manual review of the in-tree au1000_close() .ndo_stop path. The reviewed path keeps aup->lock held across the MAC reset, queue stop and free_irq(dev->irq, dev). A directed runtime validation kept that ndo_stop carrier and the same free_irq(dev->irq, dev) operation under the driver lock. Lockdep reported "BUG: sleeping function called from invalid context" and "Invalid wait context" while free_irq() was taking desc->request_mutex, with au1000_close() and free_irq() on the stack. Drop aup->lock before freeing the IRQ. The protected close-time work still stops the device and queue before IRQ teardown, but the sleepable IRQ core path now runs outside the spinlocked section.

📍 영향받는 시스템

au1000 드라이버를 사용하는 Linux 커널 시스템

⚔️ 공격 벡터

로컬 권한을 가진 사용자가 네트워크 인터페이스를 닫는 동작을 유도하여 커널 패닉을 유발할 수 있음

🛡️ 대응 방법

au1000 드라이버의 스핀락 해제 로직이 포함된 최신 Linux 커널로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel