Mostrando entradas con la etiqueta DoS. Mostrar todas las entradas
Mostrando entradas con la etiqueta DoS. Mostrar todas las entradas

martes, 28 de noviembre de 2017

Ejecución remota de código en Exim

Se ha corregido una grave vulnerabilidad en Exim que podría permitir a un atacante ejecutar código arbitrario en el sistema afectado.



Exim es un servidor de correo electrónico de código abierto muy popular en sistemas Unix. Fue desarrollado en 1995 por Philip Hazel en la Universidad de Cambridge. Actualmente Exim es el MTA por defecto de Debian y de otras distribuciones de GNU/Linux.

La vulnerabilidad, bautizada con CVE-2017-16943 fue anunciada en el bug tracker de Exim de forma pública, lo que no dejó a los desarrolladores mucho margen de reacción. A pesar de eso, a las pocas horas fue publicado un parche provisional que solucionaba la vulnerabilidad.

El fallo se debe a un uso de memoria después de liberarla en la función 'receive_getc' de la librería 'receive.c'. Un atacante remoto podría explotar esta vulnerabilidad mediante una secuencia de comandos BDAT y provocar una denegación de servicio o ejecutar código arbitrario en el servidor SMTP.

En el reporte se adjunta una prueba de concepto que provoca una violación de acceso que interrumpe la ejecución del programa:
Program received signal SIGSEGV, Segmentation fault.0x00000000deadbeef in ?? ()(gdb)


PoC de la vulnerabilidad CVE-2017-16943


Poco después se anunció otra vulnerabilidad bautizada con CVE-2017-16944 que afectaba a la función 'receive_msg' de la misma librería 'receive.c'. El fallo permitiría a un atacante remoto mediante comandos BDAT, causar un bucle infinito y agotar la memoria de pila. Provocando una denegación de servicio en el servidor SMTP.

Estas vulnerabilidades ya han sido corregidas en la versión de Exim 4.90, por lo que se recomienda actualizar cuanto antes.


Francisco Salido
fsalido@hispasec.com

Más información:

Bug 2199 - Exim use-after-free vulnerability while reading mail header

Bug 2201 - Exim handles BDAT data incorrectly and leads to crash

CVE-2017-16943 Detail

CVE-2017-16944 Detail




viernes, 10 de enero de 2014

Ataques de denegación de servicio usando servidores NTP

El pasado diciembre tuvieron lugar diversos ataques distribuidos de denegación de servicio sobre redes de servidores de juegos. Entre ellas, Steam, Origin o Battle.com. Al parecer los ataques fueron atribuidos al grupo DERP Trolling. Al margen de las causas políticas lo interesante es qué usaron para generar el tráfico que provocó el corte o degradación temporal del servicio.

Como sabemos, hay diversos tipos o técnicas de denegación de servicio. Desde un simple paquete modificado para generar un desbordamiento en la pila y desestabilizar el proceso, hasta la generación de un gran volumen de tráfico desde múltiples direcciones que termine por agotar los recursos de los servidores atacados. El ataque ha empleado una técnica de generación de tráfico conocida pero sobre un actor diferente.

Desde hace tiempo uno de los ataques de denegación de servicio más interesantes es la amplificación de respuestas DNS. Esta técnica aprovecha varios factores para generar un tráfico no solicitado de una manera "lícita", es decir, no se aprovecha de la infección de máquinas sino de la falta o descuido de configuración de los servidores DNS de terceros.

Basta hacer un escaneo aleatorio sobre el puerto 53 para detectar servidores DNS y una pequeña prueba para determinar que esos servidores DNS responden o generan una consulta recursiva sobre dominios de terceros. Una consulta sobre un dominio puede generar una respuesta hasta 50 veces mayor que la petición. Es decir, inviertes 10 bytes en una petición y el servidor podría devolverte hasta 500 bytes. Ya tienes la generación de tráfico.

El protocolo DNS funciona sobre el protocolo de transporte UDP que como sabemos no está orientado a conexión y por lo tanto prescinde de lo que se denomina "handshake". Es decir, no necesita confirmación del otro extremo para iniciar una conversación con más detalles. Con UDP pides y te sirven. Esto es importante ya si construimos una petición UDP pero cambiamos el campo origen a otra IP que no sea la nuestra el servidor responderá a esa otra IP.

