Home Network Automation Protocol (HNAP)
La implementación del Protocolo de Automatización de Redes Domésticas (HNAP) de los routers D-Link se ve afectada por una vulnerabilidad de desbordamiento de búfer basada en pila registrada como CVE-2016-6563.La falla podría ser explotado por un atacante remoto no autenticado para ejecutar código arbitrario con privilegios de root.
"El procesamiento de mensajes SOAP malformados al realizar la acción HNAP Login provoca un desbordamiento de búfer en la pila. Los campos XML vulnerables dentro del cuerpo de SOAP son: Action, UserName, LoginPassword y Captcha ", el asesor indica
parse_xml_value(char* request, char* XMLtag, char* tag_value) (...) .text:00412264 xml_tag_value_start = $s2 .text:00412264 xml_tag_value_end = $s1 .text:00412264 C30 addu xml_tag_value_start, $v0, $s0 # s2 now points to$value .text:00412268 C30 la $t9, strstr .text:0041226C C30 move $a1, xml_tag_value_end # needle .text:00412270 C30 jalr $t9 ; strstr .text:00412274 C30 move $a0, xml_tag_value_start # haystack .text:00412278 C30 lw $gp, 0xC30+var_C20($sp) .text:0041227C C30 beqz $v0, loc_4122BC .text:00412280 C30 subu xml_tag_value_end, $v0, xml_tag_value_start # s1 now holds the ptr tovalue$ .text:00412284 C30 bltz xml_tag_value_end, loc_4122BC .text:00412288 C30 addiu $s0, $sp, 0xC30+xml_tag_var .text:0041228C C30 la $t9, strncpy .text:00412290 C30 move $a2, xml_tag_value_end # n .text:00412294 C30 move $a1, xml_tag_value_start # src .text:00412298 C30 addu xml_tag_value_end, $s0, xml_tag_value_end .text:0041229C C30 jalr $t9 ; strncpy # copies all chars in$value$ to xml_tag_var using strncpy .text:004122A0 C30 move $a0, $s0 # dest .text:004122A4 C30 move $a0, a2_ptr # a2_ptr is a stack variable from hnap_main (passed as third argument to parse_xml_value) .text:004122A8 C30 lw $gp, 0xC30+var_C20($sp) .text:004122AC C30 move $a1, $s0 # src .text:004122B0 C30 la $t9, strcpy # copies xml_tag_var into a2_ptr using strcpy .text:004122B4 C30 jalr $t9 ; strcpy # the stack of the calling function (hnap_main) is thrashed if 2408+ bytes are sent .text:004122B8 C30 sb $zero, 0(xml_tag_value_end) (...) There are two overflows, therefore two choices for exploitation: 1) The local stack (on parse_xml_value) can be overrun with 3096+ bytes. This overflow occurs even though strncpy is used, because the argument to strncpy is simply the strlen of the value inside the XML tag. 2) Alternatively, it's possible to overrun the stack of the calling function (hnap_main), using only 2408+ bytes - this is because strcpy is used to copy the xml_tag_var onto the third argument received by parse_xml_value, which is a pointer to a stack variable in hnap_main.
Los routers D-Link afectados por el defecto CVE-2016-6563 pertenecientes a la familia DIR son:
- DIR-823
- DIR-822
- DIR-818L(W)
- DIR-895L
- DIR-890L
- DIR-885L
- DIR-880L
- DIR-868L
Según el CERT, D-Link no ha solucionado el problema, la única solución es desactivar la administración remota.
La mala noticia es la disponibilidad de un código de explotación de prueba de concepto en Metasploit publicado por el experto en seguridad Pedro Ribeiro de Agile Information Security.
Ribeiro explicó que el tema que causó por los campos de aceptar arbitrariamente cadena larga que se copian en la pila.
"Varios enrutadores Dlink contienen una vulnerabilidad de desbordamiento de búfer de pre-autenticación de pila que se expone en la interfaz LAN en el puerto 80. Esta vulnerabilidad afecta al protocolo HAP SOAP, que acepta cadenas arbitrariamente largas en ciertos parámetros XML y los copia en la pila. Este exploit ha sido probado en los dispositivos reales DIR-818LW y 868L (rev. B), y ha sido probado usando emulación en el DIR-822, 823, 880, 885, 890 y 895. Otros podrían ser afectados, y esta vulnerabilidad Está presente en los dispositivos MIPS y ARM ". Es la descripción de las vulnerabilidades CVE-2016-6563 proporcionadas por Ribeiro" Los dispositivos MIPS son alimentados por procesadores Lextra RLX, que son los núcleos MIPS lisiados que carecen de unas pocas instrucciones de carga y almacenamiento. Debido a esto las cargas útiles tienen que ser enviadas sin codificar, lo que puede hacer que fallen, aunque el shell de enlace parece funcionar bien. Para los dispositivos ARM, el tcp inverso en línea parece funcionar mejor. Compruebe los enlaces de referencia para ver las versiones de firmware vulnerables. "
Ribeiro descubrió dos métodos para activar la vulnerabilidad, pasando a un campo vulnerable una cadena de más de 3096 bytes o superando la pila de la función llamante, hnap_main, con 2048+ bytes.
Esta no es la primera vez que los expertos encuentran un defecto en la implementación de D-link del HNAP, hace muchos años los expertos en SourceSec Security Research descubrieron problemas similares en el servicio.
http://www.dlink.com/uk/en/support/support-news/2015/april/13/hnap-privilege-escalation-command-injection
Fuente:
http://securityaffairs.co/wordpress/53231/hacking/cve-2016-6563-dlink.html
No hay comentarios:
Publicar un comentario