Bei der Sicherheitslücke handelt es sich um einen Command-Injection-Fehler, der in der Verarbeitung von Git-Push-Optionen liegt. Das Problem entsteht dadurch, dass benutzerdefinierte Push-Option-Werte nicht ausreichend validiert werden, bevor sie in interne Service-Header integriert werden. Genauer gesagt wird bei diesem Prozess ein Semikolon als Trennzeichen verwendet – ein Zeichen, das auch in Benutzereingaben vorkommen kann.
Wie GitHub-CISO Alexis Wales erklärte, können Angreifer durch geschickt verkettete injizierte Werte die Umgebung überschreiben, in der der Push verarbeitet wird, Sandbox-Schutzmaßnahmen für Hook-Ausführungen umgehen und letztendlich beliebige Befehle auf dem Server ausführen. Sagi Tzadik von Wiz demonstrierte, dass die Exploit-Kette drei aufeinanderfolgende Injektionen nutzt und dem Angreifer mit Ausführungsrechten als Git-Benutzer vollständige Kontrolle über die GHES-Instanz verschafft – inklusive Dateisystem-Zugriff und Zugriff auf interne Service-Konfigurationen.
Besonders kritisch ist die Situation bei GitHub.com: Während GitHub Enterprise Server anfällig ist, kann auch GitHub.com exploitet werden, da ein Enterprise-Mode-Flag ebenfalls über den X-Stat-Header injizierbar ist. Dies führt zu einer Multi-Tenant-Exposition, bei der Angreifer auf alle Repositories eines Speicherknotens zugreifen können – unabhängig von Organisation oder Benutzer. Bei der Disclosure waren etwa 88% der Instanzen verwundbar.
GitHub hat Patches für mehrere Versionen bereitgestellt: Enterprise Server 3.14.25, 3.15.20, 3.16.16, 3.17.13, 3.18.8, 3.19.4 und 3.20.0 oder später. GitHub.com wurde bereits innerhalb von zwei Stunden nach Meldung durch Wiz gepatcht. Es gibt bislang keine Hinweise auf böswillige Ausnutzung in der Praxis.
Für deutsche Organisationen ergibt sich daraus eine doppelte Dringlichkeit: Unternehmen mit GitHub Enterprise Server sollten unverzüglich auf die empfohlenen Versionen aktualisieren, um DSGVO-Konformität und Datensicherheit zu gewährleisten. Verstöße gegen Sicherheitsmaßnahmen können zu erheblichen Bußgeldern führen. Gleichzeitig zeigt dieser Fall ein fundamentales Designproblem in Systemen mit mehreren Services, die über gemeinsame interne Protokolle kommunizieren – eine Erkenntnis, die über GitHub hinausgeht.