Ya tenemos dos factores. Podemos generar tráfico gracias al ratio 1:50 petición/respuesta y también podemos falsear la dirección de origen  gracias a UDP. El siguiente factor es encontrar servidores DNS abiertos o que permitan consultas recursivas sobre dominios de terceros. Con un buen grupo de estos servidores y otro grupo que genere las peticiones se tiene la tormenta perfecta para dirigir ese tráfico al objetivo.

¿Qué ha cambiado en este ataque?

Que no se han usado servidores DNS para amplificar las respuestas. En vez de ello los atacantes han usado servidores NTP (Network Time Protocol).

NTP es un protocolo usado principalmente para sincronizar los relojes del sistema operativo. Podemos leer sobre el en las siguientes RFC: http://www.ntp.org/rfc.html.

Los servidores NTP escuchan en el puerto 123 UDP y por cada petición, por ejemplo, de 8 bytes pueden llegar a generar una respuesta hasta casi 60 veces mayor. Pero esta respuesta no es la habitual de un servidor NTP sino que es una característica del protocolo que ahora ha sido parcheada para evitar este tipo de ataques. Curiosamente en la lista de desarrollo de NTP la debilidad ya aparecía en 2010. Por cierto, incluso tiene un CVE asociado, el CVE-2013-5211 y está corregida en la versión 4.2.7 del servidor NTP.


