Cola-Hack: Sicherheitslücke auf meinecoke.de

Es wäre doch lustig, wenn man nicht nur langweilige Vornamen auf Coca-Cola-Flaschen drucken lassen könnte, sondern auch mal sowas wie „Pepsi“. Bei meinecoke.de geht das eigentlich nicht, ich hab es aber trotzdem ganz offiziell gemacht.

Personalisierte Gegenstände sind in Mode, und so dachte sich vermutlich auch Coca Cola, man müsste doch einen Service bereitstellen, mit dem ein jeder seine individuelle Colaflasche erstellen kann. So wurde also meinecoke.de erschaffen, ein Onlineshop, der es dem User erlaubt, ein Colaflaschen-Etikett mit seinem Namen zu bedrucken. Geliefert wird dann eine Originalflasche komplett mit fertigem Etikett.

Nun fand ich, dass Vornamen eher langweilig sind – der Name einer konkurrierenden Cola-Firma würde sich doch deutlich besser machen! „Fritz“ für Fritz-Kola wäre nicht die Herausforderung gewesen, handelt es sich doch um einen regulären Vornamen. Viel besser käme aber „Pepsi“…

Drink

Wie immer empfehle ich nach alter Fravia-Tradition einen Drink zu diesem Hack:
Tja, Coca Cola wäre etwas einfallslos, Pepsi auch. Daher empfehle ich entweder eine schöne River-Cola oder einen Kasten Fanta.

Technik

Ca. 30.000 Namen sind erlaubt, wirklich kreativ kann man damit aber nicht werden...
Ca. 30.000 Namen sind erlaubt, wirklich kreativ kann man damit aber nicht werden…

meinecoke.de arbeitet beim Bestellprozess mit einem clientseitigen Whitelist-Check, der den eingegebenen Namen in einer vorhandenen, etwa 30.000 Einträge starken Liste sucht und nur dann zum Bestellen freigibt, wenn er dort gefunden wurde. In dieser Liste findet sich „Pepsi“ offenbar nicht wieder, weshalb ein reguläres Bestellen abgelehnt wird:

cola11

Nun ist es sicherheitstechnisch keine gute Idee, Benutzereingaben nur im Webbrowser zu überprüfen, dann an den Server zur Verarbeitung zu schicken und dort davon auszugehen, dass die Datenintegrität zwischendurch nicht in Mitleidenschaft gezogen wurde. Stattdessen muss auch serverseitig sichergestellt werden, dass dort nur validierte Daten verarbeitet werden. Beim Hinzufügen einer Bestellung zum Warenkorb sollte also noch einmal der Wunschname mit der vorhandenen Whitelist abgeglichen werden.

Dies geschieht bei meinecoke.de offenbar nicht wirklich, und so war es mir möglich, den POST-Request zum Hinzufügen einer Bestellung zum Warenkorb beliebig zu verändern und an den Server zu schicken. Im Falle von „Pepsi“ konnte ich danach den Kaufprozess komplett durchführen und nach ca. 2 Wochen hielt ich sie in den Händen:

IMG_7588
Kein Photoshop: Die Flasche wurde so von mir bestellt und bezahlt und dann auch geliefert.

Anstatt eines Serverchecks könnte man auch auf eine Endkontrolle durch einen Menschen im Herstellungsprozess setzen, aber meine Vermutung hat sich bestätigt, dass das alles so automatisiert abläuft, dass kein Blick mehr auf die Flasche geworfen wird, bevor sie in den Versand geht.

Ich hatte dann auch noch andere schöne Ideen für einen Aufdruck:

Diese ließen sich zwar in den Warenkorb stecken, aber beim Bestellen hängte sich der Prozess irgendwie auf. Meine Annahme ist daher, dass es im System zwar schon noch eine weitere Prüfung gibt, diese aber nicht zuverlässig funktioniert. Auf jeden Fall scheint es so zu sein, dass der Aufdruck maximal 17 Zeichen lang sein und keine Umlaute enthalten darf.

