Blog

Nuevas vulnerabilidades en librerías de Spring: cómo saber si estás en riesgo y qué hacer

April 1, 2022
Charlie Eriksen
Rostro de mujer con cabello largo iluminado por código informático colorido y proyecciones de datos sobre un fondo oscuro.

Recientemente, las bibliotecas de Spring, una de las más populares en la comunidad Java, revelaron 2 vulnerabilidades relacionadas con la ejecución remota de código (RCE). Para ayudarle a entender más fácilmente si está en riesgo ante cualquiera de estas vulnerabilidades y qué medidas tomar, hemos desglosado los detalles conocidos sobre "Spring4Shell" y "Spring Cloud Function".

Vulnerabilidad 1 - "Spring4Shell" (CVE-2022-22965)

El 29 de marzo de 2022, la comunidad descubrió una serie de tuits que contenían capturas de pantalla de una prueba de concepto de un exploit dirigido a Spring Core (SC), el cual permite la ejecución remota de código en todas las versiones de Spring Core, incluida la versión lanzada más recientemente, la 5.3.17.

¿Qué aplicaciones están en riesgo?

Actualmente, solo se ha confirmado que las aplicaciones alojadas en Tomcat están en riesgo ante este nuevo exploit. Aunque la explotación no ha demostrado ser exitosa contra el contenedor de servlets Tomcat integrado ni contra ninguna otra aplicación no alojada en Tomcat, esto no descarta la posibilidad de que la amenaza resulte efectiva en el futuro contra estos marcos de trabajo.

Spring publicó un comunicado oficial sobre la vulnerabilidad, en el que aclara que, según el entendimiento actual, deben cumplirse las siguientes condiciones para ser vulnerable:

  • JDK 9 o superior
  • Apache Tomcat como contenedor de servlets
  • Empaquetado como un WAR tradicional (a diferencia de un archivo jar ejecutable de Spring Boot)
  • Dependencia de spring-webmvc o spring-webflux
  • Versiones de Spring Framework de 5.3.0 a 5.3.17, de 5.2.0 a 5.2.19 y versiones anteriores

¿Cómo funciona la explotación de "Spring4Shell"?

La explotación se basa en el uso de "Data Binding" (org.springframework.web.bind.WebDataBinder) en solicitudes que utilizan objetos Java simples (POJO) en la firma del método:

Donde la clase Foo es una clase POJO, que podría definirse de la siguiente manera. Tenga en cuenta que la clase en sí no es importante, siempre y cuando sea cargada por el cargador de clases (Class Loader).

Java code defining class Foo in package spring4shell.model with private String variable Bar.

Cuando una solicitud es gestionada por un método como este, se utiliza el cargador de clases para resolver la clase. El cargador de clases es responsable de cargar las clases en tiempo de ejecución, sin tener que precargar todos los tipos posibles en la memoria primero. Determina qué archivo .jar cargar cuando se utiliza una nueva clase.

Puede encontrar la información más actualizada y detallada sobre esta vulnerabilidad directamente en el blog de Spring, incluyendo posibles soluciones o alternativas.

Vulnerabilidad 2 - Spring Cloud Function (CVE-2022-22963)

El 27 de marzo de 2022, Cyber Kendra reveló detalles sobre una vulnerabilidad de día cero de ejecución remota de código (RCE) en Spring Cloud Functions para la cual no existía ningún parche. A la vulnerabilidad se le asignó el identificador CVE-2022-22963: Vulnerabilidad de acceso a recursos mediante expresiones de Spring.

¿Qué aplicaciones están en riesgo?

La vulnerabilidad afectaba a las aplicaciones bajo estas condiciones:

  • JDK 9 o superior
  • Spring Cloud Functions versión 3.1.6 (o inferior), 3.2.2 (o inferior) o cualquier versión sin soporte

¿Cómo funciona la explotación?