Es posible efectuar una petición al servidor NTP para obtener una lista con información de peticiones a modo de registro, una lista denominada Monitor data. Incluso existe un script para nmap que encuentra servidores NTP con esta característica (http://nmap.org/nsedoc/scripts/ntp-monlist.html).  Gracias a esto es posible amplificar la respuesta.

Aunque no es habitual, es posible encontrar organizaciones que usen servidores NTP sobre Internet para sincronizar redes en diferentes localizaciones. Si no es el caso sería recomendable filtrar el tráfico entrante del puerto 123 UDP y por supuesto si se usan servidores NTP actualizar a la versión corregida.

Sobre los servidores DNS abiertos la verdad merece una entrega aparte. Es una constante en nuestras auditorías de seguridad, encontrar un DNS (¡o varios!) de la organización publicado hacia Internet y que permite a terceros su uso sobre cualquier dominio de manera recursiva. Incluso es complicado hacer entender al administrador como eso puede ser usado en contra de la organización para la que trabaja.

Hemos de entender que cuando una víctima recibe tráfico DNS el paquete UDP lleva como origen la IP de nuestra organización, por lo que podemos vernos en la tesitura de tener que responder ante un escenario donde nuestro servidor DNS ha sido usado para un ataque DDoS.



David García
Twitter: @dgn1729


jueves, 16 de febrero de 2012

Actualización de seguridad para Adobe Flash Player


Adobe ha publicado una actualización de seguridad (con identificación es APSB12-03) destinada a corregir siete vulnerabilidades críticas en Adobe Flash Player versión 11.1.102.55 (y anteriores) para Windows, Macintosh, Linux y Solaris; Adobe Flash Player 11.1.112.61 (y anteriores) para Android 4.x; y Adobe Flash Player 11.1.111.5 (y versiones anteriores) para Android 3.x y 2.x.

Las vulnerabilidades con identificadores CVE-2012-0751, CVE-2012-0752, CVE-2012-0753, CVE-2012-0754, CVE-2012-0755 y CVE-2012-0756, pueden permitir a un atacante provocar la caída del sistema e incluso llegar a tomar el control de los sistemas afectados. Estas vulnerabilidades están relacionadas con diversos problemas de corrupción de memoria, en el control ActiveX para Windows, en el tratamiento de MP4 y evasión de controles de seguridad.

Esta actualización también resuelve una vulnerabilidad de cross-site scripting, con CVE-2012-0767, que en la actualidad está siendo explotada de forma activa en ataques dirigidos, diseñados para engañar al usuario para acceder a un enlace malicioso a través de mensajes de correo (solo en Internet Explorer sobre Windows).

Adobe recomienda a los usuarios de Adobe Flash Player 11.1.102.55 (y anteriores) para Windows, Macintosh, Linux y Solaris la actualización a la versión 11.1.102.62 disponible en http://get.adobe.com/flashplayer/ o desde la opción de actualización automática.
Para los usuarios que no puedan actualizar a Flash Player 11.1.102.62, Adobe ha desarrollado una versión parcheada de Flash Player 10.x, (Flash Player 10.3.183.15), que puede descargarse desde http://kb2.adobe.com/cps/142/tn_14266.html.

A los usuarios de Adobe Flash Player 11.1.112.61 (y anteriores) para Android 4.x actualizar a la versión 11.1.115.6 y los usuarios de Adobe Flash Player 11.1.111.5 y versiones anteriores para Android 3.x deben actualizar a Flash Player 11.1.111.6, desde Android Market:

Más información:

Security update available for Adobe Flash Player



Antonio Ropero

viernes, 30 de diciembre de 2011

Una vulnerabilidad podría permitir dejar sin servicio a la mayoría de servicios web

Una vulnerabilidad que afecta a la gran mayoría de las plataformas de servicios web actuales podría permitir la realización de ataques de denegación de servicio.

La vulnerabilidad fue presentada por dos investigadores en una conferencia en el ya mítico congreso Chaos Communication Congress, organizado por el Chaos Computer Club.

La conferencia completa:


El problema afecta a una larga lista de tecnologías de desarrollo web, incluyendo PHP, ASP.NET, Java, Python, Ruby, Apache Tomcat, Apache Geronimo, Jetty o  Glassfish. Concretamente versiones:
Básicamente es más fácil decir a los lenguajes que no afecta: Perl y CRuby 1.9. 

La base de la vulnerabilidad reside en que prácticamente todos los lenguajes almacenan en tablas hash los valores de los parámetros de las peticiones web. Pero las funciones hash empleadas se ven afectadas por colisiones. Por lo que es fácil generar peticiones con parámetros que tengan el mismo hash. De forma que cuando el servidor inserta los valores en la tabla hash se ve obligado a realizar un gran número de operaciones. Lo que, con un número adecuado de parámetros, provoca la denegación de servicio.

Este problema no es nuevo, básicamente es idéntico a otro ya conocido desde 2003, que afectaba a Perl. Motivo por el que este lenguaje ya incorpora la adecuada solución, que pasa por aleatorizar la clave empleada para calcular el hash. De esta forma, el atacante no podrá precalcular parámetros con hashes que provoquen colisiones. Otra forma de evitar el fallo, mucho más sencilla, pasa por limitar el número de parámetros procesados en cada petición.

Para tener una idea del alcance problema, en un sistema con Intel Core i7 sobre una aplicación PHP, bastarían 500k de datos POST para ocupar un minuto de tiempo de cálculo de CPU. De tal forma que bastaría con una conexión de entre 70 a 100 kbits/s para mantener ocupada una CPU de este tipo.

Los principales lenguajes ya han publicado actualizaciones y parches que corrigen esta vulnerabilidad, que pueden ser descargadas desde la página oficial de cada uno de ellos.

Microsoft, por ejemplo, ha publicado un boletín de urgencia para corregir esta vulnerabilidad en Microsoft .NET Framework (si bien este problema no es considerado crítico), y además solucionar otras tres vulnerabilidades (una de ellas crítica).

Apache Tomcat ha implementado una contramedida para evitar los efectos de un posible ataque, para lo que proporciona la nueva opción "maxParameterCount" que limita el número de parámetros procesados en cada petición. Por defecto está fijado a 10.000, suficientemente alto para soportar cualquier aplicación y suficientemente bajo para mitigar los efectos del DoS. Esta contramedida está disponible en las ramas 7.0.23 (en adelante) y 6.0.35 (en adelante).

En PHP una contramedida pasa por limitar el tiempo de CPU de generación de una respuesta mediante "max_input_time".
Otras actualizaciones:
  • Ruby: actualización a la versión 1.8.7-p357.
  • PHP 5: corregido a través de repositorios SVN.
  • Rack: corregido a través de repositorio GIT.
  • Apache Tomcat: actualización a las versiones 5.5.35, 6.0.35, y 7.0.23.
  • JRuby: actualización a la versión 1.6.5.1.
Más información:

#2011-003 multiple implementations denial-of-service via hash algorithm collision

Efficient Denial of ServiceAttacks on Web ApplicationPlatforms

Microsoft Security Bulletin MS11-100 – Critical
Vulnerabilities in .NET Framework Could Allow Elevation of Privilege (2638420)

[SECURITY] Apache Tomcat and the hashtable collision DoS vulnerability

Denial of Service through hash tablemulti-collisions

Denial of Service via Algorithmic Complexity Attacks

CCC Event blog – 28C3


Antonio Ropero
Twitter: @aropero