Tak nám MS přidal do Internet Explorer 11 lahůdku zvanou HSTS - tedy HTTPS Strict Transport Security. Stáhněte si kumulativní aktualizaci tady, nebo úplně přímo soubory aktualizace z Update Catalog. A přečtěte si, co to znamená a co to naopak neznamená.
Problém s SSL/TLS strip útokem
Obyčejné HTTPS, jen se serverovým certifikátem, je od jakživa náchylné na MITM útok. Protože klient nemá svůj vlastní certifikát, který by server vyžadoval, může se udělat HTTPS strip., neboli SSL strip, neboli TLS strip. V podstatě bezpečnost závisí na tom, jestli klient chce šifrované HTTPS, nebo je mu to jedno.
Pokud je to klientovi jedno, může se jednat o to nejsilnější TLS 1.2 spolu s PFS, a přitom se to dá krásně odposlouchávat. Proč?
Normální lidé píšou do prohlížeče jenom "www" adresu a nedávají do ní explicitně HTTPS prefix. Většina odkazů po webu a ve vyhledávačích vede také jen na čisté nezašifrované HTTP. Sám web server samozřejmě může poslat klientovi redirect (301/302). Jenže pokud klient nezačne rovnou na HTTPS, tak mu to MITM zakryje. Viz. obrázky.
Mělo by na nich být vidět HTTP redirect a samozřejmě absolutní odkazy (href), pokud jsou takto uvedeny ve zdrojovém HTML. Tohle je normální obsah paketů od web serveru.
Jenže v takovém případě MITM vidí klientův první požadavek na nezašifrovaném HTTP. Přepošle to na web server, klidně rovnou v šifrovaném HTTPS. Útočník se nemá proč bránit šifrovanému HTTPS mezi sebou a webovým serverem. Jenže cokoliv přijde od web serveru po šifrovaném HTTPS, z toho útočník prostě písmenko S odstraní a přepošle ke klientovi.
Klient se tak ani nedozví, že by měl/mohl vlastně šifrovat. Viz. další obrázek:
Snaha o udržení HTTPS
Řešením je snaha uživatele začít každé spojení rovnou na HTTPS. Útočník MITM potom nemá šanci do transakce vstoupit, protože není schopen podvrhnout platný certifikát skutečného serveru. MITM může samozřejmě zkusit vytvořit certifikát podvodný, ale ten (doufejme) na klientovi nebude platit a uživatel (doufejme) neodklikne varování o jeho nekvalitě :-)
V tomto se uživateli právě snaží prohlížeč pomoci sám. Pokud se stáhne webová stránka s HTTP hlavičkou Strict-Transport-Security, tak prohlížeč ví, že by měl už od příště chodit rovnou na HTTPS a nezkoušet to přes nezašifrované HTTP tak, jak si uživatel, nebo nějaký odkaz původně přeje. Prohlížeč si tuhle informaci nakešuje a příště už chodí rovnou na HTTPS.
Hlavičku (header) Strict-Transport-Security musí do HTTP odpovědí (response) přidávat rovnou web server, samozřejmě. Nakreslil jsem to na následujícím obrázku. Podstatná je také keš na klientovi, bez ní by to příště nefungovalo.
Preload list od gůglu
Od příště. To je přesně kámen úrazu. Pokud by v cestě byl MITM útoční už od prvního uživatelova přístupu přes nezašifrované HTTP, je samozřejmě schopen tyto hlavičky vymazat. Vytlumil by je tak stejně, jako udržuje klienta na nezašifrovaném HTTP a zakrývá mu HTTPS přístup.
Od toho má gůgl preload list. Webové sajty, které vědí, že samy implementují Strict-Transport-Security se tam rády zaregistrují. Zdá se, že je to zdarma. Samozřejmě je to zdarma, protože je to podobně jako 8.8.8.8 velmi vítaná metoda, jak sbírat marketingová data.
No ale znamená to, že prohlížeč ví o HTST stránkách dopředu rovnou ještě dříve, než se na ně vůbec pokusíte poprvé přistoupit. A tím se vás snaží o trošku více chránit. Doufejme, že se ten preload list stahuje do IEčka čas od času s nějakou aktualizací a ne až v okamžiku, kdy do té sajty přistupujete. To by nebyla moc ochrana proti MITM, že? Navíc by to dávalo gůglu ještě lepší marketingové info.
V textu support článku je prozatím napsáno že "Microsoft plans to update the preload list on a quarterly basis and deliver it in the corresponding Internet Explorer cumulative update". Tak otázka je, jak ty plány dopadnou :-)
Není to definitivní bezpečnost
Takže jak jistě vidíte sami, nejedná se o definitivní bezpečnost. Pro vnitřní web servery si samozřejmě můžete implementovat ověřováním TLS klientským certifikátem (něco o tom například zde, nebo tady), které je zajištěné bez ohledu na kvalitu prohlížeče.
Nicméně tohle HSTS je jistě příjemný posun.