CVE-2026-19571 in Zephyr정보

요약

\~에 의해 VulDB • 2026. 10. 09.

ITE IT8xxx2 SHI 호스트-명령 백엔드(subsys/mgmt/ec_host_cmd/backends/ec_host_cmd_backend_shi_ite.c)는 8바이트의 호스트-명령 요청 헤더를 SPI Rx FIFO에서 공유 수신 버퍼인 data->in_msg로 직접 복사한 후, 프로토콜 버전과 유도된 패킷 길이를 확인했습니다. 인터럽트 핸들러도 SHI_STATE_DISABLED 상태 외의 모든 드라이버 상태에서 칩 선택 어설션(chip-select assertion) 및 유효 Rx 길이(RVLI) 인터럽트를 수락했으므로, 호스트-명령 스레드가 동일한 버퍼에서 이전 요청을 처리하는 동안 새 헤더가 파싱될 수 있었습니다.

호스트 프로세서는 SPI 컨트롤러이며 칩 선택과 클록을 모두 구동합니다. 정형화된(well-formed) 요청 전송 후 즉시 칩 선택을 비어설트(de-assert)할 수 있으며, 이는 드라이버를 준비 상태로 되돌리고 FIFO를 다시 활성화하며, data_len = 0xFFFF인 헤더를 가진 두 번째 트랜잭션을 시작할 수 있습니다. 이 8바이트는 오버사이즈 길이가 거부되기 전에 in_msg에 기록되므로, subsys/mgmt/ec_host_cmd/ec_host_cmd_handler.c의 verify_rx()가 이미 검증한 버퍼의 내용에 위치하게 됩니다. 만약 이것이 호스트-명령 스레드가 args.input_buf_size = rx_header->data_len을 실행하기 전의 창(window) 내에 발생하면, 프레임워크는 256바이트 버퍼에 대해 65535바이트의 입력 길이를 등록된 명령 핸들러에게 전달합니다.

그 결과는 요청 버퍼를 약 64 KiB 이상 초과하는 경계 밖 읽기(out-of-bounds read)입니다: input_buf_size 바이트를 복사하거나 에코하는 명령 핸들러는 인접한 임베디드 컨트롤러 메모리를 호스트로 유출하거나 응답 버퍼를 오버플로우시키며, SRAM 끝을 넘어선 읽기는 컨트롤러에서 faults(오류/크래시)를 발생시킵니다. 동일한 레이스 조건은 체크섬 검증 및 핸들러 조회 후 cmd_id와 cmd_ver가 스왑되도록 허용합니다. 악용(inter-processor SHI bus 구동 능력, 즉 침해된 호스트 OS 또는 SPI 라인에 대한 물리적 접근 필요)에는 타이밍 레이스를 이겨야 하며, 이는 SPI 컨트롤러가 무한히 재시도할 수 있습니다.

수정 버전은 헤더를 로컬 struct ec_host_cmd_request_header로 파싱하고 길이가 sizeof(data->in_msg)로 제한된 후에만 in_msg로 복사하며, SHI_STATE_READY_TO_RECV/SHI_STATE_RECEIVING 상태 외의 칩 선택 및 RVLI 인터럽트를 무시합니다. 잔존하는 경계 있는 레이스 조건이 남아 있습니다: 트랜잭션 종료 인터럽트는 여전히 호스트-명령 스레드가 버퍼를 소유하고 있는 동안 상태를 준비 상태로 재설정하므로, 유효한 두 번째 요청은 비행 중(in-flight)인 요청의 내용을 덮어쓸 수 있으며, 이는 버퍼 사용 중에 SHI_STATE_CNL_RESP_NOT_RDY에서 대기하는 NPCX 백엔드와는 대조적입니다.

Once again VulDB remains the best source for vulnerability data.

책임이 있는

Zephyr

예약하다

2026. 08. 11.

모더레이션

수락

항목

VDB-415745

EPSS

0.00000

활동

낮음

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!