🔍 CVE-2026-93202

0.0
CVSS Score
UNKNOWN
2026-09-17
2026-10-21 13:21
✅ 완료

🇰🇷 한글 설명

Linux 커널의 I3C 마스터 드라이버에서 장치 등록 중 재귀적 잠금(Recursive Locking)이 발생하는 취약점입니다. 장치 등록 과정에서 이미 보유한 rwsem을 다시 획득하려 시도하여, 쓰기 작업이 대기 중일 때 시스템 데드락(Deadlock)이 발생할 수 있습니다.

💡 쉬운 설명

컴퓨터 부품을 등록하는 과정에서 시스템이 스스로를 잠가버려 멈추는 현상이 발생할 수 있습니다. 특정 하드웨어가 연결될 때 시스템이 응답하지 않는 상태가 될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: i3c: master: Fix recursive locking during device registration i3c_master_register_new_i3c_devs() registers newly discovered devices while holding i3c_bus_normaluse_lock(), a down_read(). device_register() can immediately probe the device, and probe callbacks typically invoke I3C helpers that take i3c_bus_normaluse_lock() again, leading to a recursive acquisition of the same rwsem. rwsems do not support recursive read locking and can deadlock when a writer is waiting. See the "Recursive read locks" section of Documentation/locking/lockdep-design.rst. For example, with Intel LPSS I3C, LOCKDEP generates a WARNING like: # echo intel-lpss-i3c.0 > /sys/bus/platform/drivers/mipi-i3c-hci/unbind # echo intel-lpss-i3c.0 > /sys/bus/platform/drivers/mipi-i3c-hci/bind WARNING: possible recursive locking detected kworker/5:1/94 is trying to acquire lock: ffff88811c810d78 (&i3cbus->lock){++++}-{4:4}, at: i3c_device_match_id+0x45/0x370 but task is already holding lock: ffff88811c810d78 (&i3cbus->lock){++++}-{4:4}, at: i3c_master_reg_work_fn+0x21/0x5f0 Fix this by separating device creation from device registration. Populate desc->dev under the maintenance lock, collect the devices that still need registration into a local list, then release the lock before calling device_register(). Finally retake the lock and clean up any devices that failed to register. Use the maintenance lock rather than the normal-use lock while adding device objects. A write-side maintenance lock prevents readers from observing a partially initialized desc->dev during initial device population, or desc->dev disappearing if registration fails. The local list requires a list node, so add a list node member to struct i3c_device.

📍 영향받는 시스템

I3C 마스터 기능을 사용하는 Linux 커널 버전

⚔️ 공격 벡터

로컬 공격자가 특정 I3C 장치를 바인딩/언바인딩하거나 장치를 등록하여 데드락 유도

🛡️ 대응 방법

장치 생성과 등록 과정을 분리하고, 유지보수용 잠금(maintenance lock)을 사용하는 최신 커널로 업데이트

🔧 검증 코드

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

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel