← Últimos artículos
💻 computer science

Git Hash Chain Malleability

Este artículo demuestra que los hashes de los commits de Git son maleables, permitiendo que atacantes generen commits distintos con contenido idéntico, firmas válidas y distintivos de "Verificado" mediante la explotación de la inversión algebraica en ECDSA, la inserción de subpaquetes OpenPGP no hasheados y la recodificación de longitud DER no canónica, socavando así los supuestos de seguridad del anclaje de dependencias basado en hashes y de las compilaciones reproducibles.

Autores originales: Jacob Ginesin

Publicado 2026-08-07
📖 7 min de lectura🧠 Análisis profundo

Autores originales: Jacob Ginesin

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

Imagina el internet como una biblioteca masiva y global donde cada libro, cada receta y cada manual de instrucciones está almacenado en una bóveda digital. Para mantener esta biblioteca organizada, cada artículo recibe una tarjeta de identificación única hecha de un código especial. En el mundo del desarrollo de software, este sistema se llama Git. Piensa en un "commit" como una instantánea de un proyecto en un momento específico del tiempo, como tomar una foto de un castillo de Lego que acabas de construir. Para asegurar que nadie se cuele y cambie un ladrillo por uno de plástico, los desarrolladores pueden "firmar" sus fotos con un sello digital, como un sello de cera en una carta. Este sello demuestra: "Sí, yo construí esto, y nadie lo cambió".

La gran idea detrás de este sistema es la confianza a través de la unicidad. Si tienes el código de identificación único de la foto, deberías poder encontrar esa misma foto y saber que no ha sido alterada. Es como decir: "Si la tarjeta de identificación dice 'Castillo A', entonces el 'Castillo A' es lo único en el mundo que encaja con esa descripción". Esta confianza es tan fuerte que las computadoras usan estos códigos de identificación para verificar automáticamente si el software es seguro, para bloquear versiones específicas de código para que no se rompan y para demostrar exactamente quién construyó qué. Si el código de identificación es único e inalterable, todo el sistema funciona como una máquina bien aceitada. Pero, ¿qué pasa si alguien puede tomar una foto perfectamente buena y firmada, cambiar el sello de cera solo un poquito y obtener una nueva tarjeta de identificación que todavía demuestra que la foto es real? Esa es la pregunta que este documento plantea.


El Gran Intercambio de Identidad Digital

En este documento, un investigador llamado Jacob Ginesin descubrió un truco escurridizo que rompe la regla de "una foto, un ID" en Git. Demostró que un atacante, sin necesidad de robar las claves de firma secretas o romper las matemáticas detrás de los sellos digitales, puede crear una segunda tarjeta de identificación, totalmente diferente, para la misma pieza de software.

Aquí está el truque de magia: El atacante toma un commit firmado (una foto con un sello de cera) y retoca el sello de una manera que parece diferente para una computadora pero significa exactamente lo mismo para un humano. Es como tomar un sello de cera, presionarlo en una forma ligeramente distinta, o escribir el mismo mensaje en un papel pero usando una fuente diferente. El contenido de la foto no ha cambiado en absoluto; el castillo de Lego es idéntico. El sello sigue demostrando la identidad del autor. Pero debido a que la "apariencia" del sello cambió, la computadora genera una tarjeta de identificación completamente nueva para él.

¿La parte aterradora? Los sistemas informáticos que verifican estos IDs (como GitHub) dicen: "¡Oye, este sello es válido! ¡Este es un commit verificado!" y le otorgan una brillante insignia verde de "Verificado". Ahora, tienes dos tarjetas de identificación diferentes para el mismo castillo de Lego. Una dice "Castillo A" y la otra dice "Castillo B". Ambas están firmadas por la misma persona y ambas están marcadas como "Verificadas".

Las Tres Formas de Engañar al Sistema

El documento explica tres formas diferentes de realizar este truco, dependiendo de qué tipo de sello digital se esté utilizando:

  1. El Giro Matemático (para ECDSA): Imagina una recta numérica donde tienes un número, digamos 5. En este juego matemático específico, el número 5 y el número "Total menos 5" son en realidad lo mismo. El atacante simplemente voltea el número en el sello. Se ve diferente, pero la matemática dice que sigue siendo una firma válida.
  2. La Nota Oculta (para RSA y EdDSA): Imagina una carta sellada. El sello cubre el mensaje principal, pero hay un pequeño bolsillo en la parte posterior que no está sellado. El atacante desliza una pequeña nota inofensiva en ese bolsillo. El mensaje principal permanece intacto y el sello sigue siendo válido, pero la carta ahora tiene un peso y una forma ligeramente diferentes, lo que cambia la tarjeta de identificación.
  3. La Fuente Elegante (para S/MIME): Imagina escribir un número como "32". Puedes escribirlo como "32" o como "0x20". Ambos significan lo mismo, pero uno es la forma "estándar" y la otra es la forma "elegante". El atacante vuelve a escribir el número de la forma elegante. La computadora que verifica la carta (GitHub) es un poco permisiva y acepta la fuente elegante, pero una computadora más estricta (tu propia laptop) podría confundirse y decir: "¡Espera, esa no es la forma estándar!".

Por Qué Esto Importa: El Problema del "Fantasma"

Podrías pensar: "Entonces, ¿qué importa? Si el castillo es el mismo, ¿a quién le importa si la tarjeta de identificación es diferente?". Pero en el mundo digital, la tarjeta de identificación es el castillo.

  • El Problema del Portero: Imagina a un portero de un club que tiene una lista de IDs prohibidos. Si estás prohibido, no puedes entrar. Pero si el atacante crea un "ID Fantasma" para la misma persona que no está en la lista de prohibidos, el portero lo deja pasar. El atacante puede colar código malicioso a través de los filtros de seguridad simplemente cambiando la tarjeta de identificación.
  • El Problema del Espejo: Imagina dos espejos enfrentados. Uno muestra el castillo real; el otro muestra un "Castillo Fantasma" que se ve idéntico pero tiene un nombre diferente. Si estás mirando el espejo equivocado, podrías pensar que estás viendo el original, pero en realidad estás viendo una copia que el atacante controla.
  • La Cadena Rota: Debido a que cada nuevo castillo de Lego en una cadena se construye sobre el anterior, cambiar el ID de un castillo cambia el ID de todos los castillos construidos después de él. Esto crea una "bifurcación" en la historia. Terminas con dos líneas temporales paralelas: una con el ID original y otra con el ID fantasma. Ambas parecen reales, ambas están firmadas, pero son diferentes.

El Veredicto

El documento demuestra que la insignia de "Verificado" en un hash de commit no es una garantía única de contenido. Es como tener un sello de "Verificado" en un pasaporte que no garantiza que eres la única persona con esa cara; solo garantiza que el sello es real.

El autor construyó una herramienta que puede hacer este truco automáticamente a cualquier commit firmado. Lo probó en GitHub, y el sitio aceptó alegremente los commits "Fantasma", otorgándoles sus propias insignias de "Verificado". Esto significa que los sistemas que dependen de estas tarjetas de identificación para bloquear a malos actores, asegurar versiones de software o probar quién construyó qué, son vulnerables. La solución no es dejar de firmar; es asegurarse de que las computadoras que verifican los sellos sean lo suficientemente estrictas como para decir: "No, esa no es la exacta misma firma que vimos antes", y para verificar el contenido real, no solo la tarjeta de identificación.

En resumen: un commit firmado es una promesa, pero el documento muestra que la promesa puede escribirse de una manera que crea una versión "fantasma" de sí misma, engañando a los sistemas que deberían mantenernos seguros.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →