Se ha identificado una vulnerabilidad crítica en la versión distribuida a través de PyPI de PLY (Python Lex-Yacc) 3.11, que permite la ejecución arbitraria de código mediante la deserialización insegura de archivos pickle no confiables. La vulnerabilidad, registrada como CVE-2025-56005, afecta al parámetro no documentado picklefile en la función yacc(), el cual no aparece en la documentación oficial a pesar de estar presente en la versión de producción. La vulnerabilidad surge del parámetro yacc(picklefile=…), que invoca pickle.load() en archivos controlados por el atacante
Se ha identificado una vulnerabilidad crítica en la versión de PLY (Python Lex-Yacc) 3.11 distribuida a través de PyPI, que permite la ejecución arbitraria de código mediante la deserialización insegura de archivos pickle no confiables.
La vulnerabilidad, registrada como CVE-2025-56005, afecta al parámetro no documentado picklefile en la función yacc(), que no aparece en la documentación oficial a pesar de estar presente en la versión de producción.
La vulnerabilidad surge porque el parámetro yacc(picklefile=…) invoca pickle.load() en archivos controlados por atacantes sin realizar ninguna validación.
El módulo pickle de Python permite inherentemente la ejecución arbitraria de código durante la deserialización a través del método __reduce__(), lo que posibilita que cargas maliciosas ejecuten comandos del sistema antes de que se inicialice el analizador.
Esto representa un riesgo único porque la ejecución del código ocurre de manera silenciosa durante el inicio de la aplicación, antes de que se alcance cualquier lógica de análisis.
La vulnerabilidad es especialmente peligrosa en entornos donde las tablas del analizador se almacenan en caché en disco, se comparten entre servicios o se generan en pipelines de CI/CD.
La explotación es posible cuando los atacantes pueden controlar, reemplazar o influir en la ruta del archivo pickle, como en los siguientes casos:
| Área / Componente | Descripción |
|---|---|
| Ubicaciones de tablas de analizador en caché | Directorios donde se almacenan localmente las tablas del analizador |
| Directorios compartidos en red | Carpetas compartidas accesibles a través de la red |
| Artefactos de pipelines CI/CD | Archivos de salida de compilación y despliegue |
| Rutas de archivos configurables o escribibles | Rutas definidas por la aplicación que pueden escribirse |
La vulnerabilidad puede demostrarse mediante una carga pickle maliciosa que ejecuta comandos del sistema durante la deserialización.
Cuando yacc(picklefile='exploit.pkl') carga un archivo pickle manipulado que contiene objetos serializados con métodos __reduce__() integrados, se garantiza la ejecución arbitraria de código antes de que el analizador esté operativo.
Según el aviso, las organizaciones deben implementar de inmediato las siguientes medidas de mitigación:
Evita usar el parámetro picklefile con archivos no confiables o que puedan ser modificados externamente. Desactiva la carga de tablas del analizador desde ubicaciones controladas por usuarios.
Trata todos los archivos pickle como entrada potencialmente insegura. Regenera las tablas del analizador de forma dinámica en lugar de cargarlas desde el disco.
Los desarrolladores deben actualizar las aplicaciones que utilizan PLY 3.11 y auditar las configuraciones en busca de posibles exposiciones a través del parámetro no documentado.
Fuentes:
https://cybersecuritynews.com/python-ply-library-vulnerability/
No hay comentarios:
Publicar un comentario