🇰🇷 한글 설명
Linux 커널의 amd/display 드라이버에서 VBIOS 테이블의 구조체 크기를 검증하지 않아 발생하는 취약점입니다. VBIOS가 실제 데이터보다 큰 크기를 보고할 경우, 루프 과정에서 BIOS 이미지 범위를 벗어난 메모리를 읽는 Out-of-bounds read가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품의 설정 정보를 읽어올 때, 실제 데이터보다 더 많은 양을 읽으려고 시도하여 오류를 일으키는 문제입니다. 이로 인해 시스템이 불안정해지거나 잘못된 메모리 정보가 노출될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amd/display: Validate GPIO pin LUT table size before iterating
[Why&How]
The GPIO pin table parsers in get_gpio_i2c_info() and
bios_parser_get_gpio_pin_info() derive an element count from the VBIOS
table_header.structuresize field, then iterate over gpio_pin[] entries.
However, GET_IMAGE() only validates that the table header itself fits
within the BIOS image. If the VBIOS reports a structuresize larger than
the actual mapped data, the loop reads past the end of the BIOS image,
causing an out-of-bounds read.
Fix this by calling bios_get_image() to validate that the full claimed
structuresize is accessible within the BIOS image before entering the
loop in both functions.
(cherry picked from commit ba5e95b43b773ae1bf1f66ee6b31eb774e65afe3)
📍 영향받는 시스템
Linux kernel (drm/amd/display 드라이버 포함 버전)
⚔️ 공격 벡터
조작된 VBIOS 테이블을 통해 메모리 경계를 벗어난 읽기 시도
🛡️ 대응 방법
커널 업데이트를 통해 bios_get_image() 검증 로직이 적용된 최신 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 확인