CVE-2026-64565 in Linux
요약
\~에 의해 VulDB • 2026. 08. 04.
리눅스 커널에서 다음 취약점이 해결되었습니다:
입력: ims-pcu - ims_pcu_process_data()의 힙 버퍼 오버플로우 수정
`ims_pcu_process_data()`는 들어오는 URB(USB Request Block) 데이터를 바이트 단위로 처리합니다. 그러나 `read_pos` 인덱스가 IMS_PCU_BUF_SIZE를 초과하는지 확인하지 못합니다.
악성 USB 장치가 IMS_PCU_BUF_SIZE보다 큰 패킷을 전송하면, `read_pos`가 무한히 증가하게 됩니다. 또한 `read_pos`는 `read_buf` 바로 뒤에 위치하므로, 공격자는 `read_pos` 자체를 덮어써 인덱스를 임의로 조작할 수 있습니다.
이렇게 조작된 `read_pos`는 이후 `ims_pcu_handle_response()`에서 데이터를 `cmd_buf`로 복사하는 데 사용되며, 이로 인해 힙 버퍼 오버플로우가 발생합니다.
구체적으로 공격자는 `ims_pcu_handle_response()` 내에서 `cmd_buf`로부터 오프셋 136에 위치한 `cmd_done.wait.head`를 덮어쓸 수 있습니다. 결과적으로 드라이버에서 `complete(&pcu->cmd_done)`를 호출하면, 조작된 포인터를 사용하여 제어 흐름 탈취(control flow hijack)가 발생합니다.
이 문제를 해결하기 위해 `read_buf`에 쓰기 전에 `read_pos`에 대한 경계 검사(bounds check)를 추가합니다. 패킷의 길이가 너무 긴 경우 이를 폐기하고 경고 메시지를 로그하며 파서 상태를 초기화합니다.
[dtor: 패킷 상태 재설정 로직을 별도 함수로 추출, 체크섬도 함께 재설정]
If you want to get best quality of vulnerability data, you may have to visit VulDB.