Noticias

Fallos en Java y Python permiten saltarse firewalls a través inyecciones de FTP

Publicado

en

Se han descubierto fallos en Python y Java que permiten enviar emails no autorizados y saltarse las defensas de un firewall. Mientras que ambas tecnologías no sean parcheadas, un hacker puede aprovecharse de estas para lanzar ciberataques contra redes y otras infraestructuras.

Los fallos no parcheados residen en cómo Python y Java manejan enlaces de FTP (File Transfer Protocol), debido a que no se realiza ninguna comprobación de sintaxis en el parámetro del nombre del usuario, lo que abre la puerta a la inyección de código a través de ese protocolo (inyección de protocolo).

Alexander Klink, investigador en seguridad, publicó en su blog de forma detallada una vulnerabilidad de inyección de protocolo en el componente de Java XML eXternal Entity (XXE), que permite a los atacantes inyectar órdenes maliciosas no pertenecientes a FTP dentro de una petición de conexión a FTP.

Para demostrar que el ataque es cierto, Alexander muestra cómo un email no autorizado es enviado a través de SMTP (Simple Mail Transfer Protocol) en un intento de conexión a FTP. A pesar de que la conexión falla a la hora de intentar conectarse a través de FTP, los servidores que soportan dicho protocolo sí soportan la autenticación, no comprobando la presencia de retornos de carro (CR) o saltos de líneas (LF) en los nombres de usuario. Según el investigador, este es un escenario “donde se puede alcanzar (de forma no restringida, o sin spam ni filtros de malware) a un servidor de email interno desde una máquina que realice análisis de XML.”

Sin embargo esto no es todo, ya que otro investigator, Timothy Morgan, que trabaja en Blindspot Security, descubrió más posibilidades de amenaza cuando los manejadores de URL de FTP en Java y Python pueden ser usados para saltarse firewalls. El ataque se basaría en engañar al firewall de la víctima haciendo que acepte conexiones FTP desde la web al host vulnerable a través un puerto con un número alto, del 1024 al 65535.

La vulnerabilidad está presente en un problema de seguridad de hace 10 años encontrada en la versión clásica del protocolo FTP, concretamente en un mecanismo inseguro hallado en las interacciones desde el lado del cliente, pero que muchos firewalls siguen soportando por defecto. Cuando la conexión al modo clásico de FTP es iniciada, el firewall abre temporalmente un puerto entre 1024 y 65535, introduciendo así un riesgo a nivel de seguridad.

Mediante esta posibilidad de inyección de protocolo a través de Java y Python, un atacante que conozca la IP interna del host objetivo podría iniciar una conexión a través del modo clásico de FTP y así llevar a cabo sus acciones maliciosas. Morgan ha determinado que un atacante puede abrir un puerto en el firewall objetivo con solo tres peticiones, a lo que se suma la posibilidad de abrir más puertos:

  1. Identificar la IP interna de la víctima, requiriendo para ello que el atacante envíe una URL para ver cómo se comporta el cliente. Después se realizan otros envíos hasta que el ataque resulte un éxito.
  2. Determinar el alineamiento de los paquetes y asegurar que la orden de puerto sea inyectada en el momento adecuado, haciendo que el ataque funcione.
  3. Explotar la vulnerabilidad.
  4. Cada petición adicional puede ser usada para abrir otro puerto TCP.

Morgan avisa que el exploit puede ser usado para ataques man-in-the-middle, falsificaciones de solicitudes en el lado del servidor (SSRF), ataques XEE (XML External Entity) y mucho más. Por otro lado, una vez se haya saltado el firewall, los equipos de escritorio pertenecientes a la red pueden ser atacados sin la necesidad de que estos tenga Java o Python instalado. Lo único que se necesita para llevar a cabo el ataque es convencer a las víctimas para que accedan a programas maliciosos en Java o Python sobre el servidor para saltarse el firewall.

El fallo en Python fue reportado a la comunidad encargada de su desarrollo y mantenimiento en enero de 2016, mientras que el fallo en Java fue reportado a Oracle en noviembre de 2016. A día de hoy ninguno está parcheado.

Morgan ha desarrollado una prueba de concepto, pero está esperando respuestas por parte de Oracle y la comunidad de Python para ver si responden ante los problemas que tienen delante. Por otro lado, el investigador ha conseguido saltarse soluciones comerciales conocidas como los firewalls de Palo Alto Networks y Cisco ASA.

Como medida de precaución se recomienda desinstalar Java y Python de los ordenadores de escritorio, así como inhabilitar el soporte para el modo clásico de FTP.

Fuente | The Hacker News

Lo más leído

Salir de la versión móvil