Worum geht es eigentlich?

Ein Angreifer kann administrativen Zugriff auf den OXID eShop über das Shop-Frontend erlangen, indem er spezielle HTTP_POST oder HTTP_GET Anfragen auf die oxuser-Klasse sendet.

Woran erkenne ich, dass ich gehackt wurde?

Es gibt ein paar Symptome, die aufweisen könnten, dass Du kompromittiert wurdest:

Du kannst Dich nicht mehr einloggen und die Passwort-Zurücksetzen-Option funktioniert nicht mehr

Um Deinen Shop zu administrieren, benutzt Du üblicherweise den Admin-Account, der während der Setup-Routine eingetragen wurde. Obwohl Du zu 100% sicher bist, dass das Passwort stimmt, kannst Du Dich mit diesen Zugangsdaten nicht mehr in den Administrationsbereich einloggen. Auch wenn Du die Passwort-vergessen-Funktion im Frontend des Shops benutzt, wird Dir keine E-Mail (auch nicht in den Spam-Ordner) zugestellt.

Es gibt einen unbekannten Admin-Benutzer in meiner Datenbank

Es gibt einen Admin-Benutzer, dessen Name und E-Mail-Adresse Du nicht kennst. Du kannst das herausfinden, wenn Du diese SQL-Anweisung ausführst:

SELECT oxid, oxusername, oxcreate, oxtimestamp FROM oxuser WHERE oxrights='malladmin';

Example output:

example output different admin

Unterschiedliche systemrelevante Timestamps

Eigentlich sollten Erstellungs- und Registrierungsdatum des Admin-Benutzers gleich sein. Andernfalls könnte das ein Zeichen für einen kompromittierten Account darstellen. Führe folgende SQL-Abfrage aus, um Informationen darüber zu erhalten:

SELECT oxid, oxusername, oxcreate, oxregister FROM oxuser WHERE oxcreate != oxregister;

Example output:

example output timestamps differ

Was kann ein Angreifer ausrichten?

Der erfolgreiche Angreifer wird volle administrative Rechte eines regulären Shop-Admins bekommen, inklusive der Shop-Einstellungen, Produktdaten, Preise, Nachlässe etc. Aber er wird auch in der Lage sein, PHP-Code oder SQL-Abfragen auszuführen oder Schadcode in das Shop-Frontend einzuschleusen, Benutzerdaten zu erlangen inklusive der Passwörter und der SALT-Hashes selbst.

Was kann ich tun, wenn ich gehackt wurde?

Wir empfehlen dringend, alle der folgenden Initiativen zu ergreifen:

Wenden Sie alle Workarounds an

Führen Sie alle Workarounds durch, die im Security Bulletin 2016-001 vorgeschlagen wurden, um weitere Angriffe abzuwenden.

Daten- und Dateisicherung für weitere Nachforschungen

Legen Sie lokale Kopien Ihrer Daten und Dateien für weitere Nachforschungen an: Kopieren Sie den Anwendungscode inklusive Erweiterungen, der Log-Files (für Datenbankserver, Webserver, des Systems, PHP-Logs usw) und einen Datenbank-Dump. Laden Sie eine saubere Version des OXID eShop und aller benutzten Erweiterungen hoch. Prüfen Sie die Log-Dateien auf verdächtige Meldungen. Prüfen Sie den Anwendungscode und den der Erweiterungen auf Schadsoftware. Prüfen Sie Ihr System auf Backdoors. Bitte beachten Sie: Wenn Sie verschlüsselten Code im OXID eShop benutzen, wird Code Injection nicht funktionieren und stattdessen eine Fehlermeldung ausgeben.

Weiterführende Literatur:

  • https://blog.sucuri.net/2014/02/php-backdoors-hidden-with-clever-use-of-extract-function.html
  • https://aw-snap.info/articles/backdoor-examples.php
  • http://pentestmonkey.net/tools/web-shells/php-reverse-shell
  • https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet

Informieren Sie Ihre Kunden

Halten Sie Ihre Kunden dazu an, ihre Passwörter im Shop (und falls diese anderweitig benutzt werden auch dort) umgehend zu ändern.

Ändern Sie das reguläre Admin-Passwort:

UPDATE oxuser SET oxusername='###YOUR EMAIL HERE###', oxpassword='xxx' WHERE oxid='oxdefaultadmin';

Stoßen Sie danach den Passwort-zurücksetzen-Prozess im Frontend an.

Ändern Sie das SMTP-Passwort

Ändern Sie das SMTP-Passwort, falls es im Administrationsbereich gesetzt wurde.

Unautorisierte Änderungen rückgängig machen

Machen Sie unautorisierte Änderungen der Shop-Optionen (Nachlässe, Rabatt-Codes, …) rückgängig.

Wie kann die Sicherheitslücke gestopft werden?

  • Bentzen Sie alle Workarounds, die im Security Bulletin 2016-001 vorgeschlagen wurden, um weitere Angriffe zu vermeiden!
  • Aktualisieren Sie Ihre OXID eShop Installation schnellstmöglich!

Wie weit verbreitet ist das?

Wir wissen bisher von keinem Angriff, der diese Sicherheitslücke ausnutzt. Wir haben im Vorfeld Kunden, Partner, Benutzer und Freunde vorab über die Sicherheitslücke informiert, so dass sie Maßnahmen ergreifen konnten, bevor die Sicherheitslücke bekannt wurde.

Welche OXID eShop Versionen sind betroffen?

Alle OXID eShop Versionen sind ohne Ausnahme betroffen.

Welche OXID eShop Editionen sind betroffen?

Alle OXID eShop Editionen sind ohne Ausnahme betroffen.

Wird es einen Patch für nicht mehr unterstützte Versionen geben?

Wir wenden viel Arbeit auf, um reguläre Patches für alle unsere unterstützten Versionen anzubieten und all diese Patch Releases sind komplett rückwärtskompatibel. Ausserdem bieten wir Tools an, um von End-of-Live-Versionen auf unterstützte Versionen zu migrieren, ebenso kumulative Update-Pakete für die Aktualisierung eines beliebigen Patch-Releases auf die letzte Version.

Wir erwarten deshalb von Benutzern des OXID eShop die regelmässige Aktualisierung des Systems. Einen Patch für nicht mehr unterstützte Versionen wird es deshalb nicht geben. Allerdings sind nicht viele Dateien der Kernapplikation betroffen. Sie können versuchen, die Datei application/components/oxcmp_user.php aus dem 5.1/4.8 Patch Release Paket in Ihrer Installation zu benutzen, allerdings gibt es keine Garantie darauf, dass es funktioniert.

Können IDS/IPS-Systeme diesen Angriff blockieren oder verhindern?

Ja. Die von uns vorgeschlagenen Workarounds im Security Bulletin 2016-001 enthalten ein Beispiel-Rule-Seit für Web Application Firewalls wie z.B. ModSecurity.

Mildert ein SSL-Zertifikat die Angreifbarkeit?

Nein, allerdings sollten Sie immer ein SSL-Zertifikat benutzen, um andere Angriffe zu verhindern.

Wer hat diese Sicherheitslücke gefunden?

Die Sicherheitslücke wurde von OXID-Entwicklern selbst gefunden. Obwohl der OXID eShop bisher viele Security Audits passiert hat, konnte diese Schwachstelle bisher nicht entdeckt werden.

Wer koordiniert Antworten zu dieser Sicherheitslücke?

Das Security-Team der OXID eSales AG (security@oxid-esales.com).

Mehr Informationen darüber, wie mit Sicherheit allgemein umgegangen wird, finden Sie auf dieser Seite: https://oxidforge.org/en/Security