Vorfall mit dem Ersetzen von Commits im Linux-Kernel-Branch von Kesa Cook.

Linus Torvalds forderte den Administrator von kernel.org auf, das Benutzerkonto von Kesa Kuka, dem ehemaligen Hauptsystemadministrator von kernel.org und Leiter des Ubuntu Security Teams, das 14 mit Sicherheit verbundenen Subsysteme im Kernel betreut, sofort zu sperren. Konstantin Ryabtsev, verantwortlich fĂŒr die Infrastruktur von kernel.org, fĂŒhrte die Sperrung durch. Grund fĂŒr die Sperrung war ein Pull-Request zur Aufnahme von Änderungen in den Kernel-Branch 6.16, der sich auf ein Git-Repository bezog, in dem die Autorinformationen einiger Commits geĂ€ndert wurden.

Im von Kesa unterstĂŒtzten Git-Repository gab es gefĂ€lschte Änderungen, bei denen im Autor- und Committer-Feld "Linus Torvalds" angegeben wurde, aber Linus sie nicht hinzugefĂŒgt hatte. Zum Beispiel gab es unter Linus' Namen in Kesa's Branch einen Commit, der einen anderen Commit in Linus' Branch wiederholte, jedoch mit einem anderen SHA1-Hash. Beide Commits sehen identisch aus, abgesehen von den Signaturinformationen.

Die Änderungen schienen kein zufĂ€lliger Fehler wĂ€hrend der AusfĂŒhrung des "git rebase"-Befehls zu sein, da sie falsche Informationen ĂŒber den Autor des Commits enthielten. Linus Torvalds hielt dies fĂŒr Anzeichen potenziell böswilliger AktivitĂ€ten und initiierte die Sperrung der Annahme jeglicher Änderungen von Kesa, bis die Ursachen solcher Manipulationen geklĂ€rt und bestĂ€tigt wird, dass Kesa's System nicht kompromittiert wurde.

Kesa antwortete, dass er nicht verstehe, wie das passieren konnte. Davor hatte er Probleme beim Versuch, mehrere seiner Git-Branches zu mergen, und versuchte dann, diese mit dem Befehl "git rebase" zu lösen, aber anscheinend half das nicht. All dies geschah vor dem Hintergrund eines Ausfalls des SSD-Speichers, der beim Kopieren Fehler erzeugte. Kesa war der Meinung, dass es ihm nach dem Ausfall gelang, den Zustand seiner Repositories wiederherzustellen, aber das scheint nicht der Fall zu sein. Um die IntegritĂ€t wiederherzustellen, beabsichtigt Kesa, seine Branches aus einzelnen Patches neu zu erstellen. Als wahrscheinlichste Ursache fĂŒr die gefĂ€lschten Autoreninformationen sieht Kesa einen misslungenen Versuch, das Repository nach dessen BeschĂ€digung wiederherzustellen.

Linus war mit dieser ErklĂ€rung nicht zufrieden, da seiner Meinung nach die Änderungen in der Commit-Historie im Kesa-Repository sehr absichtlich erscheinen und nicht wie ein zufĂ€lliger Fehler wirken. Das Rebasieren der Versionshistorie mit dem Befehl „git rebase“ könnte das Umschreiben des Committers erklĂ€ren, aber Linus kann nicht nachvollziehen, wie ein solcher Befehl „git rebase“ aus Versehen ausgefĂŒhrt worden sein könnte.

Das Umschreiben eines oder zweier Commits könnte man vielleicht noch als Fehler werten, aber im Repository von Kesa wurden mehr als sechstausend Merge-Commits umgeschrieben, von denen 330 von Linus verfasst wurden, obwohl diese Commits nicht aus Linus' git-Baum stammen. Die vorgenommenen Änderungen erinnern eher an die Arbeit eines Skripts als an das Ergebnis eines Datenverlusts auf einem SpeichergerĂ€t, da sie eine separate Rekonstruktion jeder Commit-Kopie erfordern.

Kes versicherte Linus, dass er dies nicht absichtlich getan hatte und solche Experimente nicht ohne Vorwarnung durchfĂŒhren wĂŒrde (zum Beispiel war das letzte Experiment zu Commit-Kollisionen mit Linus abgesprochen). In dieser Woche fĂŒhrte er mehrere manuelle Operationen im Repository durch und wird nun versuchen herauszufinden, was schiefgelaufen ist und das Problem zu reproduzieren. Beispielsweise fĂŒhrte Kes einen Rebase-Befehl fĂŒr die git-BĂ€ume for-next/hardening und for-linus/hardening aus, wobei er im Gegensatz zu vorherigen Ă€hnlichen Änderungen den Branch „master“ und nicht rc2 verwendete. WĂ€hrend dieser Operation nahm er Änderungen an den Skripten zur ÜberprĂŒfung von Pull-Requests vor.

Zusatz: Kes Cook veröffentlichte eine weitere Mitteilung, in der er erklĂ€rte, dass das Problem wahrscheinlich durch die Verwendung des Dienstprogramms „git-filter-repo“ verursacht wurde, das die Commit-Historie im Repository umschreibt, in Kombination mit dem Befehl „b4 trailers“, der dazu dient, Trailer zu Commits zu erhalten und anzuwenden (zum Beispiel „Signed-off-by:“).

Quelle: opennet.ru

60GB SSD 8Gb DDR4