Introduction

Le système de gestion de versions Git repose fortement sur la signature de commit pour garantir l’authenticité et l’intégrité des données. Cependant, une récente découverte met en évidence une faille dans ce système, connue sous le nom de « malléabilité de la chaîne de hachage Git ». Cette vulnérabilité permet à un attaquant de créer un commit distinct avec un hachage différent, mais avec le même contenu, les mêmes métadonnées et une signature valide, sans avoir besoin d’accéder à la clé de signature ou de casser l’algorithme SHA-2.

Fonctionnement de la malléabilité

La malléabilité de la chaîne de hachage Git est rendue possible en raison de la malléabilité inhérente à certaines représentations de données qui composent un commit. Trois méthodes de malléabilité ont été identifiées : (i) l’inversion algébrique pour les signatures ECDSA ; (ii) l’insertion structurale d’un sous-paquet OpenPGP non haché pour les signatures RSA et EdDSA ; et (iii) la ré-encodage de la longueur DER non canonique à l’intérieur de l’enveloppe CMS pour S/MIME. Ces méthodes permettent de créer un commit modifié qui cascade pour modifier les valeurs de tous les commits dépendants ultérieurs.

Implications et limites

Les implications de la malléabilité de la chaîne de hachage Git sont importantes pour les systèmes qui reposent sur les hachages de commit pour garantir l’intégrité des données, tels que les systèmes de construction reproductibles et les systèmes de blocage de commit basés sur les hachages. Les attaques de malléabilité peuvent également avoir des conséquences sur la sécurité des dépendances et des workflows dans les systèmes de gestion de versions. Il est essentiel de prendre en compte ces vulnérabilités pour améliorer la sécurité et la fiabilité des systèmes qui utilisent Git.

Conclusion et perspectives

La découverte de la malléabilité de la chaîne de hachage Git souligne l’importance de la sécurité et de la vérification dans les systèmes de gestion de versions. Il est crucial de développer des contre-mesures pour prévenir ces types d’attaques et de garantir l’intégrité des données dans les systèmes qui reposent sur Git. Les chercheurs et les développeurs doivent travailler ensemble pour améliorer la sécurité et la fiabilité de ces systèmes.