Kalendář
  • 20.9.2017DERBYCON
  • 26.9.2017Cybertech Europe
  • 26.9.2017CISO Summit
  • 2.10.2017DFIR Summit Prague 2017
AEC v1.0.4

Kyber bezpecnost
@Kyberbezpecnost.cz

Webový vývojář musí mít hackerské myšlení – rozhovor s Michalem Špačkem

30. 5. 2016

Share Button

Michal Špaček (@spazef0rze, michalspacek.cz)je známý bezpečnostní odborník. V poslední době získaly velkou pozornost jeho analýzy VPN řešení Opery nebo elektronické evidence tržeb. Michal nám řekl například jak se dostal k bezpečnosti, jaké jsou nejčastější chyby webových aplikací, nebo co je důležité při vzdělávání uživatelů.

Můžeš na úvod říct něco o tom, jak ses dostal k tématu bezpečnosti?

Původně jsem webový vývojář. Začínal jsem už na střední škole, kde jsme programovali v Pascalu a v C. Pak přišel internet, což mě zaujalo a chytlo, protože během pár milisekund jsem mohl být na serveru někde v New Yorku, i když jsem seděl doma u rodičů. Web mě fascinoval, takže jsme s kamarádem začali dělat webové stránky. Nejhorší okamžik byl, když jsem zjistil, že mi za to lidi dají peníze, pak už z toho nebyla cesta ven.

Tenkrát, bylo to někdy v roce 1997 nebo 1998, internet ještě moc rozšířený nebyl, v domácnostech bylo maximálně drahé a pomalé vytáčené připojení. Naproti tomu vysoké školy měly poměrně dobrý přístup k internetu díky CESNETu. Já jsem tenkrát na žádnou ještě nechodil, ale různě jsme sháněli uživatelská jména a hesla, díky kterým jsme si na univerzitě stahovali na diskety věci, které jsme pak mohli doma číst. To bylo vlastně moje první setkání s bezpečností.

Další zkušeností byl koncert mé oblíbené skupiny Faithless. Agentura, která ho pořádala vyhlásila soutěž o lístky. Na e-mail se jim měla poslat odpověď na nějakou otázku. My jsme tu odpověď nevěděli, ale zkusili jsme tipnout jejich heslo do mailu na Post.cz, což se nám podařilo. Lístky jsme nevyhráli, protože karma je sice zdarma, ale lístky na koncert ne.

O pár let později, to už jsem pracoval ve firmě, k nám přišel obchodník Seznamu a ukazoval nám administrační rozhraní Seznamu, připojený do naší sítě. Ta administrace běžela přes HTTP, takže pro mě nebyl problém si vedle spustit TCPDUMP a zjistit jejich heslo, které jsme pak používali dalších pár dní pro zjišťování hledanosti různých slov.

Další oči otevírající setkání s bezpečností bylo, když jsem v další firmě upozornil na to, že se chystá koupit e-shopové řešení trpící spoustou zranitelností typu Cross Site Scripting a dalších. Upozornil jsem na to e-mailem ostatní zaměstnance a šéf mě sepsul, že jsem jim sebral čas, který mohli věnovat práci.

Jak jsi se potom dostal k tomu, že ses začal věnovat čistě bezpečnosti?

V roce 2011 mě požádali organizátoři soutěže Web Top 100, abych hodnotil weby z technického pohledu. řekl jsem si, že technický pohled zahrnuje i bezpečnost a začal jsem na soutěžních webech hledat jednoduché chyby typu Cross Site Scripting. Těch webů bylo 200 a na zhodnocení jednoho bylo přibližně půl hodiny, takže nebylo možné provádět žádné hloubkové testy. V podstatě jsme nehledali ani bezpečnostní chyby jako takové, ale technické chyby, které by mohly vést k bezpečnostním chybám. Přitom jsem si uvědomil, že bezpečnost není moc dobrá. Vzpomínám si třeba, že v roce 2013 všechny weby v kategorii e-shopy dostaly nula bodů. To znamená, že měly nějaký závažný technický nebo bezpečnostní problém.

Vnímáš od té doby nějaké zlepšení v oblasti bezpečnosti webů a webových aplikací?

Posun tu určitě je. Agentury, které weby do soutěže přihlašují už si na tom dávají záležet a pokud jde nový web, tak je v zásadě poměrně dobře zabezpečený proti snadno zneužitelným chybám. Naše metodika je veřejná, takže se kdokoli může podívat co a jak hodnotíme.

