Seguridad y privacidad

Git corrige una vulnerabilidad crítica de ejecución de código en clones recursivos

Git 2.56.1 y las versiones de mantenimiento anteriores corrigen CVE-2026-111760, un error de truncamiento de enteros que permite a repositorios maliciosos ejecutar código durante el clonado recursivo.

Un cubo de vidrio con un símbolo de advertencia rojo en su interior, representando un repositorio Git vulnerable, junto a un eslabón roto de una cadena.
Ilustración generada para este artículo

Traducido automáticamente del original en inglés.

El proyecto Git ha publicado parches de emergencia para corregir una vulnerabilidad crítica que permite a los atacantes ejecutar código arbitrario en la máquina del desarrollador. Este fallo, identificado como CVE-2026-111760, se activa cuando un usuario clona recursivamente un repositorio que contiene submódulos maliciosos. Las correcciones se publicaron esta semana en múltiples versiones compatibles, lo que requiere atención inmediata por parte de los equipos de ingeniería que dependen de Git para el control de versiones.

Qué ocurrió

El problema central radica en cómo Git maneja las rutas de archivo dentro de su índice. Un atacante puede crear un repositorio con una ruta extremadamente larga que supera las comprobaciones iniciales de seguridad, pero que sufre un truncamiento de entero al escribirse en el disco. Este truncamiento acorta el nombre de la ruta, permitiendo al atacante manipular el nombre final del archivo para que coincida con .git. En un submódulo recién clonado, .git existe como un archivo en lugar de un directorio. El atacante reemplaza este archivo con un enlace simbólico que apunta a una carpeta que contiene hooks o archivos de configuración maliciosos. Dado que Git ejecuta hooks en puntos específicos de su flujo de trabajo, enlazar a esta carpeta controlada habilita la ejecución remota de código.

El proyecto Git abordó esto en la versión 2.56.1 y portó las correcciones hacia atrás a las series 2.50 a 2.55, específicamente las versiones 2.50.2, 2.51.3, 2.52.1, 2.53.1, 2.54.1 y 2.55.1. GitHub confirmó que ha aplicado estas correcciones a github.com y GitHub Enterprise Cloud. Para instancias autoalojadas, las versiones de GitHub Enterprise Server 3.19.15, 3.20.11, 3.21.9 y 3.22.4 incluyen el parche. Las actualizaciones para GitHub Desktop, GitHub Copilot, Codespaces y Actions están en preparación. Sin embargo, hasta el martes a las 19:09 UTC, Git for Windows aún no había lanzado una versión basada en la rama parcheada 2.56.1.

Cómo funciona

Esta vulnerabilidad explota una discrepancia entre la validación interna de rutas de Git y el manejo de nombres largos por parte del sistema de archivos. Cuando Git procesa el índice, verifica la longitud de la ruta. Si la ruta es excesivamente larga, ocurre un error de truncamiento de entero, haciendo que Git escriba el archivo bajo un nombre más corto y predecible. Al construir cuidadosamente la ruta, el atacante asegura que este nombre acortado resuelva a .git dentro del directorio del submódulo.

Los submódulos son particularmente vulnerables porque su entrada .git es inicialmente un archivo que contiene una referencia al directorio git real, no el directorio en sí. Git normalmente impide reemplazar un directorio .git con un symlink, pero no bloquea el reemplazo del archivo .git. Una vez que el symlink está en su lugar, cualquier operación posterior de Git que active hooks ejecutará scripts desde la ubicación controlada por el atacante. Las versiones parcheadas ahora rechazan estas rutas extremadamente largas antes de que ocurra el truncamiento, previniendo completamente la colisión de nombres.

Detalles clave

  • Vulnerabilidad Principal: CVE-2026-111760 implica un truncamiento de enteros en el manejo del índice de Git, permitiendo la ejecución de código mediante submódulos maliciosos.
  • Versiones Corregidas: Git 2.56.1, además de 2.50.2, 2.51.3, 2.52.1, 2.53.1, 2.54.1 y 2.55.1.
  • Correcciones en GitHub Enterprise: Disponibles en las versiones de servidor 3.19.15, 3.20.11, 3.21.9 y 3.22.4.
  • Otros Fallos: Se corrigieron otras cinco CVEs, incluyendo traversal de rutas en repositorios vacíos (CVE-2026-113408) y corrupción de heap mediante fusiones grandes (CVE-2026-105437).
  • Estado en Windows: Git for Windows no había lanzado una versión parcheada basada en 2.56.1 al momento del informe.
  • Soluciones Temporales: Evite los clones recursivos de repositorios no confiables y no procese parches binarios de fuentes desconocidas hasta estar actualizado.

Por qué importa

Para ingenieros de software y líderes técnicos, esta vulnerabilidad destaca los riesgos inherentes a las dependencias de la cadena de suministro. El clonado recursivo es una práctica común en monorepos y proyectos con muchos submódulos. Si un solo submódulo se ve comprometido o si un desarrollador clona un fork malicioso, todo el entorno de desarrollo podría verse afectado. Esto no es solo un riesgo teórico; las pipelines automatizadas de CI/CD a menudo clonan repositorios recursivamente, exponiendo potencialmente los servidores de compilación al mismo exploit.

La presencia de cinco vulnerabilidades adicionales en la misma versión subraya la complejidad de mantener sistemas de control de versiones seguros. Problemas como la corrupción de heap derivada de fusiones grandes o el traversal de rutas en el protocolo v2 afectan tanto a servicios de hosting como a clientes locales. Los equipos que gestionan instancias privadas de GitLab o GitHub Enterprise deben priorizar estas actualizaciones, ya que los servidores que ejecutan git merge-tree para validar pull requests son objetivos específicos de CVE-2026-105437. Retrasar los parches deja la infraestructura abierta a ataques de denegación de servicio y posible exfiltración de datos.

Qué puede hacer

  • Actualice su instalación local de Git a una de las versiones parcheadas inmediatamente, verificando el gestor de paquetes de su SO o su distribuidor de Git.
  • Si gestiona GitHub Enterprise Server, actualice a la versión 3.19.15, 3.20.11, 3.21.9 o 3.22.4.
  • Evite usar git clone --recursive en repositorios de fuentes no confiables hasta que todos los sistemas estén parcheados.
  • Configure sus pipelines de CI/CD para omitir la inicialización recursiva de submódulos para dependencias externas o no verificadas.
  • Para servidores GitLab que no puedan actualizarse inmediatamente, establezca conflict-marker-size=7 en el archivo info/attributes del repositorio para mitigar CVE-2026-105437.
  • Monitoree las etiquetas de lanzamiento de Git for Windows y actualice tan pronto como esté disponible una versión basada en 2.56.1.
  • #git
  • #security
  • #vulnerability
  • #devops
  • #supply-chain

Herramientas de la Tienda de Bytechap

Seguir leyendo

Todos los artículos