🇰🇷 한글 설명
Linux 커널의 tps53679 hwmon 드라이버에서 i2c_smbus_read_block_data()가 0을 반환할 때 배열 경계 초과 접근이 발생합니다. 반환값이 0인 경우를 처리하지 않아 buf[-1]을 읽으면서 스택 메모리가 노출됩니다. 조건을 'ret < 0'에서 'ret <= 0'으로 변경하여 수정됩니다.
💡 쉬운 설명
Linux 커널의 전원 관리 칩 드라이버가 데이터를 잘못된 메모리 위치에서 읽을 수 있는 메모리 누수 취약점입니다. 민감한 시스템 정보가 노출되거나 커널 패닉을 유발할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
hwmon: (tps53679) Fix array access with zero-length block read
i2c_smbus_read_block_data() can return 0, indicating a zero-length
read. When this happens, tps53679_identify_chip() accesses buf[ret - 1]
which is buf[-1], reading one byte before the buffer on the stack.
Fix by changing the check from "ret < 0" to "ret <= 0", treating a
zero-length read as an error (-EIO), which prevents the out-of-bounds
array access.
Also fix a typo in the adjacent comment: "if present" instead of
duplicate "if".
📍 영향받는 시스템
tps53679 hwmon 드라이버를 포함하는 Linux 커널 시스템 (특정 버전 미공개, 최신 5.x 커널 대상)
⚔️ 공격 벡터
로컬 사용자가 비정상 i2c 디바이스 응답을 통해 스택 메모리 정보 유출 또는 DoS 공격 수행
🛡️ 대응 방법
Linux 커널을 패치된 최신 버전으로 업데이트 - `sudo apt update && sudo apt install linux-image-generic`
🔧 검증 코드
커널 버전 확인 후 tps53679 드라이버가 로드되어 있으면 취약점에 노출되어 있으므로 즉시 커널 업데이트 필요
uname -r; lsmod 2>/dev/null | grep tps53679 || echo 'tps53679 driver not loaded'