600 Stimmen

Wie würde Git eine SHA-1-Kollision bei einem Blob behandeln?

Das ist in der Praxis wahrscheinlich noch nie passiert und wird vielleicht auch nie passieren, aber nehmen wir an, Sie haben ein Git-Repository, machen einen Commit und haben Pech: Einer der Blobs hat am Ende den gleichen SHA-1-Wert wie ein anderer, der bereits in Ihrem Repository ist. Die Frage ist, wie würde Git damit umgehen? Einfach fehlschlagen? Einen Weg finden, die beiden Blobs miteinander zu verknüpfen und zu prüfen, welcher davon je nach Kontext benötigt wird?

Das ist eher ein Denkanstoß als ein wirkliches Problem, aber ich fand das Thema interessant.

89 Stimmen

Einst eine Denksportaufgabe, jetzt potenziell ein tatsächliches Problem .

12 Stimmen

@Toby Diese Frage bezog sich auf eine Vorstellungsangriff was Google demonstriert hat, ist eine Kollisionsangriff -- ähnlich, aber etwas anders. Sie können mehr über den Unterschied lesen aquí .

0 Stimmen

@Saheed Ich verstehe nicht, was an dieser Frage speziell mit einem Angriff vor dem Bild zu tun hat, denn die Frage bezieht sich nur auf a Kollision in einem Git-Repository, nicht um deren Ausnutzung.

6voto

Jeff Burdges Punkte 4166

Es gibt verschiedene Angriffsmodelle für Hashes wie SHA-1, aber das meist diskutierte ist die Kollisionssuche, einschließlich Marc Stevens' HashClash Werkzeug.

"Seit 2012 gilt der effizienteste Angriff gegen SHA-1 als der von Marc Stevens[34] mit geschätzten Kosten von 2,77 Mio. $ für das einen einzigen Hash-Wert zu brechen, indem er CPU-Leistung von Cloud-Servern mietet."

Wie bereits erwähnt, kann man mit Git eine Hash-Kollision erzwingen, aber dabei werden die vorhandenen Objekte in einem anderen Repository nicht überschrieben. Ich könnte mir vorstellen, dass sogar git push -f --no-thin die vorhandenen Objekte nicht überschreibt, aber ich bin mir nicht 100%ig sicher.

Wenn Sie sich jedoch in ein entferntes Repository hacken, können Sie Ihr falsches Objekt zu dem älteren machen dort möglicherweise das Einbetten von gehacktem Code in ein Open-Source-Projekt auf Github oder ähnlichem. Wenn Sie vorsichtig wären, könnten Sie vielleicht eine gehackte Version einführen, die neue Benutzer herunterladen.

Ich vermute jedoch, dass viele Dinge, die die Entwickler des Projekts tun könnten, Ihren Multi-Millionen-Dollar-Hack entweder aufdecken oder versehentlich zerstören könnten. Insbesondere ist das eine Menge Geld, das den Bach runtergeht, wenn ein Entwickler, den Sie nicht gehackt haben, jemals die oben erwähnte git push --no-thin nach dem Ändern der betroffenen Dateien, manchmal sogar ohne die --no-thin abhängig.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X