Microsoft ha intervenido en Spring4Shell, una falla descubierta recientemente en Spring Framework para Java.
Microsoft les está diciendo a los clientes de su servicio en la nube Azure que corrijan el error revelado recientemente, una vulnerabilidad de ejecución remota de código (RCE) calificada como crítica que ha sido etiquetada como CVE-2022-22965 y denominada SpringShell o Spring4Shell, un giro en el grave error de Log4Shell que afecta otra utilidad de registro de aplicaciones basada en Java.
Si bien hubo un debate inicial sobre la gravedad del error, la investigación por parte de la seguridad Los investigadores en los días posteriores al descubrimiento de la falla revelaron que Spring4Shell era de hecho un problema grave. error que merecía atención.
El 1 de abril, la Agencia de Seguridad de Infraestructura y Ciberseguridad de EE. UU. (CISA) instó a todas las organizaciones de EE. UU., incluidas las agencias federales, a parchearlo de inmediato. El 4 de abril, CISA agregó el error a su catálogo de vulnerabilidades explotadas conocidas, lo que requiere que las agencias federales lo corrijan dentro de un plazo.
Spring Framework es «el marco ligero de código abierto más utilizado para Java», señala Microsoft. El error reside en el kit de desarrollo de Java (JDK) de la versión 9.0 y posteriores si el sistema también usa Spring Framework versiones 5.3.0 a 5.3.17, 5.2.0 a 5.2.19 y versiones anteriores.
«En Java Development Kit (JDK) versión 9.0 o posterior, un atacante remoto puede obtener un objeto AccessLogValve a través de la función de enlace de parámetros del marco y usar valores de campo maliciosos para activar el mecanismo de canalización y escribir en un archivo en una ruta arbitraria, si se dan ciertas condiciones. se cumplen», informa el equipo de inteligencia de amenazas de Microsoft Defender.
Otras condiciones requeridas para la explotación incluyen que Apache Tomcat sirva como contenedor de Servlet, que la aplicación se empaquete como un archivo web Java (WAR) tradicional y se implemente en una instancia independiente de Tomcat. Sin embargo, Spring Boot se implementa más comúnmente como un contenedor de Servlet incorporado o un servidor web reactivo, que no se ven afectados.
«Cualquier sistema que use JDK 9.0 o posterior y use Spring Framework o marcos derivados debe considerarse vulnerable», señala Microsoft.
Microsoft señala que el único exploit que funciona, una prueba de concepto, solo se puede usar de forma remota en un servidor Tomcat a través de su módulo de registro usando ciertos comandos. Un atacante puede cambiar los registros de acceso predeterminados a cualquier archivo que desee emitiendo solicitudes a través de la web. Un atacante puede entonces cambiar el contenido de un servidor web o una aplicación.
Al igual que Log4Shell, el impacto de Spring4Shell se siente a través de su inclusión en otros productos. La firma de hipervisores VMware, por ejemplo, advirtió que afectó sus servicios Tanzu para máquinas virtuales y software de contenedores.
«El exploit actual aprovecha el mismo mecanismo que en CVE-2010-1622, pasando por alto la corrección de errores anterior. Java 9 agregó una nueva tecnología llamada Módulos Java», evalúa Microsoft.
«Se agregó un descriptor de acceso al objeto Class, llamado getModule(). El objeto Module contiene un descriptor de acceso getClassLoader(). Dado que la solución CVE-2010-1622 solo impidió mapear el descriptor de acceso getClassLoader() de los objetos Class, Spring asignó el descriptor de acceso getClassLoader( ) acceso del objeto Módulo. Una vez más, se podría hacer referencia al cargador de clases de Spring a través del prefijo del nombre del parámetro class.module.classLoader».
Los equipos de seguridad interesados en investigar el tema pueden consultar esta publicación de usuario en GitHub. El equipo detrás de Spring también ha explicado el parche y la vulnerabilidad aquí.