Detectaron dos vulnerabilidades en Git que permitían la ejecución remota de código

vulnerabilidad

Si se explotan, estas fallas pueden permitir a los atacantes obtener acceso no autorizado a información confidencial o, en general, causar problemas

Hace poco se dio a conocer la publicación de las diferentes versiones correctivas del sistema de control de código fuente distribuido Git, en las cuales se implementaron las correcciones de dos vulnerabilidades que fueron detectadas.

Sobre los falos detectados se mencionan que estos permiten organizar la ejecución de su código en el sistema del usuario cuando usa el comando «git archive» y trabaja con repositorios externos que no son de confianza.

Las vulnerabilidades son causadas por errores en el código de formato de confirmación y el análisis del archivo «.gitattributes», que, al procesar repositorios externos, puede llevar a escribir en un área de memoria fuera del montón y leer datos arbitrarios de la memoria.

Ambas vulnerabilidades fueron identificadas durante una auditoría de seguridad del código base de Git, realizada por X41 para el OSTIF (Open Source Technology Improvement Fund), creado para fortalecer la seguridad de los proyectos de código abierto.

Además de los dos problemas críticos que se analizan a continuación, la auditoría también encontró una vulnerabilidad grave, una vulnerabilidad de gravedad media y cuatro problemas no peligrosos. Además, se hicieron 27 recomendaciones para mejorar la seguridad del código base.

  • CVE-2022-41903: desbordamiento de enteros en el código de formato de información de confirmación al manejar valores de compensación grandes en instrucciones de relleno como «%<(«, «%<|(«, «%>(«, «%>> (» y «%><( )». Se produce un desbordamiento de enteros en la función format_and_pad_commit() debido al uso del tipo int para la variable size_t, que, cuando se llama a memcpy(), participa en la determinación del tamaño de compensación de la copia bloquear.

La vulnerabilidad se manifiesta tanto cuando se llama directamente con parámetros de formato especialmente diseñados (por ejemplo, cuando se ejecuta «git log –format=…»), como cuando se aplica formato indirectamente durante la ejecución del comando «git archive» en un repositorio controlado por el atacante.

En el segundo caso, los modificadores de formato se establecen a través del parámetro export-subst en el archivo «.gitattributes», que el atacante puede colocar en su repositorio. El problema se puede explotar para leer y escribir áreas arbitrarias en el montón y provocar la ejecución de código malicioso cuando se trabaja con repositorios no verificados.

  • CVE-2022-23521: Desbordamiento de enteros al analizar el contenido de los archivos «.gitattributes» en un repositorio, que se manifiesta al analizar una gran cantidad de patrones de ruta de archivo o una gran cantidad de atributos con un solo patrón, y al analizar un atributo muy grande nombres El problema se puede explotar para leer y escribir áreas arbitrarias en el montón y hacer que el código del atacante se ejecute cuando se trabaja con un repositorio no verificado, donde un atacante podría colocar un archivo .gitattributes especialmente diseñado y asegurarse de que ingrese al índice.

Adicionalmente, se puede señalar una vulnerabilidad más (CVE-2022-41953) en el producto Git para Windows, que permite organizar la ejecución de código al clonar repositorios externos no verificados a través de la interfaz gráfica.

El problema se debe al hecho de que la GUI de Git para Windows después de la operación de «checkout» ejecuta automáticamente algunos comandos de posprocesamiento, como ejecutar el programa de revisión ortográfica para verificar la ortografía, aunque las rutas de búsqueda de archivos de revisión ortográfica cubren el árbol de trabajo clonado (el ataque se reduce a agregar un corrector ortográfico al árbol de trabajo del repositorio).

La publicación de actualizaciones de paquetes en distribuciones se puede rastrear en las páginas: DebianUbuntuGentooRHELSUSEArch, FreeBSDNetBSD

Para reducir el riesgo de un ataque si una actualización no se puede instalar de manera oportuna, se recomienda abstenerse de trabajar con repositorios que no sean de confianza y de usar el comando «git archive».

Es importante recordar que el comando «git archive» se puede ejecutar implícitamente, por ejemplo, desde dentro del demonio git. Para deshabilitar la ejecución de «git archive» en el demonio git, cambie el parámetro daemon.uploadArch con el comando «git config –global daemon.uploadArch false«.


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.