🇰🇷 한글 설명
Linux 커널의 iio: imu: adis16400 드라이버에서 debugfs 읽기 작업이 보호되지 않는 취약점이 발견되었습니다. 이로 인해 debugfs 파일 읽기 도중 장치 바인딩이 해제될 경우, 메모리 해제 오류가 발생할 수 있습니다.
💡 쉬운 설명
장치의 정보를 읽는 도중에 장치가 갑자기 연결 해제되면 시스템이 충돌하거나 오류가 발생할 수 있는 문제입니다. 이를 방지하기 위해 정보를 읽는 동안 장치가 안전하게 유지되도록 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iio: imu: adis16400: fix unprotected debugfs reads
adis16400_serial_number_fops is open coded and never calls
debugfs_file_get(), so debugfs_remove_recursive() does not wait for a
read in progress and unbind frees the iio_dev underneath it.
Commit ae1d37a9bb4b ("iio: imu: adis16400: use DEFINE_DEBUGFS_ATTRIBUTE
instead of DEFINE_SIMPLE_ATTRIBUTE") converted product_id and
flash_count to DEFINE_DEBUGFS_ATTRIBUTE, which protects itself, but
moved all three files to debugfs_create_file_unsafe().
serial_number prints three registers as "%.4x-%.4x-%.4x" and
DEFINE_DEBUGFS_ATTRIBUTE() formats a single u64, so it cannot be
converted without changing what the file returns. adis16475 and
adis16550 already use debugfs_create_file() for their open coded
files. Use it here too.
📍 영향받는 시스템
Linux kernel (iio: imu: adis16400 driver components)
⚔️ 공격 벡터
로컬 사용자가 debugfs를 통해 특정 장치 정보를 읽는 도중 장치 드라이버를 언바인딩(unbind)하여 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 패치가 포함된 릴리스 이후 버전인지 확인하십시오.