- 25.2. 13:00 doplněna reakce autora na opatření Alza.cz v závěru textu
- 11:30 doplněna nezkrácená reakce Alza.cz v závěru textu
Disclaimer: Budu názorně předvádět krok za krokem, jak ukrást cizí účet. V žádném případě to ale neznamená, že byste postup měli opakovat, protože by to byl trestný čin – to, že někdo nechá otevřené hlavní dveře od domu, ještě neznamená, že si z něj můžete odnést televizi. V tomto postupu dělám simulaci na svém vlastním účtu, takže nikdo nepřišel k újmě.
Následující postup není žádná geniálně objevená bezpečnostní díra. Každý, kdo se jen trochu pohybuje v IT, ví, že to jde velmi snadno provést. Sám jsem si s tím hrál už před deseti lety, takže to rozhodně není nic nového. Ale přestože je to tak jednoduché a známé, tak si s tím evidentně nikdo neláme hlavu. Pojďme si proto ukázat, jak lze nakupovat zadarmo.
Text původně vyšel na blogu Souki.cz, Lupa jej přebírá se svolením autora. Požádali jsme o vyjádření i Alza.cz – e-shop slíbil, že svůj komentář dodá během dnešního dne, poté jej do textu doplníme.
Co je potřeba
Zvolíme ten úplně nejjednodušší postup – odchytneme si údaje o uživatelském účtu z wifi. K tomu potřebujeme:
- notebook
- aplikaci Wireshark
- prohlížeč
- židličku
Stačí se posadit poblíž pobočky Alzy, zapnout Wireshark a počkat, až si někdo na telefonu zkontroluje číslo objednávky před vyzvednutím. Alza nám to ještě dost usnadňuje, protože na pobočkách nabízí nezabezpečenou wifi. Kdyby byla zabezpečená, tak by to ale také nic neřešilo – jen by byl postup o pár bodů delší.
Každá wifi je veřejná
Víte, jak funguje wifi? Když chcete jít na web Alza.cz přes telefon, tak se tento požadavek pošle do všech směrů do vzdálenosti zhruba 100 metrů. Pokud v té vzdálenosti byla wifi krabička, tak požadavek zpracuje a odpověď pošle také do všech směrů do vzdálenosti zhruba 200 metrů. To znamená, že se stačí postavit někam poblíž a tuto komunikaci můžete bez obtíží zachytávat. (U zabezpečené wifi je to o trochu složitější, ale v principu prakticky stejné). Protože to není nic nového, existují na to už aplikace, které udělají všechnu těžkou práci za vás. Asi nejznámější je Wireshark.
Wireshark stačí zapnout, zvolit rozhraní (vaši wifi kartu), vybrat režim „monitor“ a spustit záznam. V tomto režimu bude zachytávat veškerou komunikaci se všemi wifi sítěmi, které jsou v dosahu.
Po zapnutí je okamžitě vidět, jak je živo. Stačí ale nastavit filtr a hned vidím požadavek na načtení hlavní strany Alza.cz.
Požadavek rozbalím, abych viděl hlavičky, a máme výherce:
Na obrázku je vyznačený řetězec, který nás celou dobu zajímal – je to session cookie, která identifikuje zákazníka.
HTTP je nebezpečné
Problémem HTTP protokolu je, že je bezstavový. Každý požadavek je zcela nezávislý na tom předchozím. Když se v e-shopu přihlásíte, tak to e-shop zpracuje, ale při přechodu na další stránku už zase nemá zdání, kdo jste. Řeší se to přes session cookie – e-shop vás při přihlášení ověří, vrátí vám cookie (ten dlouhý řetězec z obrázku) a prohlížeč ho bude posílat při každém dalším požadavku. Můžete si to představit třeba jako průkazku.
My jsme ale cookie zachytili, takže ji teď stačí předložit e-shopu a ten nemá šanci zjistit, že s ním najednou mluví někdo jiný. Můžeme mít dokonce i stejnou IP adresu jako skutečný zákazník. Stačí nám tedy otevřít si prohlížeč, jít na web Alza.cz a do adresního řádku napsat toto:
javascript:document.cookie='UIDX=TPq+CGELjpNieHkotP3YYCkXbk0gREm6aGLkx+aEgHg=; expires=Fri, 3 Aug 2030 20:47:11 UTC; path=/'
To je celé. Stačí znovu načíst stránku a jsem přihlášený na cizí účet (můžete to také zkusit a načte se vám můj testovací účet). Všimněte si, že jsem vůbec nepotřeboval odchytávat heslo. Takže kdyby Alza.cz hesla při přihlášení šifrovala (částečně to dělá), tak je to stejně úplně k ničemu.
Nakupujeme zadarmo
Máme cizí účet. Paráda! Co teď s ním? Asi nejzávažnějším bezpečnostním problémem je, že si Alza defaultně ukládá platební karty. Stačí tedy udělat objednávku s osobním odběrem, zvolit uloženou kartu a tradá – je nakoupeno. Žádné heslo, žádné trojčíslí z karty, žádné šifrování. Jediné omezení je limit platební karty.
Mimochodem právě proto v poslední době přidávají banky povinnost ověřit platbu kartou přes SMS – chybějící zabezpečení obchodu tak zachraňuje banka.
Nakupujeme z kreditu
Každý účet sice nemá uloženou kartu, ale to vychytralého zloděje nezastaví. Alza má kreditový systém. Je určený na dárkové poukazy a podobně, ale sbírá také například peníze z platebních terminálů. Při osobním odběru vám terminál vždy nabídne, jestli drobné chcete připsat na účet místo vrácení. Kredity jdou navíc převádět mezi účty. Kdyby někdo automatizoval vykrádání kreditů (nebylo by to nijak složité), tak by mohl postupně tyto drobné sbírat. Nikdo si nevšimne chybějících 50 Kč.
Zneužíváme informace
Platební karty nebo kredity nemusí být v každém e-shopu. Rozhodně to ale neznamená, že bez těchto funkcí není co zneužít. Po přihlášení do cizího účtu totiž získáváme spoustu informací – adresu, telefon, email, bankovní účet, historii objednávek. Z toho pak jdou odvodit další informace jako například profily na sociálních sítích a podobně.
Když někomu zatelefonujete, představíte se jako banka a budete chtít číslo karty, spousta lidí se nachytá. Vaše šance se ale dost výrazně zvýší, pokud budete přesně vědět, že dotyčný byl včera v 15:42 na pobočce, budete znát jeho login, číslo faktury atd.
Případně to lze vzít z druhé strany. Víte, že si dotyčný právě koupil novou plazmovou televizi, a víte, kde bydlí. V případě Alzy dokonce můžete zjistit, jaký model bezpečnostního systému si dříve koupil (dobře, to už by byla asi vážně velká klika). Zajímavé na tom je, že k takové televizi máte rovnou i fakturu a záruční list. Dokonce si můžete záruku i prodloužit :) Nebo ji vrátit Alze do 14ti dnů a dostat plnou cenu.
Nechci tu dávat více příkladů trestné činnosti, ale tyto informace můžou být cennější než uložená karta. Opravdu to nejde podceňovat.
Omezení
Výše popsaný postup má dvě velká omezení:
- oběť se musí připojit na wifi
- oběť si musí na telefonu otevřít web Alzy
Tím se samozřejmě znatelně snižují šance na úspěch a asi by nestačilo na židličce před pobočkou sedět pět minut. Obou omezení se lze ale poměrně snadno zbavit – telefon můžete donutit, aby wifi využil, aniž by to oběť věděla. Stačí jen drobná úprava postupu a zbavíte se nutnosti navštívení konkrétního webu. Případně místo sezení na židličce naprogramovat Raspberry Pi a jen ji strategicky umístit.
Vylepšenou verzi si ale nechám zase třeba na jindy. Chtěl jsem vám hlavně ukázat, jak strašně jednoduché je takto ukrást účet. A znovu opakuji, že to není problém specifický pro Alzu. Naprosto identický postup lze použít pro jakýkoliv e-shop, který nemá před adresou zelený zámeček.
@spazef0rze Dobrý den, nevidím důvod, proč bychom to měli dělat. Žádné citlivé údaje na webu nemáme - čísla kreditek, rodné nebo čísla OP...
— KASA.cz (@KASAcz) 17. Prosinec 2014
Tento článek možná vypadá dlouze, ale praktická realizace je otázkou několika kliknutí.
Zabezpečujte!
Už jsem tu popisoval, že https je výrazně rychlejší, že je to investice pár korun a tentokrát, že je naprosto nutné. Už uvažujete o nasazení https? :)
P.S: Tento článek suším už skoro tři měsíce. Alza totiž v prosinci začala řešit https, tak jsem chtěl počkat na dokončení. Jenže Alza zřejmě úplně nepochopila podstatu problému – v uživatelském účtu používá https, ale kdekoliv jinde z něj naopak přesměrovává na http. Takže je tam https naprosto k ničemu a nepomůže vám ani HTTPS Everywhere.
P.P.S.: Pokud https právě řešíte a chcete to provést zcela správně, podívejte se na tento článek od Filipa Procházky.
Reakce Alza.cz (doplněno v 11:30)
O vyjádření k popisovaným problémům jsme ještě před publikováním textu požádali Alza.cz. Mluvčí Šárka Jakoubková slíbila, že se e-shop vyjádří během dnešního dne, a slib splnila. Její vyjádření publikujeme v plném rozsahu:
Během včerejšího dne jsme nasadili novou verzi webu, kterou jsme připravovali delší dobu, a která řeší popsaný problém. Přihlášení do uživatelského profilu a nákup tak již probíhá šifrovanou cestou. Šifrovaný web (HTTPS) využíváme a budeme využívat pro sekce Moje Alza, nákupní košík a přihlašovací dialog, kde probíhají zásadní operace s uživatelskými účty. Navíc máme zavedena další bezpečnostní opatření, jako například ověření totožnosti kupujícího při nákupu placeném kartou.
Doplněno 25.2. 13:00 – Alza si eshop zabezpečovat neplánuje, reaguje autor kritického článku Petr Soukup na oznámení Alzy o údajném zabezpečení e-shopu.