Thymeleaf corrige una vulnerabilidad que permitía escribir archivos en el sistema de forma oculta.

Según el informe de Endor Labs, un discreto carácter de tabulación fue suficiente para eludir la protección del popular motor de plantillas Thymeleaf y ejecutar código arbitrario en el servidor. La vulnerabilidad recibió el identificador CVE-2026-40478 y una puntuación de 9,1 en la escala CVSS.
El problema afecta a las versiones de Thymeleaf 3.1.3 y anteriores, que se usan ampliamente junto con el framework Spring. En esa combinación, el motor por defecto se encarga de procesar las plantillas en muchas aplicaciones empresariales. En un ataque exitoso, el atacante puede escribir archivos en el servidor y, en algunos casos, lograr la ejecución remota de código.
La esencia del error es que los mecanismos de protección integrados verificaban las expresiones con insuficiente rigor. Los desarrolladores intentaron filtrar las construcciones peligrosas, en particular las que crean objetos mediante la palabra clave new, pero se fijaron únicamente en el espacio normal. El analizador acepta sin problema otros caracteres de espacio, incluida la tabulación. Al insertar ese carácter, el atacante podía eludir la verificación y ejecutar la expresión, lo que corresponde a clases de vulnerabilidades como CWE-917 y CWE-1336.
El segundo problema está relacionado con la lista de clases prohibidas. Thymeleaf bloqueaba principalmente los paquetes estándar de Java, pero no limitaba las clases de Spring y otras bibliotecas. Como resultado, un atacante podía crear un objeto que trabaja con el sistema de archivos y usarlo para escribir archivos en el disco.
Para el ataque no es necesario tener acceso al servidor ni modificar las plantillas. Basta controlar los datos de entrada que la aplicación pasa al motor de plantillas. Ese escenario es bastante frecuente, por ejemplo cuando la aplicación genera vistas dinámicas o procesa cadenas de usuario dentro de expresiones.
Los especialistas mostraron un ejemplo sencillo: reemplazando un espacio por un carácter de tabulación en una expresión se puede crear un objeto que abre un flujo de escritura a un archivo. En cuanto se abre el archivo, ya aparece en el disco, incluso sin acciones adicionales. Si en el entorno existen clases adecuadas, el atacante puede ir más lejos y lograr la ejecución de comandos.
Los desarrolladores cerraron la vulnerabilidad en la versión 3.1.4. En la actualización normalizan todos los caracteres de espacio antes de la verificación, amplían la lista de clases prohibidas y tratan las expresiones con mayor rigor. Sin embargo, la protección sigue basándose en una lista de prohibiciones, no en un enfoque permisivo estricto, por lo que el riesgo no desaparece por completo.
La corrección ya está disponible, no hay soluciones alternativas. Se recomienda a todos los usuarios actualizar urgentemente Thymeleaf y los módulos relacionados. Paralelamente, conviene revisar el código de las aplicaciones y evitar situaciones en las que la entrada del usuario influya directamente en expresiones, nombres de plantillas o fragmentos.
La vulnerabilidad muestra una vez más que los motores de plantillas ejecutan código en la práctica, en lugar de limitarse a insertar datos. Pasar entrada no verificada a esos mecanismos es peligroso: puede acarrear consecuencias graves.