Die Illusion der signierten Commits
Eine aktuelle Sicherheitsforschung enthüllt ein fundamentales Problem mit GitHub's Verified-Commit-System: Die Integrität signierter Commits ist weniger gewährleistet als angenommen. Die Crux liegt in einer Eigenschaft von Git-Hashes, die viele Entwickler übersehen.
Das Problem
Wenn ein Commit kryptografisch signiert wird, können Angreifer ohne Zugriff auf den privaten Schlüssel einen neuen Commit mit identischen Eigenschaften erstellen: gleiche Dateien, gleicher Author, gleiches Datum, gültige Signatur. Allerdings hat dieser neue Commit einen anderen Hash.
GitHub markiert diesen forged Commit trotzdem als "Verified" – weil die Signatur kryptografisch korrekt ist. Für Code-Reviewer erscheint alles legitim: Die Signatur stimmt, der Author passt, der Inhalt sieht richtig aus. Nur der Hash unterscheidet sich.
Warum das critical ist
Dieser Hash-Mismatch ist kein cosmetic Problem. Der Commit-Hash ist in Git das kanonische Identitätsmerkmal eines Commits. Tools, CI/CD-Pipelines und automatisierte Prozesse vertrauen darauf, dass ein Hash einen einzigartigen, unveränderlichen Snapshot darstellt.
Wenn dieser Annahme nicht zutrifft, entstehen praktische Sicherheitslücken:
- Bypass von Commit-Policies: Branch-Protection-Rules und Merge-Anforderungen können umgangen werden, wenn ein anderer gültiger Hash existiert
- Supply-Chain-Attacken: Ein Angreifer könnte einen signierten Commit in einer Dependency verändern, ohne dass es auffällt
- Audit-Trail-Probleme: Die Nachverfolgbarkeit von Code-Änderungen wird undurchsichtig
Die Root-Cause
Das Problem liegt in der Struktur von Git selbst. Der Commit-Hash wird aus mehreren Metadaten berechnet – und einige dieser Felder können manipuliert werden, ohne dass die Signatur bricht. Git's Signatur-System validiert nur bestimmte Felder, nicht die gesamte Commit-Struktur.
Was bedeutet das praktisch?
Für die meisten Teams ändert sich der Workflow nicht sofort. Allerdings sollten Organisationen:
- Verified Commits nicht als alleiniges Vertrauen-Zeichen betrachten
- zusätzliche Kontrollen in CI/CD-Pipelines einbauen, die Commit-Hashes tracked
- Branch-Protection-Regeln kombiniert mit anderen Validierungsmechanismen nutzen
GitHub sollte diese Lücke adressieren – eine mögliche Lösung wäre eine "fully verified" Kategorie, die nicht nur die Signatur, sondern auch die Hash-Unverwehrbarkeit garantiert.

