🔍 CVE-2026-43319

5.5
CVSS Score
MEDIUM
2026-05-08
2026-11-06 16:18
✅ 완료

🇰🇷 한글 설명

Linux 커널 spidev 드라이버에서 두 뮤텍스(spi_lock, buf_lock)를 서로 다른 순서로 획득하는 AB-BA 락 역위 문제입니다. 이는 교착 상태를 유발할 수 있으며, 여러 스레드가 write()와 ioctl() 호출을 동시에 실행할 때 발생합니다. 패치는 buf_lock을 제거하고 spi_lock으로 모든 접근을 직렬화하여 해결합니다.

💡 쉬운 설명

SPI 장치 드라이버에서 두 개의 보안 잠금을 잘못된 순서로 획득하면서 발생하는 교착 상태 버그입니다. 여러 프로그램이 동시에 장치에 접근할 때 시스템이 멈출 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: spi: spidev: fix lock inversion between spi_lock and buf_lock The spidev driver previously used two mutexes, spi_lock and buf_lock, but acquired them in different orders depending on the code path: write()/read(): buf_lock -> spi_lock ioctl(): spi_lock -> buf_lock This AB-BA locking pattern triggers lockdep warnings and can cause real deadlocks: WARNING: possible circular locking dependency detected spidev_ioctl() -> mutex_lock(&spidev->buf_lock) spidev_sync_write() -> mutex_lock(&spidev->spi_lock) *** DEADLOCK *** The issue is reproducible with a simple userspace program that performs write() and SPI_IOC_WR_MAX_SPEED_HZ ioctl() calls from separate threads on the same spidev file descriptor. Fix this by simplifying the locking model and removing the lock inversion entirely. spidev_sync() no longer performs any locking, and all callers serialize access using spi_lock. buf_lock is removed since its functionality is fully covered by spi_lock, eliminating the possibility of lock ordering issues. This removes the lock inversion and prevents deadlocks without changing userspace ABI or behaviour.

📍 영향받는 시스템

Linux 커널 spidev 드라이버를 사용하는 모든 임베디드 시스템 및 IoT 기기 (패치 전 모든 버전)

⚔️ 공격 벡터

로컬 공격 (같은 spidev 파일 디스크립터에서 여러 스레드가 write()와 SPI_IOC_WR_MAX_SPEED_HZ ioctl() 동시 호출)

🛡️ 대응 방법

Linux 커널을 최신 버전으로 업데이트하여 spidev 드라이버 잠금 모델 패치 적용

🔧 검증 코드

출력된 커널 버전에 spidev 락 역위 수정 패치가 포함되었는지 커널 변경 로그(kernel changelog) 또는 배포본 릴리스 노트에서 확인

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel