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...
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:
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:
Kein Photoshop: Die Flasche wurde so von mir bestellt und bezahlt und dann auch geliefert.
Der Exploit im Video:
https://www.youtube.com/watch?v=TvTMYIihJao
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!