🇰🇷 한글 설명
Linux 커널의 rmi_smbus 구성 요소에서 rmi_smb_write_block() 함수가 SMBus 블록을 분할하여 쓸 때 발생하는 경계 외 읽기(out-of-bounds read) 취약점입니다. 루프 계산 시 남은 데이터 길이가 아닌 전체 길이를 기준으로 블록 크기를 결정하여, 마지막 데이터 처리 시 입력 버퍼의 범위를 벗어난 메모리를 읽을 수 있습니다.
💡 쉬운 설명
데이터를 나누어 저장하는 과정에서 남은 양을 제대로 계산하지 못해, 실제 데이터보다 더 많은 양을 읽으려고 시도하는 오류입니다. 이로 인해 허용되지 않은 메모리 영역의 정보가 노출될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Input: rmi_smbus - fix out-of-bounds read in rmi_smb_write_block()
When chunking writes into SMBus blocks in rmi_smb_write_block(), the
loop calculates block_len using the original total length (len) instead
of the remaining length (cur_len).
If len is greater than 32 bytes (SMB_MAX_COUNT), block_len remains 32
for every iteration, even on the final partial chunk where fewer than 32
bytes remain. This causes smb_block_write() to read 32 bytes from the
advanced data buffer pointer, reading past the end of the input buffer.
Fix this by calculating block_len using cur_len and advancing the buffer
and address pointers by block_len.
📍 영향받는 시스템
Linux kernel (rmi_smbus 모듈 사용 시스템)
⚔️ 공격 벡터
특수하게 조작된 SMBus 쓰기 요청을 통해 커널 메모리 경계 외 읽기 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux