🇰🇷 한글 설명
Linux 커널의 hwmon(pmbus/adm1266) 드라이버에서 블랙박스 레코드 개수를 검증하지 않아 발생하는 취약점입니다. 장치가 설정된 버퍼 크기보다 큰 레코드 개수를 보고할 경우, 메모리 경계를 넘어 데이터를 읽는 버퍼 오버런이 발생할 수 있습니다.
💡 쉬운 설명
하드웨어 장치가 잘못된 정보를 보낼 때, 컴퓨터 메모리의 허용된 범위를 넘어서 데이터를 읽어버리는 오류가 있습니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
hwmon: (pmbus/adm1266) reject implausible blackbox record_count
adm1266_nvmem_read_blackbox() loops over a record_count that comes
straight from byte 3 of the BLACKBOX_INFO response. The destination
buffer is data->dev_mem, sized for the nvmem cell's declared 2048
bytes (ADM1266_BLACKBOX_MAX_RECORDS * ADM1266_BLACKBOX_SIZE = 32 * 64).
A device that reports a record_count greater than 32 -- whether due
to firmware bugs, bus corruption, or a non-responsive slave returning
0xff -- would walk read_buff past the end of the dev_mem allocation
on the trailing iterations.
Cap record_count at ADM1266_BLACKBOX_MAX_RECORDS (introduced here)
before entering the loop and return -EIO on any larger value, so a
malformed BLACKBOX_INFO response cannot drive the loop out of bounds.
📍 영향받는 시스템
Linux kernel (hwmon/pmbus/adm1266 드라이버 사용 시스템)
⚔️ 공격 벡터
펌웨어 오류, 버스 통신 오류 또는 악의적인 장치를 통해 조작된 블랙박스 레코드 개수 값을 전달
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 레코드 개수 제한 로직을 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인