JetLeak: como revelar las últimas peticiones hechas a servidores Jetty
Según un reciente análisis realizado por el investigador Stephen Komal de Gotham Digital Science, existe una vulnerabilidad en el servidor Jetty que puede permitir extraer información sensible del sistema. Se ven afectadas las versiones 9.2.3 a la 9.2.8 y la rama 9.3.x beta
Jetty es un servidor Web y contenedor de 'servlets' basado en Java. Se distribuye y usa en entornos de desarrollo como Eclipse, o multitud de servidores de aplicaciones como JBoss, Apache Geronimo, Google GWT o App Engine entre otros.
La vulnerabilidad JetLeak (CVE-2015-2080) se debe a una incorrecta implementación de las peticiones realizadas al módulo 'HttpParser' a la hora de gestionar en detalle los eventos de error. Debido a esto, una petición especialmente manipulada conseguiría recabar los últimos 16 bytes del búfer compartido de peticiones, dentro de la respuesta HTTP 400. Lo que llevaría a mostrar por tanto información sensible como Cookies, credenciales, correos y diversa información del sistema.
Si entramos en detalle en la vulnerabilidad, una petición realizada a un servidor ya actualizado y que generara un error al utilizar caracteres incorrectos (no ASCII por ejemplo), debería dar una respuesta HTTP 400 similar a ésta:
Mientras que en un servidor vulnerable, ante esa misma petición especialmente manipulada daría como resultado el volcado del buffer en la misma respuesta, de la siguiente manera:
Como podemos comprobar, se concatena información del buffer de 'debug' y cualquier script modificado para realizar múltiples conexiones al servidor podría ir recabando todo tipo de información sobre las últimas peticiones hechas.
Se ha facilitado un script para comprobar los servidores afectados: https://github.com/GDSSecurity/Jetleak-Testing-Script
Se recomienda actualizar lo antes posible a la versión 9.2.9.
Fuente: Hispasec
Jetty es un servidor Web y contenedor de 'servlets' basado en Java. Se distribuye y usa en entornos de desarrollo como Eclipse, o multitud de servidores de aplicaciones como JBoss, Apache Geronimo, Google GWT o App Engine entre otros.
La vulnerabilidad JetLeak (CVE-2015-2080) se debe a una incorrecta implementación de las peticiones realizadas al módulo 'HttpParser' a la hora de gestionar en detalle los eventos de error. Debido a esto, una petición especialmente manipulada conseguiría recabar los últimos 16 bytes del búfer compartido de peticiones, dentro de la respuesta HTTP 400. Lo que llevaría a mostrar por tanto información sensible como Cookies, credenciales, correos y diversa información del sistema.
Si entramos en detalle en la vulnerabilidad, una petición realizada a un servidor ya actualizado y que generara un error al utilizar caracteres incorrectos (no ASCII por ejemplo), debería dar una respuesta HTTP 400 similar a ésta:
HTTP/1.1 400 Illegal character 0x7
Content-Length: 0
Connection: close
Server: Jetty(9.2.9.v20150224)
Mientras que en un servidor vulnerable, ante esa misma petición especialmente manipulada daría como resultado el volcado del buffer en la misma respuesta, de la siguiente manera:
HTTP/1.1 400 Illegal character 0x7 in state=HEADER_IN_NAME in 'GET
/dummy/ HTTP/... localhost\nCoo\x07<<>>e:
application/x-...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Content-Length: 0
Connection: close
Server: Jetty(9.2.8.v20150217)
Como podemos comprobar, se concatena información del buffer de 'debug' y cualquier script modificado para realizar múltiples conexiones al servidor podría ir recabando todo tipo de información sobre las últimas peticiones hechas.
Se ha facilitado un script para comprobar los servidores afectados: https://github.com/GDSSecurity/Jetleak-Testing-Script
Se recomienda actualizar lo antes posible a la versión 9.2.9.
Fuente: Hispasec
0 Comments:
Publicar un comentario
Gracias por dejar un comentario en Segu-Info.
Gracias por comentar!