Auf GitHub:
Eve schreibt Code in ihr Fork eines populären Projekts, schreibt sich als "Eve" <[email protected]>
fest und sendet eine Pull-Anfrage aufwärts.
Alice bemerkt nicht, dass Eves Code eine Hintertür zu dem populären Projekt enthält, an dem sie arbeitet, hält den Code für großartig und fügt die Pull-Anfrage zusammen.
Später wird jeder in Besitz genommen.
Bob, Alices Boss, würde gerne jemanden entlassen, der den Code gelandet hat. Er macht git log --full
und sieht:
git log --fuller
hilft nicht, und Eve hat keine direkten Push-Rechte für das Repository.
Bob kann den Pull-Request-Verlauf durchsuchen und es so finden, aber das ist scheiße. Gibt es eine Möglichkeit, dies lokal herauszufinden?
Im Allgemeinen können Sie mit git git signoff verwenden (siehe Was ist die Abmeldungsfunktion in Git? ) und fügen Sie dann einen Aktualisierungs-Hook hinzu, um alle Pushs abzulehnen, die keine Abmeldung haben. GitHub scheint jedoch im Allgemeinen keine benutzerdefinierten Hooks zuzulassen, aber Sie könnten einen Post-Receive-Hook hinzufügen, um alle zukünftigen Push-Ereignisse zu protokollieren:
Wenn dies ein Ereignis war, das bereits passiert ist, könnte es schwer (oder unmöglich?) sein, es aufzuspüren. Vielleicht können Sie sich die git reflog- und ssh-Protokolle ansehen, aber ich bin mir nicht sicher, ob GitHub solche Informationen bereitstellt. Wenn es wirklich eine Sicherheitsverletzung war, könnte es sich zumindest lohnen, sie zu fragen, welche Protokolle sie haben.