Spring Cloud Function permite a los desarrolladores configurar el enrutamiento mediante la propiedad spring.cloud.function.routing-expression, generalmente a través de configuración o código. Esta potente función admite el lenguaje de expresiones de Spring (SpEL). Gracias a esta vulnerabilidad de día cero, descubrimos que dicha propiedad podía establecerse mediante las cabeceras HTTP de una solicitud, lo que permitía a un atacante insertar código SpEL directamente en su petición HTTP a un endpoint RoutingFunction y, por tanto, ejecutar código arbitrario.

¿Qué pasos deben seguir los usuarios para mitigar el riesgo?

Spring ha lanzado las versiones 3.1.7 y 3.2.3 para solucionar este problema, impidiendo que esta propiedad se configure a través de cabeceras HTTP y mitigando así la vulnerabilidad. Tras actualizar a cualquiera de estas versiones, no es necesario realizar pasos adicionales.

¿Te interesa saber cómo ayudamos a los desarrolladores a escribir código más seguro? Reserva una demostración o explora nuestras guías gratuitas de programación segura en secure code coach.

‍

Fuentes

‍

Eslogan

Controle el desarrollo impulsado por IA antes de su lanzamiento

Mida el riesgo asistido por IA, aplique políticas de codificación segura en el momento de la confirmación y acelere la entrega segura en todo su ciclo de vida de desarrollo de software (SDLC).

Reservar una demostración
Biblioteca de recursos

Explorar más blogs

Acceda a contenido especializado sobre programación segura, gobernanza de IA y gestión de riesgos de software.

ver todo
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Una cultura de seguridad: cómo Sage creó su programa de defensores

Descubre cómo Sage reforzó su seguridad con un enfoque flexible y centrado en las relaciones, logrando formar a más de 200 expertos en seguridad y alcanzar una reducción de riesgos cuantificable.

Más información
Icono de ventana de navegador con las letras KVK en negrita y dos líneas horizontales azules debajo sobre un fondo azul degradado.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Kamer van Koophandel: Seguridad a escala impulsada por los desarrolladores

La Cámara de Comercio (Kamer van Koophandel) comparte cómo integró la programación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de puntuación de confianza y una cultura de responsabilidad compartida en seguridad.

Más información
Logotipo de Insurance Australia Group con texto y un icono en azul y gris dentro del diseño de una ventana de navegador web.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cómo un «Juego de Códigos» guía a IAG Group hacia un futuro de programación más seguro

IAG Group es la entidad detrás de muchas de las principales compañías de seguros en la región de Asia-Pacífico, que suscribe pólizas para millones de clientes por un valor aproximado de 11.400 millones de dólares australianos en primas anuales.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Mes de la Concienciación sobre Ciberseguridad 2026: Comprender la seguridad de la IA es fundamental para la defensa empresarial

Hemos llegado a un punto en el que la mayoría de las principales empresas de IA han pedido públicamente una ralentización global en el desarrollo de la IA para que las medidas de seguridad puedan ponerse al día, pero la verdad es que ya se han materializado graves problemas de seguridad. Esto deja a innumerables líderes de seguridad y equipos ejecutivos en una situación urgente, a medida que los costes monetarios y de riesgo de la implementación de la IA siguen acumulándose.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Habilitador 8: Branding de su programa

Un programa de codificación segura necesita algo más que un buen contenido para tener éxito. El Habilitador 8 muestra cómo el branding transforma la participación en una experiencia codiciada basada en el estatus.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cada empleado está ahora en la primera línea de la ciberseguridad de la IA

El panorama tecnológico empresarial está cambiando a una velocidad que pocos previeron hasta que fue demasiado tarde. Hemos cruzado oficialmente el umbral del código escrito por humanos y la asistencia básica de copilotos hacia la era del Ciclo de Vida de Desarrollo Agéntico (ADLC). Si bien los agentes de IA autónomos prometen una eficiencia sin precedentes en múltiples funciones, también traen consigo una clase completamente nueva de riesgos regulatorios y de seguridad.

Más información

Proteja el desarrollo basado en IA antes de su lanzamiento

Identifique riesgos de desarrollo, aplique políticas y prevenga vulnerabilidades en todo el ciclo de vida de su software.

Reservar una demostración
No se encontraron elementos.