Principales leaks en las herramientas de control de códigoElevenPaths 4 noviembre, 2014 Las herramientas de control de código son muy habituales durante el desarrollo de 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 ubica todos los archivos en la carpeta .hg, donde en 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. Bazaar Aunque no tan popular como los anteriormente 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. Aplicaciones web que gestionan el código De forma más visual y más intuitiva las aplicaciones web pueden ayudar mucho en el desarrollo de software, pero también hay que fortificarlas adecuadamente para que no accedan usuarios no autorizados. Un claro ejemplo es interfaz web del gestor de código ViewVC, que permite a los usuarios navegar a través de todo el árbol de archivos y recorrer las versiones realizadas sobre los archivos en un repositorio de código CVS o Subversion. Si el acceso a esta aplicación web no se restringe correctamente puede dar a un atacante una vía perfecta para obtener el código fuente de la aplicación de la organización. Ejemplo de ViewVC Al igual que existen aplicaciones web que permiten visualizar el código de la aplicación, también se deben controlar y proteger las aplicaciones web que permiten la ejecución del código como Buildbot o Jenkins que pueden ser de gran utilidad a los atacantes. Este tipo de aplicaciones web, son detectadas por Faast y reportadas en forma de vulnerabilidad para alertar de la su existencia: Evidencia de Faast Faast y herramientas de control de código En Faast se han implementado plugins que permiten la detección de repositorios de código abiertos y sin restricción. Permitiría identificar lo que un posible atacante sería capaz de obtener: desde el código fuente de la aplicación, hasta cadenas de conexión a máquinas, base de datos o servicios en general. Potencial problema de seguridad reportada a través de la interfaz de Faast Gracias a los plugins específicos, una vez detectado el repositorio de código, Faast analizará el resto de ficheros correspondientes a la tecnología concreta para aumentar la cantidad de activos disponibles. Así, reportaría archivos de configuración del propio repositorio de código y en caso de que estuviesen, los archivos del código fuente y su ruta accesible a través de la red. Evidencia en el plugin de Faast sobre una debilidad en Mercurial Óscar Sánchez oscar.sanchez@11paths.com BANDS: Detección proactiva de amenazas en infraestructuras críticasQA: Pruebas para asegurar la calidad del producto software (II)
Telefónica Tech Boletín semanal de ciberseguridad, 18 — 24 de junio Caída de los servicios de Microsoft Office 365 y Cloudflare a nivel mundial A lo largo del pasado martes se vieron interrumpidos múltiples servicios web a nivel mundial. El origen...
Cristina del Carmen Arroyo Siruela Día de la mujer ingeniera: construyendo nuevos caminos El término “ingeniero” proviene del latín, ingenium, en castellano ingenio. Desde hace mucho tiempo, se ha asociado el mundo de la ingeniería con el sexo masculino. Pero ¿es el...
Cristina del Carmen Arroyo Siruela Los ataques más comunes contra las contraseñas y cómo protegerte Una credencial de acceso es básicamente un nombre de usuario y una contraseña asociada a esa persona y a los permisos de accesos que tiene otorgados para una aplicación,...
Telefónica Tech Webinar: Sports Tech, la revolución digital del fútbol El pasado 15 de junio desde Telefónica Tech organizamos un webinar dedicado a la tecnología en el deporte: “Sports Tech, la revolución digital del fútbol”, disponible ya en nuestro...
Telefónica Tech Boletín semanal de ciberseguridad, 13 — 17 de junio Hertzbleed. Nuevo ataque de canal lateral contra procesadores AMD e Intel Investigadores de seguridad de varias universidades de Estados Unidos han descubierto un nuevo ataque de canal lateral que afecta...
Telefónica Tech ¡Estamos de estreno! Conoce la nueva web de Telefónica Tech Cyber Security & Cloud En Telefónica Tech no dejamos de crecer y de trabajar para ser el partner tecnológico de las empresas en su proceso de transformación digital. Como parte de este propósito Telefónica Tech...