Gitea CVE-2026-60004: diffpatch-Endpoint erlaubt Git-Hook-Planting und RCE — aktiv ausgenutzt, jetzt in der CISA-KEV
CVE-2026-60004 (CVSS 3.1: 9.8, Kritisch) betrifft den /api/v1/repos/{owner}/{repo}/diffpatch-Endpoint von Gitea, der eigentlich für die Vorschau von Patches gedacht ist. Durch zweimaliges Einreichen identischer Patches lässt sich eine „Add/Add“-Kollision beim Anwenden der Patches im Bare-Repository provozieren, über die eine ausführbare Datei als hooks/post-index-change im Repository platziert wird. Aktualisiert Git anschließend den Index, führt es diesen Hook mit den Rechten des Gitea-Dienstkontos aus. Da Gitea in Standard-Installationen offene Registrierung ohne E-Mail-Bestätigung oder Admin-Freigabe erlaubt, genügt einem Angreifer ein selbst angelegtes Konto und ein eigenes Repository — keine bestehenden Zugriffsrechte nötig. Betroffen sind Gitea-Versionen 1.17 bis 1.27.0, gepatcht seit 1.27.1 (27.07.2026). CISA nahm die Lücke am 25.08.2026 in den Known-Exploited-Vulnerabilities-Katalog auf; dokumentierte Angriffe setzen einen Crypto-Miner-Dropper nach, der die CPU-Last auf über 70 % treibt.
TL;DR — 90 Sekunden
- Betroffen?
Gitea-Instanzen der Versionen 1.17 bis 1.27.0 mit erreichbarem
diffpatch-API-Endpoint — praktisch jede Standardinstallation in diesem Versionsbereich, insbesondere mit offener Registrierung.- Risiko?
CVSS 3.1: 9.8 (Kritisch) —
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Über eine Add/Add-Kollision beim Patch-Anwenden lässt sich ein bösartiger Git-Hook (hooks/post-index-change) platzieren, der mit den Rechten des Gitea-Dienstkontos ausgeführt wird — faktisch unauthentifizierte Remote-Code-Ausführung, da ein Angreifer sich bei offener Registrierung selbst ein Konto anlegen kann.- Sofortmaßnahme?
Auf Gitea 1.27.1 oder neuer aktualisieren. Zusätzlich
DISABLE_REGISTRATION = truesetzen, falls offene Registrierung nicht benötigt wird.- Empfehlung?
Sofort patchen — CISA hat die Lücke am 25.08.2026 in die KEV aufgenommen, mit einer Remediationsfrist für US-Bundesbehörden bis zum 28.08.2026. Aktive Ausnutzung mit Crypto-Mining-Payload ist dokumentiert.
- Kritikalität?
Was ist das Problem?
Der Endpoint /api/v1/repos/{owner}/{repo}/diffpatch dient eigentlich dazu, Patches gegen ein Repository zur Vorschau anzuwenden, ohne sie tatsächlich zu committen. Dafür wendet Gitea den eingereichten Patch intern gegen eine Bare-Clone-Kopie des Repositories an.
Reicht ein Angreifer denselben Patch zweimal ein, entsteht beim Anwenden eine sogenannte „Add/Add“-Kollision — ein Konflikt, bei dem beide Patch-Versionen versuchen, dieselbe neue Datei anzulegen. Diese Kollisionssituation lässt sich so präparieren, dass am Ende eine ausführbare Datei unter dem Pfad hooks/post-index-change im Repository landet — einem Git-Hook, der bei einer Index-Aktualisierung automatisch ausgeführt wird. Da Gitea diese Index-Operationen mit den Rechten des eigenen Dienstkontos durchführt, führt die nächste Index-Aktualisierung den vom Angreifer platzierten Code mit denselben Rechten aus wie der Gitea-Serverprozess selbst.
Der Clou dabei: Der CVSS-Vektor weist PR:N (keine Rechte erforderlich) aus, weil Gitea-Instanzen in der Standardkonfiguration offene Registrierung ohne E-Mail-Bestätigung oder Administrator-Freigabe erlauben. Ein Angreifer muss also lediglich ein eigenes Konto anlegen, ein eigenes Repository erstellen und dort die präparierten Patches gegen den diffpatch-Endpoint einreichen — bestehende Schreibrechte auf ein fremdes Repository sind nicht nötig.
Wer ist betroffen?
| Betroffen | Nicht betroffen | Bedingungen |
|---|---|---|
| Gitea 1.17 bis 1.27.0 (self-hosted, inkl. Docker-Images dieser Versionen) | Gitea 1.27.1 und neuer | der diffpatch-API-Endpoint muss erreichbar sein — Standard bei aktivierter API |
| Instanzen mit offener Registrierung (Standardeinstellung) | Instanzen mit striktem Zugriffsmanagement, bei denen keine unbekannten Konten Repositories anlegen können | ohne offene Registrierung benötigt ein Angreifer ein bestehendes Konto mit Repository-Erstellungsrecht |
Installierte Version prüfen:
# über die Weboberfläche: Site-Administration → Übersicht → Gitea-Version
# oder per API:
curl -s ihre-gitea-instanz.example/api/v1/version
# oder direkt auf dem Server (Binary-Installation):
gitea --versionAuswirkungen
Erfolgreiche Ausnutzung liefert Codeausführung mit den Rechten des Gitea-Dienstkontos auf dem Host-System — nicht nur innerhalb des angegriffenen Repositories. Da Gitea häufig als zentrale Code- und CI/CD-Quelle betrieben wird, reicht der Blast Radius typischerweise deutlich weiter als ein einzelnes Projekt: Zugriff auf andere Repositories auf derselben Instanz (inklusive privater Repos, sofern das Dienstkonto entsprechende Dateisystemrechte hat), auf hinterlegte CI/CD-Secrets und Deploy-Keys, sowie potenziell laterale Bewegung in angebundene Build- und Deployment-Infrastruktur.
Die bislang dokumentierten Angriffe setzen einen Crypto-Miner-Dropper nach: Ein Skript leert relevante Umgebungsvariablen (LD_PRELOAD, LD_LIBRARY_PATH), beendet konkurrierende Hochlast-Prozesse, lädt eine architekturspezifische Payload nach, führt sie aus und entfernt anschließend Spuren. Die resultierende Mining-Last hat in beobachteten Fällen über 70 % der Server-CPU-Kapazität gebunden — ein vergleichsweise „harmloser“, aber gut sichtbarer Missbrauch. Nichts an der Schwachstelle selbst beschränkt einen Angreifer jedoch auf Crypto-Mining; dieselbe Codeausführung erlaubt ebenso gezielten Datendiebstahl oder das Einschleusen von Hintertüren in gehostete Projekte.
Mitigation / Sofortmaßnahmen
Operativer Entscheidungsblock
- Jetzt handeln, wenn … Ihre Gitea-Instanz eine Version zwischen 1.17 und 1.27.0 fährt und der API-Endpoint erreichbar ist — unabhängig davon, ob die Instanz öffentlich oder nur intern erreichbar ist.
- Mit Priorität prüfen, wenn … offene Registrierung aktiv ist und Sie nicht genau wissen, wer sich in der Vergangenheit registriert hat.
- Im nächsten regulären Fenster, wenn … bereits auf 1.27.1 oder neuer aktualisiert wurde.
Schritt 1 — auf Gitea 1.27.1 oder neuer aktualisieren
# Versionsstand prüfen
gitea --version
# Docker-Betrieb: aktuelles Image ziehen und Container neu erstellen
docker pull gitea/gitea:1.27.1
docker compose up -d gitea
# Binary-Installation: offizielles Release von codeberg.org/gitea/gitea oder
# gitea.com/gitea/gitea beziehen und gemäß offizieller Upgrade-Anleitung einspielen
# (vor dem Upgrade: Datenbank- und Repository-Backup nicht vergessen)
Schritt 2 — offene Registrierung schließen
# in app.ini, Sektion [service]:
[service]
DISABLE_REGISTRATION = true
# alternativ, falls Registrierung grundsätzlich gewünscht ist:
REGISTER_EMAIL_CONFIRM = true
# und manuelle Admin-Freigabe neuer Konten in Betracht ziehen
Diese Härtung schließt die Lücke nicht, entzieht einem opportunistischen Angreifer aber den einfachsten Weg zu einem Konto — wichtig auch als generelle Absicherung gegen künftige Schwachstellen dieser Art.
Schritt 3 — API-Exposition prüfen
# Faustregel: Gitea-Instanzen mit sensiblen Repositories nicht ungeschützt aus dem
# öffentlichen Internet erreichbar machen; API-Zugriff nach Möglichkeit auf bekannte
# Netzbereiche oder über ein VPN/Zero-Trust-Gateway beschränkenDetection / Prüfung
Repository-Hooks auf unautorisierte Dateien prüfen
# auf dem Gitea-Server: alle Repository-Verzeichnisse nach verdächtigen
# post-index-change-Hooks durchsuchen
find /data/gitea-repositories -type f -name "post-index-change" -exec ls -la {} \;
# Inhalt verdächtiger Treffer vor dem Löschen sichern und manuell prüfen
cat /pfad/zum/repo.git/hooks/post-index-change
API-Logs auf wiederholte diffpatch-Anfragen prüfen
# in den Gitea-Access-Logs nach ungewöhnlich häufigen Aufrufen desselben
# Kontos gegen den diffpatch-Endpoint suchen
grep "diffpatch" /var/log/gitea/access.log | awk '{print $1, $7}' | sort | uniq -c | sort -rn | head -20
Neu registrierte Konten mit ungewöhnlichem Verhalten
Ein typisches Muster: ein frisch registriertes Konto legt unmittelbar danach ein Repository an und wird anschließend inaktiv. Das lässt sich über die Admin-Oberfläche (Site-Administration → Nutzerkonten, sortiert nach Registrierungsdatum) oder per API abgleichen.
Auffällige CPU-Last ohne erklärbare Build-Aktivität
# laufende Prozesse mit ungewöhnlich hoher CPU-Last identifizieren
top -b -n 1 | head -20
# Prozessbaum des Gitea-Dienstkontos gezielt prüfen
ps -u git -o pid,ppid,cmd,%cpu --sort=-%cpu | head -10
CISA und die zitierten Quellen nennen diese vier Muster — unautorisierte Dateien im hooks/-Verzeichnis, gehäufte diffpatch-Aufrufe, Registrieren-dann-inaktiv-Konten und unerklärte CPU-Spitzen — als konkrete Indikatoren für diese Kampagne.
Betreiberempfehlung
Mid-Market
Sofort auf 1.27.1 aktualisieren und offene Registrierung schließen — CISA-KEV-Aufnahme und dokumentierte aktive Ausnutzung rechtfertigen ein Notfall-Update außerhalb des regulären Wartungsfensters.
Enterprise / Multi-Repo-Betreiber
Zusätzlich zum Update: alle Repository-Verzeichnisse auf unautorisierte post-index-change-Hooks prüfen, Registrierungshistorie der letzten Wochen auf Registrieren-dann-inaktiv-Muster durchsehen, und CI/CD-Secrets sowie Deploy-Keys rotieren, falls Hinweise auf Kompromittierung vorliegen. Gitea-Instanzen, die als zentrale Quelle für Build-Pipelines dienen, verdienen dabei besondere Aufmerksamkeit.
Behörden / regulierte Branchen
US-Bundesbehörden (FCEB) mussten laut CISA-KEV-Eintrag bis zum 28.08.2026 remediieren. Auch ohne direkte Meldepflicht ist dieser Zeitrahmen ein realistischer Maßstab für die Dringlichkeit bei jeder Organisation mit erhöhtem Schutzbedarf, die selbst gehostete Gitea-Instanzen betreibt.
Entscheidungsblock
Heute handeln, wenn: eine Gitea-Instanz der Versionen 1.17–1.27.0 produktiv läuft, unabhängig von öffentlicher oder interner Erreichbarkeit. Beobachten genügt, wenn: bereits auf 1.27.1 aktualisiert, offene Registrierung deaktiviert und keine Auffälligkeiten bei Hooks, Logs oder CPU-Last festgestellt wurden.
Häufige Fragen zu CVE-2026-60004
Warum ist PR:N (keine Rechte erforderlich) hier gerechtfertigt?+
Weil die Standardkonfiguration von Gitea offene Registrierung ohne E-Mail-Bestätigung oder Admin-Freigabe erlaubt. Der CVSS-Vektor bewertet die Lücke unter dieser Standardkonfiguration — wer Registrierung bereits einschränkt, reduziert die praktische Ausnutzbarkeit, auch wenn der CVSS-Wert der veröffentlichten CVE unverändert bleibt.
Betrifft das auch Gitea-Forks wie Forgejo?+
Das war den von uns ausgewerteten Quellen zu CVE-2026-60004 nicht eindeutig zu entnehmen. Da Forgejo als Fork teilweise abweichenden Code pflegt, sollten Betreiber von Forgejo-Instanzen die dortigen Sicherheitsmitteilungen unabhängig prüfen, statt sich allein auf diesen Beitrag zu verlassen.
Wie erkenne ich, ob meine Instanz bereits kompromittiert wurde?+
Prüfen Sie Repository-Verzeichnisse auf unautorisierte hooks/post-index-change-Dateien, API-Logs auf gehäufte diffpatch-Aufrufe, die Nutzerliste auf Registrieren-dann-inaktiv-Muster und die CPU-Last auf unerklärte Spitzen — alle vier gelten laut den ausgewerteten Quellen als konkrete Indikatoren dieser Kampagne.
Reicht es, die offene Registrierung zu deaktivieren, ohne zu patchen?+
Nein. Es reduziert die Angriffsfläche erheblich (ein Angreifer bräuchte dann ein bestehendes Konto), schließt die zugrunde liegende Schwachstelle im diffpatch-Endpoint aber nicht. Beides tun: patchen und Registrierung härten.
Benötigt ein Angreifer Schreibrechte auf mein Repository?+
Nein. Der Angreifer legt ein eigenes Konto und ein eigenes Repository an und nutzt den diffpatch-Endpoint gegen dieses eigene Repository — Zugriff auf fremde Repositories ist nicht erforderlich, um den Hook zu platzieren und mit Dienstkonto-Rechten auszuführen.
Ist das dieselbe Gitea-Lücke wie CVE-2026-20896, die hier bereits behandelt wurde?+
Nein. CVE-2026-20896 betraf einen HTTP-Header-basierten Auth-Bypass in bestimmten Docker-Reverse-Proxy-Konfigurationen. CVE-2026-60004 ist eine eigenständige, unabhängige Lücke im diffpatch-API-Endpoint — beide sollten separat gepatcht und geprüft werden.
Fazit
CVE-2026-60004 ist ein Lehrstück dafür, wie eine eigentlich harmlose Vorschau-Funktion (Patch-Preview ohne Commit) über einen Kollisionsfall beim Datei-Anlegen zu einer vollwertigen RCE-Kette wird — und wie sehr eine bequeme Standardeinstellung wie offene Registrierung die praktische Ausnutzbarkeit einer Schwachstelle erhöhen kann. Gitea wird häufig gerade von Teams betrieben, die bewusst von größeren SaaS-Plattformen weg zu selbst gehosteten Lösungen wechseln — diese Selbstverantwortung schließt das zeitnahe Einspielen von Sicherheitsupdates ausdrücklich ein. Mit CVSS 9.8, bestätigter aktiver Ausnutzung und CISA-KEV-Aufnahme gibt es hier keinen Interpretationsspielraum: patchen, Registrierung härten, Repository-Hooks prüfen.
Quellen
- The Hacker News — Critical Gitea RCE Actively Exploited as Reported Attack Drops Miner-Like Payload
- BleepingComputer — Over 8,300 Gitea servers vulnerable to code execution attacks (28.08.2026)
- Zero Day Hub — Gitea RCE: CVE-2026-60004 Exploited in the Wild (26.08.2026)
- GBHackers — Critical Gitea Flaw Lets Unauthenticated Attackers Read Server Files and Execute Code
- CISA — Known Exploited Vulnerabilities Catalog
- Gitea — offizielle Releases auf GitHub
Ich prüfe Ihre selbst gehostete Git- und CI/CD-Infrastruktur auf Patch-Stand und Angriffsfläche, härte Registrierung und API-Exposition, und begleite Sie bei Verdacht auf Kompromittierung durch forensische Erstmaßnahmen.
Versions-Audit, Hook-Prüfung, Registrierungs-Härtung und Log-Rückschau — für Gitea ebenso wie für angrenzende Build- und Deployment-Systeme.
Plattform-Betrieb statt Beratung auf Papier: Ich prüfe, patche und härte Ihre Infrastruktur laufend.