Las implementaciones actuales del protocolo CVS (Concurrent Versions
System) permiten que un atacante con permiso de escritura en el almacén
CVS pueda ejecutar código arbitrario en el servidor en el que reside el
almacén.
CVS (Concurrent Versions System) es un sistema de control de versiones,
especialmente utilizado durante el desarrollo de proyectos de software.
Permite que un grupo de colaboradores trabajen juntos en un proyecto,
y controlar en cada momento la versión y los cambios que cada uno de
ellos tiene en su propia copia del «almacén», así se identifican conflictos
entre versiones, se pueden crear «ramas» divergentes de desarrollo, etc.
En definitiva, se trata de una herramienta que nos permite tener
perfectamente identificado el estado de un proyecto (admite, incluso,
retroceder y empezar una nueva «rama»). Ni que decir tiene que en el
mundo Internet, CVS permite la cooperación de desarrolladores distantes
entre sí miles de kilómetros. De hecho, es el sistema empleado para
coordinar el desarrollo del Kernel Linux y del servidor web Apache, por
ejemplo, dos pilares de la estrategia «open source».
Típicamente CVS tiene dos modos de funcionamiento: anónimo y
autentificado. En el modo anónimo, los usuarios sólo pueden conectarse
al almacén en modo lectura, mientras que en el modo autentificado, los
desarrolladores pueden realizar cambios en el proyecto.
Lamentablemente las implementaciones actuales de CVS permiten que
cualquier desarrollador con privilegios de escritura en el almacén pueda
ejecutar código arbitrario en el servidor CVS. Aunque se entiende que
dichas personas son confiables, los administradores CVS deben ser
conscientes de que asignar privilegios de escritura a un desarrollador
supone, en la práctica, los mismos privilegios que o más que si dicha
persona tuviese un acceso SHELL a la máquina en cuestión.
Aunque este hecho esté señalado en la documentación CVS, conviene
recordarlo a los administradores de sistemas de forma periódica, para
evitar sorpresas. Lamentablemente, en el momento actual, no existen
implementaciones CVS diseñadas para evitar este problema, aunque se
trabaja activamente en «wrappers» para mejorar su seguridad.
jcea@hispasec.com
Más información:
Concurrent Versions System:
http://cvshome.org/
CVS Local Denial of Service Vulnerability:
http://www.securityfocus.com/frames/?content=/vdb/bottom.html%3Fvid%3D1136
CVS Client Server-Instructed File Create Vulnerability:
http://www.securityfocus.com/frames/?content=/vdb/bottom.html%3Fvid%3D1523
CVS Checkin.prog Binary Execution Vulnerability:
http://www.securityfocus.com/frames/?content=/vdb/bottom.html%3Fvid%3D1524
CVSWeb insecure perl «open» Vulnerability:
http://www.securityfocus.com/frames/?content=/vdb/bottom.html%3Fvid%3D1469
Deja una respuesta