CVE-2026-19676 in Zephyr정보

요약

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

peci_transfer() 시스템 호출의 사용자 모드 검증자(z_vrfy_peci_transfer(), drivers/peci/peci_handlers.c에 위치)는 장치 객체 권한만 확인하고, 호출자가 제공한 struct peci_msg를 k_usermode_from_copy()로 복사했습니다. 이 복사는 외부 구조체의 유효성만 검사하며, 내장된 struct peci_buf 멤버인 tx_buffer와 rx_buffer 내부의 buf 포인터 및 len 값은 완전히 호출자의 제어 하에 남아 있었으며 드라이버에 검증 없이 전달되었습니다.

트리 내에 있는 모든 PECI 드라이버는 이러한 포인터를 슈퍼바이저 모드에서 역참조합니다: drivers/peci/peci_npcx.c의 peci_npcx_transfer()와 drivers/peci/peci_ite_it8xxx2.c의 peci_it8xxx2_transfer()는 rx_buffer.buf[i]에 하드웨어 바이트를 복사하고 tx_buffer.buf[i]에서 명령어 바이트를 읽으며, drivers/peci/pei_mchp_xec.c의 peci_xec_read()/peci_xec_write()도 동일한 동작을 수행하되 rx_buffer.len에 대한 제한이 전혀 없습니다. CONFIG_USERSPACE 하에서 애플리케이션이 장치를 노출하는 일반적인 방법인 PECI 장치 객체에 권한이 부여된 사용자 모드 스레드는 따라서 rx_buffer.buf를 커널 데이터 구조체를 가리키게 하여 드라이버가 하드웨어 제공 바이트를 그곳에 쓰도록 할 수 있거나, tx_buffer.buf를 커널 메모리를 가리키게 하여 그 내용을 PECI/eSPI 외부 대역(out-of-band) 버스로 푸시할 수 있습니다.

영향은 완전한 사용자 모드에서 커널로의 탈출입니다: 임의의 커널 쓰기 원시 연산(무결성 침해 및 이를 통한 슈퍼바이저 권한에서의 코드 실행), PECI 버스 관찰자에게 공개되는 임의의 커널 읽기, 그리고 매핑되지 않은 주소가 제공될 경우 쉽게 도달 가능한 슈퍼바이저 모드 결함(fault)이 포함됩니다. 악용에는 CONFIG_USERSPACE=y 설정과 하나 이상의 PECI 드라이버 활성화(CONFIG_PECI_NPCX, CONFIG_PECI_XEC 또는 CONFIG_PECI_ITE_IT8XXX2), 그리고 PECI 장치를 소유한 사용자 모드 스레드 내의 로컬 코드 실행이 필요합니다.

해결책은 두 개의 내장 버퍼에 대해 K_SYSCALL_MEMORY_READ() 및 K_SYSCALL_MEMORY_WRITE() 검사를 추가하고, RX 길이에 포함된 프레임 체크 시퀀스(frame-check-sequence) 바이트를 고려한 size_add_overflow() 가드를 적용합니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Zephyr

예약하다

2026. 08. 13.

모더레이션

수락

항목

VDB-424966

EPSS

0.00000

활동

낮음

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!