🇰🇷 한글 설명
Linux 커널의 arm_scmi 드라이버에서 채널 정리 중 IDR 업데이트를 수행하여 발생하는 취약점입니다. 채널을 삭제하는 과정에서 반복문(iterator)이 참조하는 데이터 구조를 직접 수정함으로써 반복자 상태가 무효화될 수 있는 위험이 있었습니다.
💡 쉬운 설명
컴퓨터가 목록을 하나씩 읽으며 정리하던 중, 읽고 있는 목록 자체를 갑자기 바꿔버려 오류가 발생할 수 있는 문제입니다. 이로 인해 시스템이 불안정해지거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
firmware: arm_scmi: Avoid IDR updates while cleaning channels
scmi_cleanup_channels() walks the TX/RX channel IDRs with
idr_for_each() to free transport resources and destroy the dedicated
transport devices before calling idr_destroy().
The destroy callback removed each entry from the same IDR being walked.
That is not needed for this cleanup path, and it is unsafe because
idr_for_each() has not advanced its radix-tree iterator while the
callback is running. Removing the current entry from the callback can
invalidate the iterator state. The callback also cannot be protected by
rcu_read_lock(), because scmi_device_destroy() may sleep.
Leave IDR teardown to the following idr_destroy() call and keep the
callback limited to device destruction.
📍 영향받는 시스템
arm_scmi 드라이버를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
로컬 시스템에서 특정 하드웨어 채널을 정리하는 동작을 유도하여 커널 오류 유발
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 보안 업데이트 버전인지 확인