An issue was discovered in uIP 1.0, as used in Contiki 3.0 and other products. The code that reassembles fragmented packets fails to properly validate the total length of an incoming packet specified in its IP header, as well as the fragmentation offset value specified in the IP header. By crafting a packet with specific values of the IP header length and the fragmentation offset, attackers can write into the .bss section of the program (past the statically allocated buffer that is used for storing the fragmented data) and cause a denial of service in uip_reass() in uip.c, or possibly execute arbitrary code on some target architectures.
Additional Descriptions (1)
Se detectó un problema en uIP versión 1.0, como es usado en Contiki versión 3.0 y otros productos. El código que reensambla los paquetes fragmentados no comprueba correctamente la longitud total de un paquete entrante especificado en su encabezado IP, así como el valor de compensación de fragmentación especificado en el encabezado IP. Al diseñar un paquete con valores específicos de la longitud del encabezado IP y el desplazamiento de fragmentación, los atacantes pueden escribir en la sección .bss del programa (más allá del búfer asignado estáticamente que se usa para almacenar los datos fragmentados) y causar una Denegación de Servicio en la función uip_reass() en el archivo uip.c, o posiblemente ejecutar código arbitrario en algunas arquitecturas de destino