CVE-2026-18414 in Zephyr정보

요약

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

ADC API는 각 드라이버가 대상 버퍼 크기가 너무 작은 샘플링 시퀀스를 거부하도록 요구합니다: include/zephyr/drivers/adc.h에 있는 struct adc_sequence의 buffer_size 필드는 "드라이버는 샘플이 한계를 초과하여 기록되지 않도록 보장해야 하며, 버퍼가 충분히 크지 않은 경우 오류를 반환해야 합니다"라고 문서화하고 있습니다. 그러나 ADI MAX32 드라이버는 이러한 계약을 준수하지 않았습니다. drivers/adc/adc_max32.c의 start_read() 함수는 바이트 수인 buffer_size를 샘플 개수((1 + extra_samplings) * 채널 수)와 비교했으며, sizeof(uint16_t)를 무시했기 때문에 필요한 크기의 절반에 해당하는 버퍼도 허용했습니다. 그런 다음 Wrap_MXC_ADC_GetData()를 통해 uint16_t data->buffer로 샘플이 저장되는데, 이 함수는 샘플당 2바이트를 기록하고 포인터를 uint16_t 크기만큼 이동시킵니다(동기식 읽기의 경우 adc_max32_start_channel(), 비동기식의 경우 adc_max32_isr()에서 발생). 예를 들어 두 채널을 선택하고 2바이트 버퍼를 사용하는 시퀀스는 검사를 통과하며, 두 번째 샘플이 버퍼 끝 너머에 기록됩니다.

CONFIG_USERSPACE가 설정된 빌드에서는 adc_read() 및 adc_read_async()가 시스템 호출입니다. drivers/adc/adc_handlers.c의 핸들러는 사용자 메모리에서 시퀀스를 복사하고, [buffer, buffer + buffer_size) 영역이 호출 스레드에 의해 쓰기 가능한지 여부만 검증하며, 사용자가 제공한 options->callback은 거부합니다. 이는 의도적으로 크기 산술 연산을 드라이버에 위임하는 것입니다. 따라서 MAX32 ADC 디바이스 객체에 대한 접근 권한을 부여받은 사용자 모드 스레드는 채널, buffer, buffer_size 및 options->extra_samplings를 완전히 제어할 수 있으며, 드라이버가 버퍼 수용량의 두 배만큼 많은 바이트를 기록하도록 할 수 있습니다. 검사가 extra_samplings에 따라 확장되므로 오버런(overrun) 길이는 버퍼 자체의 길이와 같아지며, 샘플 포인터는 반복 샘플링 시에만 되감기고 시퀀스의 추가 샘플링에서는 되감기지 않으므로 최대 channels * 65536 바이트만큼 끝 너머까지 기록됩니다.

결과적인 저장 연산은 드라이버가 커널 모드(시스템 호출 자체, ADC 컨텍스트 타이머 또는 비동기식 읽기를 위한 ADC 인터럽트 핸들러)에서 수행하므로, MPU는 스레드의 메모리 도메인을 제한하지 않습니다. 따라서 쓰기 작업은 사용자 영역을 선형적으로 벗어나 인접한 다른 영역(다른 파티션, 커널 데이터 또는 스레드 스택 등)으로 침투합니다. 그 영향력은 공격자가 선택한 길이와 오프셋에서 발생하는 커널 메모리 손상이며, 이는 비특권 사용자 모드 스레드로부터의 가능한 특권 상승 및 서비스 거부(Denial-of-Service) 원천(primitive)입니다. CONFIG_USERSPACE가 없는 빌드는 애플리케이션 자체가 버퍼를 제공하므로 호출자 측의 견고성 결함으로만 영향을 받습니다.

이 수정은 start_read() 함수 내의 해당 검사를 drivers/adc/adc_common.c에 있는 새로운 공유 헬퍼 adc_sequence_validate_buffer() 호출로 대체하며, 샘플 크기로 sizeof(uint16_t)를 전달합니다. 이 헬퍼는 active_channels * sizeof(uint16_t) * (1 + extra_samplings)을 계산하고, 어떤 샘플링도 시작되기 전에 -ENOMEM을 반환합니다.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Zephyr

예약하다

2026. 07. 30.

모더레이션

수락

항목

VDB-411176

EPSS

0.00000

출처

Want to know what is going to be exploited?

We predict KEV entries!