Malware im Git-Hook post-checkout nimmt Entwickler ins Visier
Entwickler Frank Wiles berichtet, dass ihm ein falscher Kunde ein Repo schickte, dessen Git-Hook post-checkout beim Branch-Wechsel Malware nachlud. Jobsuchenden droht derselbe Trick.
4 Min. Lesezeit

Entwickler Frank Wiles schrieb am 2. Oktober 2026, dass Angreifer versucht hätten, mit einem präparierten Git-Repository seine Konten zu übernehmen. Die Falle war ein post-checkout-Hook, ein Skript, das Git jedes Mal ausführt, wenn du den Branch wechselst. Es ist der jüngste Fall einer Kampagne, die mindestens seit Mai Jobsuchende trifft. Die Lehre für Entwickler: Schon das bloße Auschecken eines Branches im Repository eines anderen kann dessen Code ausführen.
Was Frank Wiles passiert ist
Der Angreifer gab sich als Inhaber einer Entwicklungsagentur aus, schrieb Wiles in seinem Blog. Er bat ihn, ein NDA zu prüfen, eine Geheimhaltungsvereinbarung, und teilte ein Repository über Dropbox. Dann bat er ihn, zu einem "NDA-Branch" zu wechseln.
Dieser Branch-Wechsel war der Auslöser. Im Ordner .git/hooks/ des Repositorys lag ein post-checkout-Hook. Als Wiles den Branch wechselte, lud der Hook von einem auf Vercel gehosteten Server ein Programm herunter, das für sein Betriebssystem gebaut war. Er machte die Datei ausführbar, startete sie und löschte sich dann selbst.
Wiles glaubt, das Ziel sei gewesen, "Zugriff auf meinen Github-Account und/oder andere Zugänge im Zusammenhang mit REVSYS-Kunden zu erlangen". Er merkt an, dass der post-checkout-Hook selten genutzt wird, was ihn leicht übersehbar macht. Sein Rat an andere Entwickler lautet, "besonders wachsam zu sein und die eigenen Zugangsdaten mit Argusaugen zu bewachen".
Wie Git-Hooks zur Waffe werden
Git-Hooks sind kleine Skripte, die Git zu festgelegten Zeitpunkten automatisch ausführt, etwa vor einem Commit oder nach einem Checkout. Sie sind eine normale Funktion und werden für Aufgaben wie das Ausführen eines Linters genutzt. Ein normales git clone von einem Server kopiert keine Hooks, deshalb nutzen diese Angreifer andere Wege.
Die Berichte zeigen zwei Wege:
- Den ganzen Ordner verschicken. Wiles bekam sein Repository über Dropbox. In einem Fall, den Andrii in einem Blogbeitrag im Mai analysierte, erhielt das Opfer eine "Demo-Codebasis" auf Google Drive. Ein geteilter Ordner oder ein Archiv kann das versteckte Verzeichnis
.gitenthalten, samt Hooks. - Das Opfer bitten, Hooks einzuschalten. OpenSourceMalware beschreibt Repositorys, die Hooks in einem Ordner
.githooksaufbewahren. Opfer haben sie offenbar mitgit config core.hooksPath .githooksaktiviert, ohne sie zu lesen.
So oder so läuft der Hook während ganz normaler Arbeit. In dem Fall, den Andrii analysierte, wurde er bei git checkout dev ausgelöst, dem Befehl, um den Hauptcode anzusehen.
Was die Malware stiehlt
Die Schadprogramme unterscheiden sich, zielen aber auf dieselben Dinge. Andriis Analyse fand ein Programm, das nach SSH-Schlüsseln wie id_ed25519, nach .env-Dateien, Kryptowallets und Zertifikaten suchte. Es durchsuchte die Ordner Desktop, Dokumente und Downloads und lud Dateien unter 10 MB hoch. Außerdem schickte es jede Sekunde den Inhalt der Zwischenablage, und es ließ den Angreifer Befehle auf dem Rechner ausführen.
Ein Bericht vom Juli im Blog Citizen Dot beschreibt eine ähnliche Falle hinter einem falschen Jobangebot. Ein "Recruiter" auf LinkedIn bot einen Remote-Vertrag an, der "10.000 bis 15.000 Dollar im Monat" zahlen sollte. Das Probeprojekt für zu Hause kam als Zip-Datei auf Google Drive, mit einem Git-Hook, der einen Stealer für Kryptowallets nachlud.
Wer dahintersteckt
OpenSourceMalware ordnet die Kampagne der Lazarus Group zu, der nordkoreanischen Hackergruppe. Die Seite bringt den Git-Hook-Trick mit der Kampagne "Contagious Interview" aus gefälschten Vorstellungsgesprächen in Verbindung, die sich vor allem gegen Menschen aus Krypto und Web3 richtet. In den untersuchten Fällen lief die Malware, "wenn der Kandidat zum ersten Mal versucht, den Fehler zu beheben und zu committen". Post-checkout-Hooks nannte die Seite eine "noch fiesere" Variante, weil sie schon bei einem einfachen Branch-Wechsel auslösen.
Der Fall, den Wiles beschreibt, nutzte einen falschen Kunden und ein NDA, kein Jobangebot. Die Methode, ein versteckter Hook, der seine Schadsoftware von einem Server lädt, ist dieselbe.
Was das für Entwickler bedeutet
Öffne ein Repository, das du als Ordner oder Archiv bekommen hast, niemals auf deinem eigenen Rechner. Klone es stattdessen frisch von einem Git-Host, oder öffne es in einer Wegwerf-VM oder einem Container. Ein frischer Klon lässt die Hooks des Absenders zurück.
Bevor du in geteiltem Code einen Git-Befehl ausführst, sieh in .git/hooks/ nach Dateien ohne die Endung .sample. Prüfe .git/config auf eine Einstellung hooksPath, und suche nach einem Ordner .githooks. Der Autor von Citizen Dot rät, versteckte Ordner wie .git und .vscode zu untersuchen, bevor man nicht vertrauenswürdigen Code anfasst.
Du kannst Hooks auch für einen einzelnen Befehl abschalten. Der Befehl git -c core.hooksPath=/dev/null checkout <branch> verweist Git auf einen leeren Ort, sodass kein Hook läuft.
Betrachte jede Bitte, deine Git-Einstellungen zu ändern, als Warnsignal. Ein echter Kunde oder Arbeitgeber hat keinen Grund, dich zu bitten, seine Hooks zu aktivieren. Wenn du glaubst, dass ein Hook schon gelaufen ist, geh davon aus, dass deine SSH-Schlüssel, Tokens und .env-Geheimnisse offenliegen. Tausche sie von einem sauberen Rechner aus und prüfe dein GitHub-Konto auf neue Schlüssel oder Sitzungen.
Quellen
- I got targeted: Trying to get your credentials via a git post-checkout hook - Frank Wiles
- Be careful with your Git: Investigating malware spreading through Git repositories - andrii.ro
- Lazarus Group Uses Git Hooks To Hide Malware - OpenSourceMalware
- I Inspected My Take-Home Interview Project. It Was a Trap - Citizen Dot
Ähnliche Artikel

Git 3.0s SHA-256-Standard ist ein teurer Fehler, sagt Chacon
Scott Chacon sagt, der SHA-256-Standard von Git 3.0 löse ein Problem, das kein Repository je hatte, und breche 40-Zeichen-Hashes überall. Git nennt keinen Termin.

npm Trusted Publishing kann dist-tags jetzt per OIDC verschieben
npm Trusted Publishing kann dist-tags wie latest jetzt mit kurzlebigen OIDC-Tokens hinzufügen, verschieben und entfernen. Die Funktion ist standardmäßig aus und braucht npm 11.21.0.

Git 2.56.0 bringt schnelleres merge-base und kleinere Repacks
Git 2.56.0 verkürzt einen merge-base-Durchlauf im Linux-Kernel von 167.441 auf 3.887 Schritte und verkleinert den Pack eines Test-Repositorys um 71 %. Die Version erschien am 28. September.