🇰🇷 한글 설명
Linux 커널의 HID picolcd 드라이버 내 picolcd_send_and_wait() 함수에서 정수 오버플로우로 인한 NULL 포인터 역참조 취약점이 발견되었습니다. 부호 있는 정수형 루프 카운터 'k'가 INT_MAX를 초과할 경우 음수로 변하여, 데이터 크기가 0임에도 루프가 실행되어 잘못된 메모리 접근을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터가 숫자를 세는 과정에서 숫자가 너무 커져서 갑자기 마이너스 숫자로 바뀌는 오류가 발생했습니다. 이로 인해 컴퓨터가 존재하지 않는 메모리 주소를 읽으려다 시스템이 멈추거나 오류가 날 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
HID: picolcd: prevent NULL pointer dereference in picolcd_send_and_wait()
In picolcd_send_and_wait(), an integer overflow of the signed loop counter
'k' can theoretically lead to a NULL pointer dereference of 'raw_data'.
If the loop executes more than INT_MAX times, 'k' becomes negative,
making the condition 'k < size' true even when 'size' is 0.
Change the type of 'k' to 'unsigned int' to prevent the overflow and
eliminate the out-of-bounds access.
Found by Linux Verification Center (linuxtesting.org) with the Svace static
analysis tool.
[
[email protected]: extended hash length]
📍 영향받는 시스템
picolcd 드라이버를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
특수하게 조작된 HID 장치를 통해 정수 오버플로우를 유발하는 데이터 전송
🛡️ 대응 방법
루프 카운터 변수 'k'의 타입을 'signed int'에서 'unsigned int'로 변경하여 커널 업데이트 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 패치된 최신 버전인지 확인합니다.