Der erste Git-Commit von Linux und kollidierende SHA-Präfixe
Zusammenfassung
Kees Cook demonstriert praktisch, warum automatisierte Linux-Werkzeuge Git-Commitpräfixe nicht als eindeutige Kennungen behandeln dürfen.
Ideen
- Zwölfstellige SHA-Präfixe können in großen Repositories bereits kollidieren.
- Der absichtlich erzeugte Commit teilt das Präfix des ersten Linux-Git-Commits.
- Fixes-Tags transportieren menschenlesbare Hinweise, keine dauerhaft eindeutigen Datenbankschlüssel.
- Parser müssen mehrdeutige Präfixe erkennen und kontrolliert behandeln.
- Eine vorbereitete Kollision liefert einen reproduzierbaren Test für bestehende Werkzeuge.
Einsichten
- Wachsende Datenmengen verwandeln theoretische Wahrscheinlichkeiten irgendwann in Betriebsfehler.
- Bequeme Kurzformen werden gefährlich, sobald Maschinen sie als Identitäten interpretieren.
- Robuste Formate unterscheiden ausdrücklich zwischen Anzeige, Referenz und eindeutiger Kennung.
Fakten
- Das kollidierende Präfix lautet
1da177e4c3f4. - 590 Linux-Commits verwendeten dieses Präfix damals in Fixes-Tags.
- Die Suche benötigte mit einer RTX 3080 ungefähr sechs Stunden.
Empfehlungen
- Verwende in Skripten vollständige Objekt-IDs oder prüfe Kurz-IDs auf Eindeutigkeit.
- Teste Commitparser gezielt mit bekannten Präfixkollisionen.
Referenzen
Der Link zur Originalquelle öffnet einen neuen Tab.