Möglicherweise kommt zusätzlich noch eine Blacklist zum Einsatz, wie schon vor längerer Zeit einmal berichtet wurde. Auf dieser findet sich „Pepsi“ offenbar nicht wieder, was ich merkwürdig finde, denn die Liste wird sicherlich schon ewig lange gepflegt und erweitert. Der Dienst wurde bereits 2013 gestartet.

Bei meinen Tests ergab sich noch eine weitere Schwachstelle: Es wäre aktuell möglich, auf einer fremden Website den Bestellprozess von nicht erwünschten Namen anzubieten und von außen in den Warenkorb zu schießen. Dies ist dem Umstand geschuldet, dass meinecoke.de keine Mechanismen gegen eine Cross-Site-Request-Forgery einsetzt. Es wäre allerdings mit ein paar Handgriffen möglich, hier einen Riegel vorzuschieben.

Responsible Disclosure

Dem Grundsatz der Responsible Disclosure folgend, hatte ich vor der Veröffentlichung dieses Posts meinecoke.de per Email auf die Sicherheitslücke hingewiesen und meine Hilfe bei der Behebung angeboten. Ich bekam dann zwar eine Rückmeldung, dass man jetzt an dem Problem arbeite, aber mehr auch nicht.

Ich gehe aktuell davon aus, dass der Fehler behoben ist. Wäre auch besser so, denn man könnte sicherlich auch unschönere Dinge drucken lassen als ich es tat. Mein Bestreben war und ist dabei jedenfalls, die Welt ein kleines bisschen sicherer zu machen…

Es geht auch richtig

Mit einem sehr ähnlichen Angebot ist aktuell auch Nutella auf dem Markt. Auch hier ist es möglich, personalisierte Etiketten zu bestellen. Eine kurze Prüfung zeigte allerdings, dass die eingegebenen Namen dort vernünftig überprüft werden.

History

25.04.2015: Personalisierte Flasche bei meinecoke.de bestellt.
08.05.2015: Lieferung erhalten; per Email meinecoke.de auf die Sicherheitslücke hingewiesen und meine Hilfe bei der Behebung angeboten.
12.05.2015: Veröffentlichung der Schwachstelle per Blog-Post.
12.05.2015: Heise Security berichtet.
13.05.2015: Lieferung der Zero-Variante.
18.05.2015: Lieferung der Zucker-Cola 😉 :

So sind Light- und Nicht-Light-Produkte besser auseinander zu halten!
So sind Light- und Nicht-Light-Produkte besser auseinander zu halten!

