🇰🇷 한글 설명
Linux 커널의 adxl380 가속도계 드라이버에서 FIFO 상태 레지스터가 보고하는 엔트리 수가 스캔 엘리먼트 수의 배수가 아닐 때, 인터럽트 핸들러가 실제보다 더 많은 엔트리를 읽으려고 시도하여 버퍼 오버플로우가 발생할 수 있습니다. 수정은 FIFO 엔트리 수를 항상 배수가 되도록 내림값으로 조정합니다.
💡 쉬운 설명
센서의 메모리 영역에서 데이터를 읽을 때, 실제 데이터보다 더 많은 양을 읽으려고 하는 문제입니다. 이는 시스템 메모리를 손상시키거나 정보를 유출할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iio: accel: adxl380: Avoid reading more entries than present in FIFO
The interrupt handler reads FIFO entries in batches of N samples, where N
is the number of scan elements that have been enabled. However, the sensor
fills the FIFO one sample at a time, even when more than one channel is
enabled. Therefore,the number of entries reported by the FIFO status
registers may not be a multiple of N; if this number is not a multiple, the
number of entries read from the FIFO may exceed the number of entries
actually present.
To fix the above issue, round down the number of FIFO entries read from the
status registers so that it is always a multiple of N.
📍 영향받는 시스템
Linux kernel에서 adxl380 가속도계(inertial measurement unit) 드라이버를 사용하는 모든 시스템
⚔️ 공격 벡터
로컬 권한 보유자가 센서 인터럽트를 반복 트리거하여 커널 메모리 손상 또는 정보 유출 유발
🛡️ 대응 방법
Linux kernel을 최신 패치 버전으로 업데이트하여 adxl380 드라이버의 FIFO 읽기 로직 수정 적용
🔧 검증 코드
adxl380 모듈이 로드되어 있고 현재 kernel 버전을 확인합니다. 패치된 버전 이상이면 취약점이 수정된 상태입니다.
grep -r 'adxl380' /lib/modules/$(uname -r)/ 2>/dev/null | head -1 && uname -r