Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en firmware (CVE-2017-10722)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-119 Restricción de operaciones inapropiada dentro de los límites del búfer de la memoria
Fecha de publicación:
17/06/2019
Última modificación:
20/06/2019

Descripción

Recientemente, como parte de la investigación sobre dispositivos IoT en el firmware más reciente para el Endoscopio Shekar, la aplicación de escritorio utilizada para conectarse al dispositivo sufre un desbordamiento de pila si se le pasan más de 26 caracteres como contraseña del Wi-Fi. Esta aplicación está instalada en el dispositivo y un atacante que puede proporcionar la carga correcta puede ejecutar el código directamente en el sistema de usuario. Cualquier violación de este sistema puede permitir que un atacante tenga acceso a todos los datos a los que el usuario tiene acceso. La aplicación utiliza una biblioteca de enlace dinámico (DLL) llamada "avilib.dll", que es utilizada por la aplicación para enviar paquetes binarios al dispositivo que permiten controlarlo. Una de las acciones que proporciona la DLL es cambiar la contraseña en la función "sendchangepass" que le permite a un usuario cambiar la contraseña de Wi-Fi en el dispositivo. Esta función llama a una subfunción "sub_75876EA0" en la dirección 0x7587857C. La función determina cual acción ejecutar de acuerdo los parámetros que se le envíen. El "sendchangepass" pasa la cadena de datos como segundo argumento, que es la contraseña que ingresamos en el cuadro de texto y el entero 2 como primer argumento. El resto de los 3 argumentos se establecen en 0. La función "sub_75876EA0" en la dirección 0x75876F19 utiliza el primer argumento recibido y determina hacia qué bloque saltar. Dado que el argumento pasado es 2, salta a 0x7587718C y procede de allí a la dirección 0x758771C2 que calcula la longitud de la cadena de datos pasada como primer parámetro. Esta longitud y el primer argumento son pasados a la dirección 0x7587726F que llama a la función memmove que usa una dirección de pila como destino donde se pasa la contraseña que escribimos, ya que la fuente y la longitud calculada anteriormente se pasan como el número de bytes a copiar, lo que conlleva a un desbordamiento de pila.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:ishekar:endoscope_camera_firmware:*:*:*:*:*:*:*:*
cpe:2.3:h:ishekar:endoscope_camera:-:*:*:*:*:*:*:*