CZ Podcast 75 Errata

Před pár dny jsem konečně zjistil, kolik lidí slyšelo CZ Podcast o bezpečnosti webových aplikací, ve kterém jsem byl hostem. To číslo samozřejmě znám úplně přesně a dokonce všechny tři posluchače znám i jménem. Byl jsem to totiž já, Ondřej Mirtes a Jakub Vrána. Poslední tři jmenovaní mě zároveň upozornili na několik faktických chyb a nepřesností. Důvody, proč k těm chybám a nepřesnostem došlo nejsou podstatné, ale omlouvám se za ně. Rád bych tedy v tomto článku tyto tiskové chyby opravil.

V čase 14:30 mluvíme o DDoSu pomocí metody DNS Amplification, o jednom takovém útoku o síle 65 Gbps píše CloudFlare na svém blogu. DNS Amplification DDoS spočívá v posílání dotazů se zdrojovou IP adresou oběti na DNS resolvery (někdy nesprávně nazývané DNS servery), které vracejí několikanásobně větší odpověď na adresu, ze které si myslí, že přišel dotaz. Tedy na adresu oběti.

15:25: Cross-Site Scripting (XSS) není jenom o JavaScriptu a kradení session id, přesnější název útoku by asi byl HTML Injection. Do stránky stačí vložit třeba HTML s falešným přihlašovacím formulářem, jehož atribut action bude mířit na web útočníka nebo nějaký politicky nekorektní obrázek, ani k jednomu žádný JavaScript není vůbec potřeba. V 19:30 to pak sice vysvětluji, ale je dobré to zdůraznit. Z povídání o XSS ve spojitosti s kradením session id by někdo mohl získat dojem, že se ho to netýká, ať už z důvodu, že sessions nepoužívá nebo session cookie posílá s příznakem HttpOnly (posílat takový příznak je velmi vhodné). Takže, XSS rozhodně není jen o session id a JavaScriptu. Navíc HttpOnly cookie lze občas pomocí JavaScriptu získat, třeba v kombinaci s oblíbenou Javou v browseru. Když se bavíme o XSS na školení bezpečnosti webových aplikací, tak zmiňuji projekt BeEF, který umí s browserem mnohem zábavnější věci, včetně skenování vnitřních sítí a sestavování Skype hovorů.

V čase 24:45 tvrdím, že díky počítači s 25 GPU je možné SHA-1 hash šestiznakového hesla složeného z malých, velkých písmen, čísel a speciálních znaků cracknout do 5 minut. To by se ten počítač moc nevytáhl, ve skutečnosti to jsou jednotky vteřin. Což teda také je “do 5 minut”, že. Osmiznaková hesla lze potom cracknout v řádech jednotek minut.

Kolem času 28:20 upozorňuji na to, že přidávat salt do hashe jednoduchým spojením s heslem, tedy hash(password + salt) není dobrý nápad, ovšem ten argument, který uvádím není zrovna z nejlepších. Tento způsob saltování nezpomalí útok na hash hrubou silou, ale vzhledem k tomu, že to není účel saltování, tak je to celkem jedno. Ten můj argument je spíš takové dogmatické přesvědčování všech, kteří si myslí, že sha1(password + salt) je dobrý nápad. Ne, není, použijte raději scrypt nebo bcrypt a nějaké spojování hesla se saltem nemusíte vůbec řešit.

30:15: místo mluvení o Cross-Site Request Forgery (CSRF) jsem začal mluvit o Clickjackingu, který se sice dá považovat za variantu CSRF, ale funguje to jinak. Na provedení CSRF útočník nepotřebuje žádný frame, stačí mu použít značku IMG, třeba takto . Z toho plyne, že destruktivní akce ve webové aplikaci běžící v prohlížeči by neměla jít vyvolat takto snadno, upravit, vytvořit nebo smazat nějaký objekt by mělo jít jen a pouze metodou POST. To ovšem nestačí, vlastní obranou pak je přidávat do formuláře s takovou akcí token a nezapomenout jej ověřovat. Token odesílaný metodou GET, tedy v URL, by mohl uniknout např. v hlavičce Referer. Obrana proti clickjackingu je také jednoduchá, stačí hlavička X-Frame-Options s hodnotou DENY nebo SAMEORIGIN nebo kousek JavaScriptového kódu, který se nazývá framebuster. Všechny tyto metody zakážou zobrazování dané stránky ve frames na cizích webech. Pokud je potřeba danou stránku zobrazit do frame, což třeba zrovna zmiňované Like tlačítko je, tak je obrana složitější. Pokud známe cílovou adresu stránky s frames, ve které má být daná stránka zobrazena, tak lze opět použít hlavičku X-Frame-Options, tentokrát s hodnotou ALLOW-FROM uri. Na straně prohlížeče se lze bránit pomocí rozšíření prohlížeče Firefox s názvem NoScript a to konkrétně pomocí modulu s názvem ClearClick.

33:30: důvody, proč je PHP verze knihovny OWASP Enterprise Security API divná, si můžete přečíst na blogu Jakuba Vrány.

Slyšeli jste podcast? Našli jste ještě nějakou nepřesnost?

4 thoughts on “CZ Podcast 75 Errata
  1. Díky za opravy. V opravách je nicméně ještě jedna nepřesnost: Není moc dobrý nápad dávat token do URL, protože tak může mnoha způsoby uniknout (nejběžnější je hlavička Referer). Je potřeba ho poslat metodou POST.

Blog byl staticky vyexportován, nové komentáře již nelze přidávat.