5 nov. 2014

Principales leaks en las herramientas de control de código

Las herramientas de control de código son muy habituales durante el desarrollo de las aplicaciones. Permiten una imprescindible gestión y control de versiones cuando se trabaja en un proceso de desarrollo de software de cierta envergadura. ¿Qué información pueden ofrecer a un atacante si se encuentran mal configuradas?

Herramientas como Git, Mercurial, Subversion y muchas otras resultan muy útiles pero también pueden comprometer la seguridad de la organización si quedan accesibles al exterior, no se configuran correctamente o se realizan malas prácticas durante el paso a producción. En esta entrada se recopilará brevemente la información más relevante que se puede extraer al encontrar un software de control de versiones desprotegido de alguna forma.

Git

Al crear un nuevo repositorio en local, el código usado por la aplicación se crea bajo la carpeta .Git, marcada como oculta. Puede que algún administrador copie esta carpeta a algún punto accesible por la red, y esto permitiría a un atacante obtener el código fuente de la aplicación con tan solo usar el comando
git clone [url del repositorio]
Dependiendo de la tecnología o el gestor de contenido que use, se podrán ubicar archivos de configuración con mayor facilidad. En el caso, por ejemplo, de un gestor de contenido Wordpress, se podría detectar fácilmente el fichero de configuración wp-config donde se encuentran las cadenas de conexión a la base de datos.

Mercurial

Al igual que Git, Mercurial funciona de manera similar ubicando todos los archivos en la carpeta .hg, donde en una primera instancia se puede encontrar el archivo dirstate, que enumera los ficheros que han sido procesados por Mercurial. Este archivo es clave para recuperar los posibles ficheros que se ubiquen todavía en la aplicación web y que conserven la misma ruta de acceso y el mismo nombre. En caso de que no se encuentre el archivo dirstate se puede consultar el archivo undo.dirstate que contiene información similar. Se crea como copia del dirstate para permitir un rollback. Los archivos de código fuente se ubican en el directorio store/data donde se guardarán codificados con un algoritmo usado por Mercurial. Para obtener el código fuente en plano, se pueden usar clientes como SourceTree para recuperar el repositorio de código y trabajar de forma local.

BazaarAunque no tan popular como los anteriores citados, el software de control de código Bazaar es una alternativa que nació en 2007. Como el resto, si no se configura correctamente, puede permitir a un atacante obtener mucha información sobre la aplicación web. Bazaar almacena toda la información en el directorio .bzr. La información más relevante estaría ubicada en branch y repository.

El directorio branch representa la rama en la que se está trabajando y por tanto en esta carpeta se ubican los archivos de configuración como branch.conf que muestran configuraciones para esa rama. Por otro lado en la carpeta repository se ubican los archivos del repositorio, aunque para acceder a ellos se debe consultar primero el archivo pack-names y recuperar el nombre del archivo pack, que se encontrará a su vez en la carpeta packs. Aunque estos archivos son el "commit" completo, se deberá realizar una búsqueda a través de los índices ubicados en la carpeta "índices" para obtener el código fuente en texto plano.

De nuevo, utlilizando cualquier cliente de Bazaar como Bazaar explorer se puede descargar el repositorio completo.

Subversion

Finalmente y al igual que los demás programas de controles de código comentados previamente, la carpeta generada por Subversion es .svn, en la que se almacenará toda la información relativa al control de código. Dependiendo de la versión que se use puede encontrarse el archivo entries, donde en texto plano se especificaran los archivos implicados, su tipo, permisos, la fecha de creación y el usuario.

Por otro lado en versiones más recientes se implementa una base de datos SQLite para almacenar los datos: wc.db, ubicada en la carpeta .svn. La diferencia es que el archivo wc.db se usa de índice para acceder al código fuente almacenado en un directorio llamado pristine donde se guarda una copia del código fuente totalmente en plano. Está organizado por carpetas con el primer octeto del inicio del hash y dentro de la carpeta el propio fichero con el nombre del hash.

Fuente: ElevenPath

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!