A buffer over-read was discovered in the CoAP library in Arm Mbed OS 5.15.3. The CoAP parser is responsible for parsing received CoAP packets. The function sn_coap_parser_options_parse_multiple_options() parses CoAP options that may occur multiple consecutive times in a single packet. While processing the options, packet_data_pptr is accessed after being incremented by option_len without a prior out-of-bounds memory check. The temp_parsed_uri_query_ptr is validated for a correct range, but the range valid for temp_parsed_uri_query_ptr is derived from the amount of allocated heap memory, not the actual input size. Therefore the check of temp_parsed_uri_query_ptr may be insufficient for safe access to the area pointed to by packet_data_pptr. As a result, access to a memory area outside of the intended boundary of the packet buffer is made.
Se detectó una lectura excesiva del búfer en la biblioteca CoAP en Arm Mbed OS versión 5.15.3. El analizador CoAP es responsable de analizar los paquetes CoAP recibidos. La función sn_coap_parser_options_parse_multiple_options() analiza las opciones de CoAP que pueden presentarse varias veces consecutivas en un solo paquete. Mientras se procesan las opciones, se accede a packet_data_pptr después de ser incrementado por option_len sin una comprobación previa de memoria fuera de límites. Temp_parsed_uri_query_ptr es comprobada para un rango correcto, pero el rango válido para temp_parsed_uri_query_ptr es derivado de la cantidad de memoria de pila asignada, no del tamaño de entrada real. Por lo tanto, la comprobación de temp_parsed_uri_query_ptr puede ser insuficiente para un acceso seguro al área señalada por packet_data_pptr. Como resultado, se realiza el acceso a un área de memoria fuera del límite previsto del búfer de paquetes