Vulnerabilidad crítica en una popular biblioteca de PHP: lo que los desarrolladores deben saber
Un equipo de investigadores en ciberseguridad de la empresa SonarSource publicó un informe sobre una vulnerabilidad crítica descubierta en una de las bibliotecas de PHP más utilizadas para trabajar con plantillas: Smarty. La vulnerabilidad, identificada como CVE-2024-35227, permite a un atacante ejecutar código arbitrario de forma remota en el servidor, lo que puede llevar a la compromisión total de la aplicación web.
Detalles de la vulnerabilidad
El problema está relacionado con el mecanismo de procesamiento de entrada del usuario en la función fetch() de la biblioteca Smarty. Con una configuración insegura y la ausencia de filtrado de datos, un atacante puede enviar una cadena maliciosa que será interpretada como código PHP. Según la escala CVSS v3.1, la vulnerabilidad recibió la puntuación máxima de 9.8 (Crítica).
Características principales de la vulnerabilidad:
- Vector de ataque: remoto (Network)
- Complejidad de explotación: baja (Low)
- Privilegios requeridos: ninguno (None)
- Impacto en la integridad: completo (High)
Versiones afectadas
La vulnerabilidad afecta a todas las versiones de la biblioteca Smarty hasta 4.3.2 y 5.0.1. Los desarrolladores de la biblioteca ya han lanzado parches en las versiones 4.3.3 y 5.0.2 respectivamente. Se recomienda encarecidamente a todos los usuarios actualizar la biblioteca de inmediato.
Cómo verificar la vulnerabilidad en su proyecto
Para asegurarse de que su proyecto no está en riesgo, siga estos pasos:
- Verifique la versión de Smarty en el archivo
composer.jsonovendor/smarty/smarty/Smarty.class.php. - Si la versión es inferior a 4.3.3 o 5.0.2 (según la rama), realice la actualización:
composer update smarty/smarty. - Revise todos los lugares en el código donde se utiliza la función
fetch()con datos de usuario.
Recomendaciones de protección
Además de la actualización inmediata de la biblioteca, los expertos aconsejan seguir las reglas generales de seguridad:
- Filtre y escape siempre la entrada del usuario.
- Utilice el principio de mínimos privilegios para las operaciones con archivos.
- Actualice regularmente todas las dependencias del proyecto.
- Aplique herramientas de análisis estático de código (SAST) para buscar vulnerabilidades.
Historia y contexto
Smarty es una de las bibliotecas de PHP más antiguas para plantillas, lanzada en 2004. Se utiliza en CMS populares como Drupal (a través de módulos), PrestaShop y muchos proyectos personalizados. Según estimaciones de analistas, la vulnerabilidad potencialmente afecta a más de 100 000 sitios web en todo el mundo.
No es el primer problema de seguridad grave en la biblioteca. En 2021 se descubrió la vulnerabilidad CVE-2021-29454, relacionada con la inyección de plantillas. Los desarrolladores de Smarty lanzan parches rápidamente, pero el número de versiones obsoletas en producción sigue siendo alto.