28 Gedanken zu „Cola-Hack: Sicherheitslücke auf meinecoke.de“

  1. Es wurde jetzt wohl eine Serverseitige Überprüfung eingeführt, denn Artikel die keinen Name als Aufdruck haben landen nun erst gar nicht mehr im Warenkorb.

    Hab das ganze mit deiner Methode getestet; Normale Namen zum Warenkorb hinzufügen funktioniert weiterhin.

  2. curl gibt es leider so einfach unter Windoof nicht, gibt es eine einfache Lösung dafür ?

  3. Ein Plugin namens „TamperData“ ermöglicht dasselbe für Firefox.
    @Autor: Bist übrigens nicht der Erste der die Lücke entdeckt hat 😉

  4. Jetzt bin ich sauer! Auf mich selbst.
    Ich hatte auch die Idee, habe sie aber wieder fallen lassen.
    Du hast es schön public gemacht und hast dafür ein paar Besucher mehr. 😀

    Coole Sache dennoch das du das getestet hast. 😉

  5. Es ist witzig, dass du von einer Sicherheitslücke sprichst, ohne das dadurch irgendwelche Sicherheit gefährdet ist oder gefährdet werden könnte, deshalb Meeeehhh!

    1. Natürlich ist es eine Sicherheitslücke, denn es war möglich, das System zu kompromittieren und es zu Dingen zu bewegen, die es nicht machen sollte. Wenn so etwas massiv ausgenutzt wird, schadet man auf jeden Fall dem Betreiber des Systems. Die Sicherheit des Unternehmens (und von Arbeitsplätzen) ist dann gefährdet.

      1. Wenn du mir erklärst, wie du damit das System kompromittierst, wäre ich überrascht. Inwiefern soll hier die Sicherheit gefährdet sein? Kann ich mit der Flasche dann das Netzwerk übernehmen oder Malware hochladen? Du meinst vielleicht, dass wenn jetzt jeder mit einem Pepsi-Cola Etikett herumlaufen würde, soso. Das kann man sich auch selber drucken, dazu braucht man die Webseite nicht.

        Gruß, Alex.

        1. Denk doch mal einen Schritt weiter… Was macht eine Malware? Sie schadet dem System und damit dem Betreiber des Systems. Sie richtet wirtschaftlichen Schaden an.
          Wenn sich jeder ganz offiziell „Hitler“ usw. auf Colaflaschen drucken und damit rumlaufen könnte, gäbe es einen großen Reputationsverlust für Coca Cola. Und damit ebenfalls wirtschaftlichen Schaden.
          Also ist es eine Sicherheitslücke, die da jetzt durch meine Hilfe gestopft wurde.

          1. Ein Imageschaden ist keine Sicherheitslücke. Da hast du hier andere nettere Sachen auf dem Blog. Ganz offiziell ist es auch nicht, sondern nur, wenn man die (doofe) clientseitige Inputvalidierung umgeht. Jeder kann sich „Hitler“ auf eine Flasche photoshoppen und damit herumlaufen. Ist das dann auch eine Sicherheitslücke? Ich weiß was du meinst, aber trotzdem halte ich es für den falschen Begriff, wenn man es auf die theoretische Sicherheit eines Markenimage bezieht. Dann ist jedes Kommentarfeld und jeder Drucker eine Sicherheitslücke. Das wäre mir doch etwas zu weit gefasst.

          2. Der Imageschaden entsteht durch die Sicherheitslücke und ist natürlich nicht selbst die Sicherheitslücke. Na, wie dem auch sei. Z.B. die Profis von Heise Security nennen das, was ich da ausgenutzt habe, doch auch so. Und Data Validation ist eine wichtige Disziplin in der Applikationssicherheit, und die war hier unzureichend implementiert.

  6. Anstelle es eine „Sicherheitslücke“ zu nennen, sollte lieber auf die Bezeichnung „Software-Bug“ zurückgegriffen werden. Auch halte ich die Aussage „[…] Die Sicherheit des Unternehmens (und von Arbeitsplätzen) ist dann gefährdet. […]“ für dezent übertrieben. #toldyouso

    1. Hier gehts nicht um den Begriff. Man kann das doch nennen wie man will, gerne auch Mokka-Kirsch. Wenn man in eine werbliche Aktivität derart eingreifen kann ist das ganz sicher (aus werblicher Sicht) gravierend. Sofern aus dieser Aktion eine virale Welle entsteht kann der Schaden durchaus beträchtlich sein, und zwar messbar, in Geld (Umsatz) und Reputationsverlust. Ich finde diesen Artikel hier prima, Danke dafür.

  7. Scheint nicht mehr zu gehen. Normale Namen kann ich per Curl noch hinzufügen. Aber sonst nichts mehr..

  8. Lustige Idee und wirklich gut gemacht.

    Nun eine frage? ist das noch möglich, ich schätze nicht, oder?
    habe nämlich eine bekannte, die auf ein eigenes Etikett gehofft hat, nur leider ist ihr name unter den 30.000 namen nicht vorhanden. Bekommt man das ganze nochmal so hin mit Windoof und als nicht ganz so gefuchster hacker?

    Grüßt euch

  9. Sehr cool 🙂

    Leider haben sie sich nochmal dran gesetzt, alles was nicht in der whitelist gelistet ist, kommt jetzt nicht mal mehr in den Warenkorb. Schade 🙂

  10. Erstaunlich wie solch große Firmen (CocaCola, Heinz,…) essentielle Dinge im Internet einfach vergessen bzw. aus Kostengründen einfach weglassen.

Kommentare sind geschlossen.