Se han revelado múltiples vulnerabilidades de seguridad en GitHub Desktop, así como en otros proyectos relacionados con Git que, si se explotan con éxito, podrían permitir a un atacante obtener acceso no autorizado a las credenciales Git de un usuario.
«Git implementa un protocolo llamado Git Credential Protocol para recuperar credenciales del ayudante de credenciales», dijo el investigador de GMO Flatt Security Ry0taK, que descubrió las fallas, en un análisis publicado el domingo. «Debido al manejo inadecuado de los mensajes, muchos proyectos eran vulnerables a la fuga de credenciales de varias maneras».
La lista de vulnerabilidades identificadas es la siguiente:
Mientras que el ayudante de credenciales está diseñado para devolver un mensaje que contiene las credenciales que están separadas por el carácter de control de nueva línea («\n»), la investigación encontró que GitHub Desktop es susceptible a un caso de contrabando de retorno de carro («\r») mediante la inyección del carácter en una URL manipulada puede filtrar las credenciales a un host controlado por el atacante.
«Utilizando una URL maliciosamente diseñada es posible hacer que la solicitud de credenciales procedente de Git sea malinterpretada por Github Desktop de tal manera que envíe credenciales para un host diferente al host con el que Git se está comunicando en ese momento, permitiendo así la filtración de secretos», dijo GitHub en un aviso.
También se ha identificado una debilidad similar en el paquete Git Credential Manager NuGet, que permite que las credenciales se expongan a un host no relacionado. Asimismo, se ha descubierto que Git LFS no comprueba si hay caracteres de control incrustados, lo que da lugar a una inyección de salto de línea de retorno de carro (CRLF) a través de URL HTTP manipuladas.
Por otro lado, la vulnerabilidad que afecta a GitHub CLI se aprovecha de que el token de acceso está configurado para ser enviado a hosts distintos de github[.]com y ghe[.]com siempre y cuando se establezcan las variables de entorno GITHUB_ENTERPRISE_TOKEN, GH_ENTERPRISE_TOKEN y GITHUB_TOKEN, y CODESPACES se establezca en «true» en el caso de esta última.
«Aunque ambas variables relacionadas con la empresa no son comunes, la variable de entorno CODESPACES siempre se establece en true cuando se ejecuta en GitHub Codespaces», dijo Ry0taK. «Por lo tanto, clonar un repositorio malicioso en GitHub Codespaces utilizando GitHub CLI siempre filtrará el token de acceso a los hosts del atacante».
La explotación exitosa de las fallas antes mencionadas podría llevar a un tercero malicioso a usar los tokens de autenticación filtrados para acceder a recursos privilegiados.
En respuesta a las revelaciones, el proyecto Git ha tratado la filtración de credenciales derivada del contrabando de retornos de carro como una vulnerabilidad independiente (CVE-2024-52006, puntuación CVSS: 2.1) y la ha abordado en la versión v2.48.1.
«Esta vulnerabilidad está relacionada con CVE-2020-5260, pero se basa en un comportamiento en el que algunos caracteres de retorno de carro son interpretados por algunas implementaciones de ayuda de credenciales como nuevas líneas», dijo Taylor Blau, ingeniero de software de GitHub, en un post sobre CVE-2024-52006.
La última versión también corrige la CVE-2024-50349 (puntuación CVSS: 2,1), que podría ser aprovechada por un adversario para crear URL que contengan secuencias de escape y engañar a los usuarios para que proporcionen sus credenciales a sitios arbitrarios.
Se recomienda a los usuarios que actualicen a la última versión para protegerse de estas vulnerabilidades. Si la aplicación inmediata de parches no es una opción, el riesgo asociado a los fallos puede mitigarse evitando ejecutar git clone con --recurse-submodules contra repositorios que no sean de confianza. También se recomienda no utilizar el ayudante de credenciales clonando únicamente repositorios disponibles públicamente.
Fuente: thehackernews