Pár praktických ukázek, ve kterých ukážu, proč se věnovat zabezpečení e-shopů a co se stane, když se na to vykašlete. A že když to budete řešit, až se když se něco bude dít, tak už může být pozdě.
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
Bezpečnost e-shopů (HTTPS, XSS, CSP)
1. Michal ŠpačekMichal Špaček www.michalspacek.czwww.michalspacek.cz @spazef0rze@spazef0rze
Nejbezpečnější e-shop je ten, který je zavřený. Ale zas moc nevydělává.
Nedávno jsem slyšel něco o tom, že kdosi navrhuje, aby o víkendu obchody
nebyly otevřené, tak třeba jednou dojde i na e-shopy a budou bezpečné aspoň
v sobotu a neděli. Původní slajdy tyto poznámky neobsahují.
2. V půlce září 2015 zveřejnili lidé z Twista výsledky studie Český košík roku, ve které
testovali Top 120 českých e-shopů. Mimo jiné zjistili, že 15 % e-shopů bylo zcela
zabezpečených pomocí HTTPS a dalších 13 % používalo HTTPS alespoň pro
přihlášení – ale to bohužel nestačí, jak uvidíme dále.
3. %
1. 4. 2016 jsem měření provedl znovu a na HTTPS běží celých 24 % e-shopů
zařazených do studie Český košík roku 2015, tedy 29 ze 120 obchodů. Nárůst z
15,8 % mě těší, ale pořád je to hodně, hodně, hodně, hodně, hodně, hodně málo.
Kolik e-shopů používá HTTPS alespoň pro ochranu přihlášení jsem nezkoumal.
4. Jen pro srovnání, Seznam na konci února 2016 zveřejnil statistiky nad vzorkem zhruba 700 000
českých titulních stránek (homepage) a jenom 1,23 % z nich používá HTTPS. To je fakt dost
málo, myslím si, že na HTTPS by měl být každý web, nehledě na to, jestli se k němu přihlašuji.
5. OVĚŘENÍ
&
ŠIFROVÁNÍ
HTTPS má na starosti dvě věci, ověření protistrany, tedy to, že data posílám tomu,
komu mám, a šifrování přenášených dat. Data tedy nemůže nikdo odposlechnout
ani změnit. Útočník by totiž po cestě ze serveru do prohlížeče návštěvníka mohl
změnit například přihlašovací formulář, aby se zadané jméno a heslo posílalo
někam jinam. Mohl by také vložit přihlašovací formulář někam kde běžně není, ale
uživatel by to nepoznal a přihlašovací údaje vyplnil.
6. CELÝ WEB
Pokud chcete web na HTTPS, a chtít byste měli, tak ho musíte mít na HTTPS celý,
jinak to není úplně vono. Když budete pomocí HTTPS chránit jen login formulář a z
něj odesílané jméno a heslo, tak pořád někdo může odposlechnout cookies, které
prohlížeč bude posílat na tu nezabezpečenou HTTP část webu. Mizera se pak díky
znalosti tzv. session cookie může za uživatele vydávat, aniž by znal jeho heslo.
7. NEZABEZPEČÍ
WEB!!!
HTTPS má dva úkoly (pomáhat a chránit), ale nezvládne už nic dalšího. HTTPS
neumí zabezpečit váš web, sorry. Zaručí jen to, že data, která váš web opustí
dojdou v nezměněné podobě do browseru, že do nich nikdo nestrčí reklamu
nebo odkaz na stažení viru a že posílaná nepůjde odposlechnout. To ale stačí.
8. NEZABEZPEČÍ
LIDI!!!
HTTPS dokonce nezabezpečí ani návštěvníky vašeho webu nebo e-shopu.
Nezaručí, že jim ten web nepošle něco zákeřného, nějaký vir nebo tak něco. HTTPS
zabezpečí jenom přenos dat mezi serverem a prohlížečem a je nutnou, ale ne
postačující podmínkou pro zabezpečení. Jsou i jiné závažné chyby, kterým by se
mělo věnovat trochu více pozornosti. O HTTPS se dozvíte více v mé jiné přednášce.
9. XSS
Cross Site Scripting
David Ross, Microsoft, 1999
Útok Cross-Site Scripting (XSS) byl poprvé popsán v roce 1999. Funguje na
principu zneužívání důvěry. Návštěvníci věří webům, které používají nebo
navštěvují a mizera této důvěry zneužije a návštěvníkům a jejich prohlížečům
něco nepěkného provede. I po 17 letech je XSS pořád velmi často používán.
10. XSS spočívá v tom, že útočník do stránky vloží JavaScript, který se poté spustí
návštěvníkovi v prohlížeči. Útok možná budete znát, nejčastěji se demonstruje jako
neškodné vypsání jedničky a vypadá to takto. Jenže XSS není jen alert(1),
pomocí JavaScriptu lze v browseru dělat spoustu věcí, například získávat cookies,
pouštět muziku, zobrazovat přesvědčivé odkazy na stažení zákeřných programů
nebo vytvářet falešné přihlašovací formuláře.
11. The Browser Exploitation Framework Project Demo
BeEF
Nástroj BeEF usnadňuje bezpečnostním testerům (a přednášejícím) demonstraci
zákeřných XSS útoků. Ukázku naleznete na videu z E-shop summitu 2016 nebo
v mojí prezentaci určené vývojářům, přibližně od 14. minuty.
12. CSP
Content Security Policy
Vývojáři zapomínají ošetřit uživatelský vstup už skoro 20 let a budou zapomínat
pořád dál. Je tedy potřeba zavést další úroveň ochrany, když vývojáři zase
zapomenou, tak ať nevyrobí tak velký problém. Jednou z těch dalších úrovní
ochrany je Content Security Policy (CSP). Ta říká moderním browserům, odkud z
jakých domén mohou načítat a spouštět JavaScript, stahovat obrázky, kam
mohou odesílat formuláře apod. Některé nástroje, jako třeba Google Tag Manager
vyžadují poměrně „otevřené“ nastavení CSP, ale politika může být nastavena na
každou část e-shopu jinak. Např. v administraci e-shopu nejspíš nástroje jako je
právě Google Tag Manager nepoužíváte, pomocí CSP tedy můžete chránit
uživatele, kteří s ní pracují.
13. CSP je klasická HTTP hlavička, kterou pošle server prohlížeči a prohlížeč poté
načítá zdroje jen z povolených adres. Mohu například nastavit, aby prohlížeč načítal
JavaScript jen z domény, na které běží aplikace a když mizera do stránky dostane
nějaký JavaScript odjinud, tak se nenačte a tím pádem ani nespustí. O implementaci
Content Security Policy se dozvíte více v mé přednášce pro vývojáře.
14. Michal ŠpačekMichal Špaček
www.michalspacek.czwww.michalspacek.cz @spazef0rze@spazef0rze
Útok XSS se nevyhýbá nikomu a může natropit opravdu velké škody. Myslete na to
a snažte se mizerům bránit více způsoby. Vaše weby potom budou mnohem hůře
zneužitelné pro páchání útoků na vaše uživatele, kolegy a zaměstnance.
Bezpečnost e-shopů jsme detailněji rozebírali v rozhovoru pro MladýPodnikatel.cz.