Sicherheitslücke in OS Comerce

  • Hallo zusammen

    Folgender Hinweis erreicht mich heute morgen aber ich denke die meisten wissen das eh schon...


    http://t3n.de/news/os-commer…tslucke-323733/


    Meine Fragen an das Team sind nun.

    1. Wie und wo erkenne ich eine solche Infektion bei eurem Produkt ?

    2. Wie wird der Schadcode restlos aus dem Shopsystem entfernt ?

    3: Wann ist mit einem Security Patch der weiteren Befall verhindert von euch zu rechnen ?


    Besorgte Grüße

    Martin

  • Hallo Martin,

    ja mir würde es auch interressieren, scheint rafiniert zu sein.
    Im allg. werden solche eploit durch xss mittels iframe injection gemacht...vielleicht lässt auch einer der Formulare etwas duchsicken.
    Ich glaube nicht an einer SQL injection, da sonst eher DB tabelle geklaut wären...

    Aber an unsere stelle würde ich JETZT SOFORT einen Backup machen und die Seite beobachten...
    Nicht vergessen...http://www.plus.de war über 10 Tage offline wegen so eine Geschichte...

    Julien.

  • Hallo julien,

    ich halte das für eine substanzielle Frage ... der hier gezeigte Hack des Shops und die angebliche Anzahl der infizierten Shops macht mir sehr starke Bedenken.
    In wie weit könnte da ein Shop Betreiber evl. haftbar gemacht werden wenn er ja nachweislich von der Infektion Kenntnis hatte.... ?
    Was kann da auf die Shopbetreiber und dann letztendlich auch auf den Softwarehersteller zukommen... ????

    Und was mir nicht schmeckt ist die fehlende Antwort auf meine konkreten Fragen die ich hiermit zu wiederholten male stelle. :(
    Irgendwie stelle ich mir bei einem solch wichtigen Thema einen bezahlten Plussupport doch etwas anders vor.

    MfG.
    Martin

  • Hallo Martin,

    Hmm..ich bin kein Anwalt aber ich denke mir dass als "für den Inhalt Verantwortlichen" und "Inhaber" im Sinne des Gesetz eine Haftung von der Seite des Shopsbetreiber entsteht.
    Weil im Umkehrschluss Du eine Malwareseite bauen könntest, die Leute mit attraktive Angeboten locken könntest und dafür nicht haftbar wärest?
    Das glaube ich nicht.

    Da der Shop unter GPL steht und wenn man die Lizenz liest steht da irgendwie dass für nichts garantiert wird auch nicht die Funktionalität, glaube ich dass die Jungs aus der Haftung raus sind.
    Als Service Partner und im Geschäftsinn sollte aber eine Hilfe deren Seite sicher nicht fehlen.

    Jetzt aber zum Thema Sicherheit von SEO, auch da bin ich kein Expert (leider) aber innerhalb weniger Minuten sind mir schon XSS Lücken aufgefallen (warum habe ich nie davor geforscht?? keine Ahnung.)

    Aber einer der Schwachstellen mMn ist die xtc_update_whos_online.inc.php
    Es werden die Variablen

    Code
    $wo_referer = $_SERVER['HTTP_REFERER'];
    $useragent_referer = $_SERVER['HTTP_USER_AGENT'];

    Direkt in der DB geschrieben ohne wenn und aber...und das ist nicht good.


    EInschleusen von JS code durch HTTP referer:
    In FF folgende Plugin downloaden und installieren: Modify Headers v0.7.0.2
    Dann den referer in zB.

    Code
    '"()&%1<ScRiPt >prompt(928833)</ScRiPt>


    ändern,
    dann auf zB. die 404.php Seite deines Shop gehen und dann..siehst Du wie hier den JS Code "injektiert" wurde.
    Es ist mir klar dass dies ein harmlose Code ist und dass man sicher damit nichts anstellen kann..(nur wenn man will vielleicht..)
    ABER

    es wird auch ein SQL Fehler ausgespuckt und dann könnte man es als Angriffmöglichkeit nehmen um weitere Unfug zu betreiben.

    Es ist sicher nicht die einziege Möglichkeit einzusteigen und wenn man die steigende Zahl der Infirzierte Shops seiten sieht..können wir auf einem baldigen Fix hoffen.

    Übrigens so wie ich gelesen habe sind auch die domains die die Schadcode geschickt haben gesperrt worden...also ein bisschen ruhe bis zum nächsten Mirror haben wir noch.

    Julien.

    Einmal editiert, zuletzt von julien (3. August 2011 um 11:54)

  • Hallo,

    noch mehr Info:

    habe glaube ich die 2 von oben schliessen können (bitte aber testen)

    Code
    if($aktuelle_datei)
    		$wo_last_page_url = $aktuelle_datei;
    	else
        	$wo_last_page_url = addslashes(getenv('REQUEST_URI'));
    
    	$wo_referer = $_SERVER['HTTP_REFERER'];
    	$useragent_referer = $_SERVER['HTTP_USER_AGENT'];

    mit

    Code
    // FIX XSS SCRIPTING ATTACKING REFERER & USER AGENT
    if($aktuelle_datei)
    		$wo_last_page_url = $aktuelle_datei;
    	else
    $wo_last_page_url = addslashes(fix_xss_attack(getenv('REQUEST_URI')));
    
    
    $wo_referer = fix_xss_attack($_SERVER['HTTP_REFERER']);
    $useragent_referer = fix_xss_attack($_SERVER['HTTP_USER_AGENT']);

    Dann unten eine Funktion addieren:

    Code
    function fix_xss_attack ($url){
      $urlregex = "^(https?|ftp)\:\/\/([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?\$";
      $url_fix = eregi($urlregex, $url);
        if ($url!=$url_fix){
        $url_fix = "ALERT-POSSIBLE-XSS-ATTACK";
        }
      return $url_fix;
    }

    admin, bitee testen aber es sollte funktionieren.

    Dann bleibt nur noch das parsen von $_GET values in den String und XSS sollte mMn geschlossen sein.

    Julien

  • Hallo Julien,

    danke für deine Antwort ...

    Zieht sich der Fehler auch durch das (kommerzielle)SEO Template?

    Wenn ja sehe ich die Jungs hier in der Haftung (möglicher weise sogar im vollen Umfang, da sie dann die einzig greifbaren dabei sind... :rolleyes:),
    da es sich dann auch um ihr nicht unter GPL stehendes kommerzielles Produkt Handelt.
    Hier gilt es Schaden von der Kundschaft und auch vom Programmiererteam abzuwenden, und besser es wird hier im kleineren Kreis angesprochen als komplett öffentlich....
    Mir geht es dabei um die Sicherheit der Shopbetreiber und damit auch letztendlich dann auch um meine eigene.
    Es gilt das Shopsystem möglichst sicher zu machen was ja dann auch wieder dem Programiererteam einen Marktvorteil bringen wird.

    Sollte das Template nicht betroffen sein dann ist das mit der Haftung der Programmierer bestimmt strittiger, ist aber nicht gänzlich auszuschließen.
    (Und das würden dann warscheinlich ganz andere zur Disposition stellen als wir hier...)

    Wenn wie du schreibst dir diese Lücken schon nach wenigen Minuten aufgefallen sind warum sind die dann dem Programmiererteam hier noch nicht aufgefallen?

    MfG.
    Martin

    PS:Ich bin mal gespannt wie lange es noch dauert bis man sich endlich diesem sensiblem Thema annimmt...:(

  • Hmm..so viel ich sehen kann, sind diese Lücken im core des Shops, also weit von der Templates entfernt..
    Aber ich glaube wirklich gelesen zu haben in den AGBs dass der Shop as-is angeboten wird, lediglich für den SupportForum-Zugang, also nicht den Support! ein Geldbetrag gefragt wird. Aber ich bin kein Anwalt und das durchLesen 1000 Software AGB ist nicht bei mir wirklich synonym für Spass :)

    Wieso ich darauf komme...weil ich eine Genie bin?
    :)
    Nein, weil ich auf meine Lokale Umgebung dieses Tool laufen gelassen habe.
    Acunetix Web Vulnerability Scanner in der Free Edition (checkt nur die XSS Exploits)

    Und der nach dem ersten durchgang ca. 130 Lücken entdeckt hat: $_SERVER['REQUEST_URI'], $_SERVER['HTTP_REFERER'],$_SERVER['HTTP_USER_AGENT'].
    Dann habe ich selbst getestet..und festgestellt dass es stimmt..
    Nach der Anpassung der xtc_update_whos_online.inc.php sind es leider nur noch 60...

    Aber immerhin die Tür steht nicht ganz weit offen.

    Letzter Login des Admin ist 28.07...vielleicht sind sie alle in Urlaub.
    Ab heute ich auch.

    julien.

  • Hallo Julien

    na ja was den unter GPL stehenden Teil angeht gebe ich dir ja schon ziemlich Recht aber das Template steht unter Copyright und ist Bestandteil des kommerziellen Angebotes
    (So wurde ich seitens der Programmierer in einem etwas anders gearteten Zusammenhang drauf hingewiesen).
    Und da greift mMn dann schon durchaus die Produkthaftung.

    Das das Team in Urlaub ist kann gut möglich sein, aber wenn ich den Support als Vertragsgegenstand nehme dann ist das gelinde gesagt stark Verbesserungswürdig
    und zumindest beim Standardsupport war der Admin gestern (01.08.2011 10:05) anwesend.
    Es geht ja nicht an das dann bei solch wichtigen Gegebenheiten kein Mensch den Support übernimmt. Was ist denn wenn ich nun viel Kunden habe die
    durch diese Verwundbarkeit infiziert worden sind und die mir die Rechnungen ihres IT-Dienstleisters in Rechnung stellen wollen....
    Von dem daraus resultierenden Imageschaden abgesehen treibt das einen Existenzgründer geradewegs in die Schieflage.

    Mit sehr besorgten Grüßen

    Martin

  • Hallo ihr beiden, ich muß euch absolut recht geben. Überhaupt keine Reaktion auf dieses Brisante Thema geht auch über meinen Horizont.

    Juergen

  • Hallo Jürgen,

    es ist gut festzustellen das nicht nur wir durch diese Zurückhaltung etwas irritiert sind.
    Sicherlich mag es Ursachen dafür geben, aber das ist bei einem bezahlten Support so halt nicht in Ordnung und muss dringend verbessert werden.

    MfG.
    Martin

  • Wir haben das Thema schon im Blick und arbeiten an der Lösung. Wobei anzumerken ist, die betroffenen Shop basieren auf osCommerce! die Lücke wurde im November schon von osCommerce geschlossen! Das xt:Commerce 3 Shops betroffen sind und deren Ableger ist bisher NICHT bekannt!

    <p>Wir geben nur Anregungen und Hilfestellung auf Basis unserer Erfahrung, keine Rechtshilfe!<br>\m/('_')\m/</p>

  • Statement:
    Nach nochmaliger Analyse des ganzen Vorfalles hier noch einmal eine Zusammenfassung aus unserer Sicht:

    1. osCommerce ist über eine Schwachstelle angreifbar, die bereits seit 2 jahren gefixt ist. (letztes update war November 2010!) Das Problem liegt im ungeschützten Adminbereich. Die Problematik stellt sich bei commerce:SEO + xt:Commerce 3 nicht! Hier ist der Adminbereich geschützt. Bei xt:Commerce 3 gab es diverse Schwachstellen, die ALLE in commerce:SEO bereits seit langen behoben sind.
    2. commerce:SEO Schutz eingebaut: in der application_top.php werden potenzielle SQL Injections abgefangen. Wir haben das mit dem Header manipulieren nachstellen können, allerdings werden hier keine Daten in die DB geschrieben. Die Auswirkungen bleiben also lokal auf den Rechner beschränkt.
    3. Acunetix Web Vulnerability Scanner 7 Test. Ja da kommen auch Meldungen, allerdings bleiben die auch, ebenso wie die Modifikation des Headers, lokal auf den Rechner beschränkt.

    Was kann man tun:

    Erweiterung der .htaccess
    Suche: RewriteEngine On

    füge danach folgendes ein:


    Das kommt zwar von Joomla, ist aber allgemein ein wirksamer Grundschutz vor Scripten.

    Die SQL Fehlermeldung, die dabei kommt, kann (sollte?) man eventuell reduzieren, damit keine weitere Angriffsfläche entsteht:

    Suche Datei: xtc_db_error.inc.php

    Suche darin folgenden Code:

    Code
    // handling an sql error
                echo "<b>SQL Fehler</b> [$errno] " . SQLMESSAGE . "<br /><br />\n\n";
                echo "<b>Query:</b> " . SQLQUERY . "<br /><br />\n\n";
                echo "Beim Aufruf der Datei <em>" . SQLERRORFILE . "</em> ";
                echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br /><br />\n\n";

    Ändere in:

    Code
    // handling an sql error
                if ($_SESSION['customers_status']['customers_status_id'] == 0) {
                    echo "<b>SQL Fehler</b> [$errno] " . SQLMESSAGE . "<br /><br />\n\n";
                    echo "<b>Query:</b> " . SQLQUERY . "<br /><br />\n\n";
                    echo "Beim Aufruf der Datei <em>" . SQLERRORFILE . "</em> ";
                    echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br /><br />\n\n";
                }

    und:

    Code
    echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
                    echo "  Fatal error on line $errline in file $errfile";
                    echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";

    gegen:

    Code
    if ($_SESSION['customers_status']['customers_status_id'] == 0) {
                    echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
                    echo "  Fatal error on line $errline in file $errfile";
                    echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
                }

    Somit wird nur noch der Admin berechtigt, SQL Fehlermeldungen zu sehen. Ich halte diese Variante für sinnvoll, zumal der Admin trotzdem in der Lage ist, Fehler zu analysieren.

    Grundlegend verfalle ich nicht sofort in Panik bei solchen Vorkommnissen und behalte einen kühlen Kopf. Da ich regelmäßig heise lese, bin ich stets über aktuelle IT-Ereignisse im Bilde.
    Ich halte nicht viel davon, Sofort Panik zu verbreiten, die sich im Nachgang oft als reine luftblase raus stellt (wie damals oft bei ecomb...). Das verunsichert die Leute und verleitet viele zu Schnellschussreaktionen.
    commerce:SEO v2.1 wurde mit diversen Security Scannern mehrfach beackert und hierbei keine relevanten Probleme fest gestellt. Wir werden aber am Ball bleiben und Bei Bedarf Fixes liefern.

    Die aufgeführten Fixes sind im QF3 bereits enthalten. ACHTUNG, dabei wird die .htaccess mitgeliefert!!! Wer da schon Änderungen gemacht hat, bitte VORHER vergleichen!!! Es wurde der Sec-Fix eingebaut, aber auch das Caching noch etwas verbessert.

    <p>Wir geben nur Anregungen und Hilfestellung auf Basis unserer Erfahrung, keine Rechtshilfe!<br>\m/('_')\m/</p>

  • Yep abber besser nicht zu unruhig.

    Gesundheit geht doch vor ;)

    Und in Forum gibt es dann schnell Panik.
    ( ist naturlich nicht gut )
    Dass teil von Julien ist teils dafür einer lösung aber dann wirkt also den Statistik nicht . ( bei uns in jedenfalls sehe post oben)

  • Hallo Admin,

    schön zu lesen das die Probleme bereits gefixt waren oder zumindest teilweise gefixt sind.
    Ein zeitnahes beantworten meiner Fragen hatte das entstehen dieser "Luftblase" sicherlich im Vorfeld schon gar nicht entstehen lassen.
    Und letztendlich bestehen ja immerhin Verwundbarkeiten die ihr jetzt erst mit QF3 beheben werdet ... Also war das ganze ja wohl
    doch nicht so eine "Luftblase" sondern durchaus eine reale Gegebenheit. ;)

    Gruß
    Martin

  • Hallo lasermodelle, mit Luftblase meine ich nicht diesen thread hier. Ich meine das bezogen auf andere Foren, die gerne mal die Leute in Panik versetzen und dann bricht das Große hektische Treiben aus und es gehen mehr Shops dabei kaputt, als überhaupt jemand gehackt wird :)
    Wie mann aber fast jeden Tag bei heise nachlesen kann, werden trotz alledem genügen Webseiten zur Zeit gehackt und das Thema ist auch für uns ein hoch brisanntes.
    Das kommt natürlich auch immer kurz vorm Urlaub, wo eh schon die Luft brennt.
    Ich teste noch ein wenig am QF3 und weitere potenzielle Verbesserungen, so dass das QF3 noch heute Abend kommen wird.
    Auch im Urlaub werde ich einen Blick auf alles haben, allerdings können Antworten, die nicht wirklich eine hohe Prio haben, etwas auf sich warten lassen.
    Ich habe im letzten halben Jahr den Shop fast komlett umgekrempelt und von vielen vielen Fehlern befreit, die noch in der Vorgänger Version drin waren. Jetzt brauche ich aber auch mal eine Pause um wieder Energie zu tanken :-))
    Euch erst mal eine schöne Zeit. In 14 Tagen sind wir dann auch wieder im Dienst.

    <p>Wir geben nur Anregungen und Hilfestellung auf Basis unserer Erfahrung, keine Rechtshilfe!<br>\m/('_')\m/</p>

  • Hallo Admin,

    ahh so, ja dann ... ;)

    Sorry ich trage durch meinen vorherigen Beruf bedingtes extremes Security Bewusstsein mit mir herum das bei solchen Dingen immer zu Tage tritt.
    Und da hieß es "No response is a fucking response" ... ;) ;) ;)

    Und mein Ansinnen ist hier eigentlich etwas positives beisteuern das zwar nicht immer bequem sein könnte, aber zumindest konstruktiv (so hoffe ich doch zumindest).
    Den Urlaub hast du dir sicherlich gut verdient und wenn du in der Zeit nict da bist so denke ich ist das dann für jeden Fragenden nachvollziehbar.
    Und vielleicht kann ja in der Zeit der andere Admin dann ein Auge auf die wichtigsten Gegebenheiten werfen... ;)

    So und nun einen schönen Urlaub und erhole dich gut ... du wirst hier dann noch gebraucht ... :)

    MfG
    Martin