Vulnerabilidad crítica en servidor Jenkins podría filtrar información confidencial

Jenkins, un popular software de servidor de automatización de código abierto, publicó un aviso el lunes sobre una vulnerabilidad crítica. La vulnerabilidad está presente en el servidor web Jetty, podría dañar la memoria y hacer que se divulgue información confidencial.

Dicha vulnerabilidad ha sido identificada como CVE-2019-17638. La vulnerabilidad tiene una calificación CVSS de 9.4 e impacta en las versiones 9.4.27.v20200227 a 9.4.29.v20200521 de Eclipse Jetty. Jetty es una herramienta con todas las funciones que proporciona un servidor HTTP Java y un contenedor web para su uso en frameworks de software.

“Jenkins incluye Winstone-Jetty, un paquete de Jetty, para que actúe como servidor HTTP y servlet cuando se empieza a usar java -jar jenkins.war. Así es como se ejecuta Jenkins cuando se usa cualquiera de los instaladores o paquetes. Empero, no cuando se ejecuta con servlet contenedores como Tomcat “, se lee en el aviso.

Consecuencias

“La vulnerabilidad puede permitir que atacantes no autenticados obtengan encabezados de respuesta HTTP que pueden incluir datos confidenciales destinados a otro usuario”.

La vulnerabilidad, que afecta a Jetty y Jenkins Core, parece haber sido introducida en la versión 9.4.27 de Jetty. Esta versión agregó un mecanismo para manejar grandes encabezados de respuesta HTTP y evitar desbordamientos de búfer.

“El problema fue en el caso de un desbordamiento de búfer, liberamos el búfer del encabezado, pero no anulamos el campo”. Esto según afirmaciones el jefe del proyecto de Jetty, Greg Wilkins.

Para manejar esto, Jetty lanza una excepción para producir un error HTTP 431, lo que hace que los encabezados de respuesta HTTP se publiquen en el grupo de búfer dos veces, lo que a su vez provoca daños en la memoria y divulgación de información.

Por lo tanto, debido a la publicación doble, dos subprocesos pueden adquirir el mismo búfer del grupo al mismo tiempo. Esto permite potencialmente que una solicitud acceda a una respuesta escrita por el otro subproceso. La respuesta puede incluir identificadores de sesión, credenciales de autenticación y otra información confidencial.

En otras palabras, “mientras que thread1 está a punto de usar ByteBuffer para escribir datos de response1, thread2 llena el ByteBuffer con datos de response2. Thread1 luego procede a escribir el búfer que ahora contiene datos de response2. Esto da como resultado client1, que emitió request1 y espera respuestas, para ver response2 que podría contener datos confidenciales pertenecientes a client2 “.

En un caso, la corrupción de la memoria hizo posible que los clientes se movieran entre sesiones, por lo que tenían acceso entre cuentas. Esto porque las cookies de autenticación de la respuesta de un usuario se enviaban a otro usuario. La acción permitía al usuario A saltar a la sesión del usuario B.

Correcciones

Después de que se revelaron las implicaciones de seguridad, la vulnerabilidad se abordó en Jetty 9.4.30.v20200611 liberado el mes pasado. Jenkins,Winstone , ha corregido la falla en su utilidad en Jenkins 2.243 y Jenkins LTS 2.235.5 liberado ayer.

Recomendamos a los usuarios de Jenkins que actualicen su software a la última versión para mitigar la vulnerabilidad de corrupción del búfer.

Deja un comentario