Gestern Abend entdeckte ich mit als erster, dass die aktuelle Version von Piwik kompromittiert wurde. Piwik ist eine sowohl bei unseren Kunden als auch bei uns beliebte Web Analyse Software - eine sehr gute Alternative zu Google Analytics.
Gestern versuche ich eine Piwik-Installation auf Version 1.9.2. upzudaten und bemerkte, dass nach dem Update die Oberfläche komplett kaputt war. Auf der Suche nach der Ursache fand ich sehr obskuren PHP-Quellcode im Seitenquelltext, der nicht geparsed worden war weil er aufgrund meiner Serverkonfiguration (Short-Tags aus) nicht ausgeführt wurde. Weil dies nun sehr zeitgleich mit meinem Update stattfand, ging ich der Sache auf den Grund:
In der /core/Loader.php fand ich dann am Ende der Datei zusätzlichen Code, der es Angreifern ermöglicht, beliebigen PHP-Code auf dem System auszuführen. Ebenfalls wird über stark obfuszierten Code die URL der Piwik-Installation an einen anderen Server übermittelt - wohl um eine funktionierende URL zu haben, unter der die Angriffe ausgeführt werden können. Der zusätzliche Code hat sich beim näheren Betrachten und "entschlüsseln" (er war Base64-encodiert und offenbar auch gzipt) als ausgewachsene Backdoor herausgestellt.
Er sammelt den angefragten HTTP-Host (aus $_SERVER['HTTP_HOST']) und die angefragte Request-URI. Diese Informationen werden als POST-Daten an den Server hxxp:// prostoivse.com/x.php gesendet. Beantwortet der die Anfrage positiv, wird im selben Verzeichnis eine Datei mit dem Namen "lic.log" angelegt, in der sich dann das Wort "piwik" befindet. Solange diese Datei existiert, werden keine Anfragen mehr an den besagten Server geschickt - vermutlich um die Last auf dem System so gering wie möglich zu halten:
Zusätzlich stellt diese Datei jedoch noch eine Backdoor bereit, mit der sich beliebiger PHP-Code aus der Ferne ausführen lässt: Wenn die (bekannte) URL vom Angreifer aufgerufen wird und die GET-Parameter "s" und "g" gesetzt sind, wird der in $_GET['g'] enthaltene Code durch preg_replace() mit dem /e-Modifikator ausgeführt.
Konstruiert man einen Regulären Ausdruck und beendet ihn mit "/e" wird erst der reguläre Ausdruck angewendet und das Ergebnis dann als PHP-Code ausgeführt - so ähnlich wie die Funktion eval() es auch macht.
Das kann man nutzen, um sich z.B. den Inhalt von htpasswd-Dateien anzuzeigen, aber natürlich auch um z.B. mit file_put_contents() eine eigene PHP-Datei irgendwo innerhalb des Webspaces (Schreibrechte vorausgesetzt) abzulegen und darin dann natürlich auch komplexeren Code auszuführen.
Informiert hatte ich die Piwik-Entwickler Montag Abend gegen 20:10 Uhr - sowie einige Online-Portale durch Foreneinträge. Mittlerweile hat z.B. Golem auch darüber berichtet "Backdoor in Piwik" - sogar mit Namensnennung :)
Auf der Piwik-Website gibt es zwischenzeitlich auch einen "offiziellen Security Report" in welchem der Vorfall genauer beschrieben ist. Der Piwik-Webserver wurde laut der Mitteilung durch eine Sicherheitslücke in einem Wordpress-Plugin kompromittiert. Dabei haben die Angreifer das ZIP-Archiv mit der aktuellen Piwik-Version geändert - wodurch die kompromittierte Version für einige Stunden vom 26.11.2012 von ca. 16:43 bis Mitternacht zum download stand.
Tätig werden brauchen Sie nur, wenn Sie Montag Abend im besagtem Zeitfenster die Piwik-Version runtergeladen und verwendet haben.
Das Beispiel zeigt ansonsten aber mal wieder, dass auch Software wie Wordpress, Joomla & Co sowie eingesetzte Plugins regelmäßig aktualisiert werden müssen. Dem lesenswerten Blog-Artikel "Sicherheit durch Updates" vom Björn ist dabei nichts zuzufügen.
Darüber hinaus ist Piwik eine wirklich sehr zu empfehlende Analyse-Software - aus meiner Sicht die derzeit beste Alternative zu Google Analytics.
27.01.2023
Kommentare
Seien Sie der/die Erste und schreiben Sie uns Ihren Kommentar zu diesem Artikel.