🇰🇷 한글 설명
Linux 커널 i3c MIPI HCI 드라이버의 DMA ring dequeue 함수에서 여러 타임아웃이 동시에 발생할 때 경합 조건(race condition)이 발생하여 ring 중단/재시작이 예측 불가능하게 작동. Mutex 추가로 함수 직렬화하여 해결.
💡 쉬운 설명
데이터가 이동하는 고리형 버퍼(ring)를 여러 프로세스가 동시에 제어하려다 서로 간섭하는 문제. 한 번에 한 개의 작업만 접근하도록 잠금 장치(mutex)를 추가하면 됨.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
i3c: mipi-i3c-hci: Fix race in DMA ring dequeue
The HCI DMA dequeue path (hci_dma_dequeue_xfer()) may be invoked for
multiple transfers that timeout around the same time. However, the
function is not serialized and can race with itself.
When a timeout occurs, hci_dma_dequeue_xfer() stops the ring, processes
incomplete transfers, and then restarts the ring. If another timeout
triggers a parallel call into the same function, the two instances may
interfere with each other - stopping or restarting the ring at unexpected
times.
Add a mutex so that hci_dma_dequeue_xfer() is serialized with respect to
itself.
📍 영향받는 시스템
Linux kernel (i3c MIPI HCI 드라이버 탑재 시스템 - 임베디드 I3C 장치 사용 플랫폼)
⚔️ 공격 벡터
로컬 공격자가 i3c 장치 타임아웃을 반복 유발하여 DMA ring 경합 조건 트리거 → DoS 또는 메모리 손상
🛡️ 대응 방법
Linux 커널을 CVE 패치 포함 버전으로 업데이트 (i3c 드라이버에 mutex 적용된 커널)
🔧 검증 코드
커널 버전 확인 후 해당 버전의 Changelog에서 i3c HCI race condition 패치 여부 확인; 패치 포함 버전 이상이면 안전
uname -r | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+' && echo 'Check kernel changelog for i3c HCI race fix' || echo 'Unable to determine'