Worum geht es eigentlich?

Durch das Crawlen spezieller URLs (z.B. durch „Forced Browsing“), kann ein Angreifer die Datenbank des Shops zum überlaufen bringen und somit deren Funktionstüchtigkeit stoppen. Das nenn sich allgemein DoS(Denial of Service)-Angriff. Die einzige Vorbedingung: Im Shop-Admin ist eingestellt, dass leere Kategorien im Frontend angezeigt werden dürfen.

Woran erkenne ich, dass ich gehackt wurde?

Es gibt einige Symptome, die darauf hinweisen, dass ein Angriff stattgefunden hat:

  • Dein OXID eShop wird über die Zeit immer langsamer. Dabei ist der Zeitrahmen nicht konkret festgelegt: Es kann ein langsamer oder ein schneller Prozess sein.
  • Die Datenbank-Tabelle ‚oxseo‘ wird ungewöhnlich voll.
  • Meist benutzen Hosting-Provider sog. Quotas für die Datenbankgröße. Im Fall, dass diese Quota überläuft, wird der Hosting-Provider in aller Regel darüber informieren.

Was kann ein Angreifer ausrichten?

Ein Angreifer könnte eine DoS(Denial of Service)-Attacke gegen Dein System starten, bis es zusammenbricht.

Ein Angreifer kann nicht Zugriff auf Daten Deiner Kunden, Passwörter oder irgend einen Zugriff auf den Admin-Bereich erlangen. Ebenso kann kein Schadcode in das Dateisystem eingeschleust werden.

Was kann ich tun, wenn ich gehackt wurde?

Die Standardeinstellungen für Artikel pro Kategorieseite ist 10; falls Ihr diese Einstellung individuell geändert habt, rechnet bitte mit Eurem eigenen Wert.
Wir müssen zunächst die maximale Anzahl von Seiten pro Kategorie wissen: CountOfArticlesInShop / NumberOfArticlesPerCategoryPage

HInweis: Wir zählen alle Einträge in der Tabelle oxarticles, unabhängig von Varianten. Wir wollen den maximalen Wert herausbekommen:

select FLOOR((select count(*) from oxarticles where oxshopid = [shop_id]) / [number_of_articles_per_category_page] + 0.5) as max_single_cat_pages;

Beispiel:

select FLOOR((select count(*) from oxarticles where oxshopid = 1)/10 + 0.5) as max_single_cat_pages;

Die Paginierung sollte nicht höher als dieser Wert liegen.

Shopinstallation überprüfen

select oxshopid, count(*), oxtype, max(CAST(oxparams as unsigned)) from oxseo where (oxtype not in ('static', 'content', 'oxarticle')) and (oxparams != '') and (CAST(oxparams as unsigned) > [max_single_cat_pages]) group by oxshopid, oxtype;

Beispiel (wir erhielten 22 für max_single_cat_pages für die benutzten Testdaten):

select oxshopid, count(*), oxtype, max(CAST(oxparams as unsigned))  from oxseo where (oxtype not in ('static', 'content', 'oxarticle')) and (oxparams != '') and (CAST(oxparams as unsigned) > 22) group by oxshopid, oxtype;

Im Fall, Ihr findet eine große Anzahl von oxparam Werten, viel größer als die maximal erwartete Paginierung: Möglicherweise wurdet Ihr gehackt. Falls nicht, seid Ihr für’s erste sicher.

Hinweis: einige paginierte Seiten mit Seitennummern jenseits der erwarteten maximalen Paginierung könnten zufällig geeriert worden sein. Wir reden hier von sehr, sehr vielen Einträgen im Fall eines Angriffs.

Datenbank säubern

Hinweis: Du kannst keine wertvollen SEO-Informationen kaputt machen, paginierte Seiten werden bei Bedarf neu generiert.

delete from oxseo where (oxshopid = [shop_id]) and (oxseourl REGEXP '\/([0-9])*\/') and (oxtype not in ('static', 'content', 'oxarticle')) and (oxparams != '');

Beispiel:

delete from oxseo where (oxshopid = 1) and (oxseourl REGEXP '\/([0-9])*\/') and (oxtype not in ('static', 'content', 'oxarticle')) and (oxparams != '');

Wie kann die Sicherheitslücke gestopft werden?

  • Spiel den Hotfix für Deine OXID eShop Version ein, der im Security Bulletin 2017-002 zum Download angeboten wird, um künftige Angriffe zu verhindern.
  • Aktualisiere schnellstmöglich Deine OXID eShop Installation.

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?

Ja: Dieses Mal steht ein Hotfix für die OXID eShop Serien 4.7, 4.8, 4.9, 4.10, 5.0, 5.1, 5.2 und 5.3 zum Download im Security Bulletin 2017-002 bereit.

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 wie auch 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. Allerdings sind nicht viele Dateien der Kernapplikation betroffen. Für OXID eShop Versionen kleiner als 4.7 und 5.0 versucht bitte, die Dateien aus dem Hotfix in Eurer Installation zu benutzen oder schaut Euch die nötigen Änderungen an.

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

Leider ist ein serverseitiges Abfangen in dieser Konstellation nicht möglich. Anderenfalls hätten wir Rule-Sets für ModSecurity an unsere Hosting-Partner und ggf. auch andere Webhosting-Provider geliefert.

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.