🔍 CVE-2026-98342

0.0
CVSS Score
UNKNOWN
2026-10-06
2026-10-19 10:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 dmaengine 서브시스템에서 dma_device를 해제하기 전에 RCU 리더가 완료될 때까지 기다리지 않는 취약점이 발견되었습니다. 이로 인해 리스트를 순회 중인 RCU 리더가 이미 해제된 메모리에 접근하여 Use-After-Free 오류가 발생할 수 있습니다.

💡 쉬운 설명

컴퓨터가 데이터를 옮기는 장치를 정리하는 과정에서, 아직 그 장치를 사용 중인 다른 작업이 있는지 확인하지 않고 바로 메모리에서 지워버리는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 오류가 발생할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: dmaengine: wait for RCU readers before releasing dma_device dma_issue_pending_all() walks the dma_device_list with list_for_each_entry_rcu() under rcu_read_lock(). dma_device_release() unlinks the device with list_del_rcu() and then calls device->device_release() (which in many drivers, such as plx_dma.c, directly calls kfree()). Because there is no grace period between unlinking the device and freeing it, concurrent RCU readers in dma_issue_pending_all() can access the device after it has been freed. The lockless walk originally relied on clients holding a dmaengine reference to pin the provider module, and therefore the device, for as long as they might traverse the list. Commit 8ad342a86359 ("dmaengine: Add reference counting to dma_device struct") decoupled the dma_device lifetime from the module reference, so the device can now be released while a reader is still walking the list. Add synchronize_rcu() before the device is freed, so RCU readers are guaranteed to have finished. Keep it unconditional: providers that do not implement device_release() free the device themselves once dma_async_device_unregister() returns. This call will delay for a grace period with dma_list_mutex held, which is safe and only teardown path is delayed.

📍 영향받는 시스템

Linux Kernel (dmaengine 서브시스템을 사용하는 버전)

⚔️ 공격 벡터

로컬 공격자가 특정 드라이버의 장치 해제 과정을 유도하여 Use-After-Free를 유발할 수 있음

🛡️ 대응 방법

dma_device 해제 전 synchronize_rc()를 호출하도록 수정된 최신 Linux 커널로 업데이트

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 취약점이 패치된 버전인지 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

NVIDIA Cloud Gaming Guest Driver for Linux