Jaké jsou podle tebe v současnosti hlavní přetrvávající problémy v oblasti bezpečnosti?

Vnímám dva hlavní problémy. Jednak programátoři webových aplikací často zapomínají dělat některé důležité věci. Nemyslím si, že by to dělali úmyslně, ale tlačí na ně šéf nebo deadliny, případně nevědí jak na to. Nejčastějším problémem jsou neošetřené vstupy. Například je nenapadne, že by někdo mohl dát do uživatelského jména JavaScript. na školeních se jim snažím vysvětlit, že nemají přemýšlet o tom, proč by to někdo dělal, ale o tom co se stane, když to někdo udělá. Je to základ hackerského myšlení – snažit se přijít na to jak věc použít jiným než původně zamýšleným způsobem. Vývojáři se musí snažit přemýšlet trochu kreativně, ale to je samozřejmě problém pokud mají přísné deadliny a šéfa, který tomu není nakloněn.

Další problém je v tom, že uživatelé samotní dělají chyby, které snižují jejich bezpečnost. I když budou mít naprosto bezpečnou aplikaci, ale budou v ní používat jednoduché heslo nebo jedno heslo pro víc služeb, tak to sníží bezpečnost uživatele, i když ne aplikace jako takové. Problém je v tom, že uživatel nepozná, co je to slabé heslo. Spousta webů jim tvrdí, že když použijí speciální znak, tak je heslo daleko bezpečnější. Uživatel pak vezme vykřičník a dá ho nakonec, což všichni vědí a heslo se tím silnější nestane. Tady bohužel selhává osvěta institucí jako jsou banky, které tvrdí hlouposti, jako „měňte si heslo jednou za 90 dní“ nebo „používejte co nejvíc čísel a speciálních znaků“, které pomáhají minimálně. Spíš než učit lidi co jsou slabá a silná hesla bychom jim měli vysvětlovat co jsou předvídatelná hesla. Spousta lidí si myslí, že „Pepíček92“ je silné heslo, ale když se tak jmenuje jejich syn narozený v roce 1992, tak je to heslo předvídatelné.

Silné heslo nepomůže pokud se uživatel připojuje nešifrovaně přes nějakou nezabezpečenou síť, kde ho může kdokoli odposlechnout. Pro běžného uživatele je ale velice složité rozpoznat, jak je síť ke které se připojuje bezpečná, nebo jestli jeho telefon komunikuje šifrovaně.

Nejdůležitější podle mě je, aby si lidi začali uvědomovat důležitost bezpečnosti. Nemusí úplně přesně vědět jak poznat stránku, která běží na HTTPS, ale měli by alespoň tušit, že něco takového existuje a mít se na to koho zeptat. V poslední době se situace s bezpečnostním povědomím zlepšuje. Dřív jsem dělal školení hlavně pro webové vývojáře, ale v poslední době je jich víc a víc pro lidi z marketingu nebo šéfy firem. To je důležité, protože často vidím, že vývojáři by chtěli bezpečnost řešit, ale nedostanou na to prostor, ať už z časového nebo finančního hlediska.

Můžeš blíž popsat pro koho děláš školení a co se na nich mohou zájemci dozvědět?

Snažím se dělat bezpečnostní osvětu několika způsoby. Často vystupuju na konferencích. Dělám to rád, protože vidím, že lidi mají o bezpečnost zájem a vede k nějakému zlepšení. Pak samozřejmě dělám školení jak webových vývojářů, tak i dalších částí firem, jako je vedení nebo marketing o tom, jak správně psát aplikace, jak je testovat a proč. Ukazuju jim třeba co je Cross Site Scripting nebo SQL Injection, aby věděli jaké útoky existují a proč je důležité se jim bránit.

Je pro mě docela důležité občas pracovat v nějaké firmě, kde se člověk seznámí s reálnými problémy. Nějakou dobu jsem pracoval třeba ve Slevomatu, kde jsme začali uživatelům posílat e-maily s odkazem na reset hesla. Spousta uživatelů s tím měla problém, neviděli v e-mailu odkaz nebo nerozuměli textu. To je problém se kterým se teoretik nesetká a proto je důležité se občas věnovat bezpečnosti v praxi.

Díky za rozhovor!

Share Button

Komentáře

  • Geetha napsal:

    This blog provides useful information about new techniques and concepts.very impressive lines are given which is very attractive.