V sobotu 2. listopadu proběhla mohutná oslava naší plnoletosti !!
Multimediaexpo.cz je již 18 let na českém internetu !!

HTTP Strict Transport Security

Z Multimediaexpo.cz

Verze z 23. 10. 2017, 14:11; Sysop (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)

HTTP Strict Transport Security (HSTS) je v informatice bezpečnostní mechanismus, který chrání síťovou komunikaci mezi webovým prohlížečem a webovým serverem před downgrade útoky a zjednodušuje ochranu proti únosu spojení (tzv. cookie hijacking). Mechanismus umožňuje, aby webový server vynutil v prohlížeči komunikaci pouze pomocí šifrovaného HTTPS připojení a vyloučil tím přenos dat nezabezpečeným HTTP protokolem. HSTS definuje RFC 6797. Webový server aktivuje HSTS pomocí HTTP hlavičky Strict-Transport-Security,[1] která svou hodnotou definuje časový úsek, po který může prohlížeč zabezpečeně přistupovat k serveru.

Obsah

Historie

Specifikace HSTS byla schválena 2. října 2012 a následně publikována 19. listopadu 2012 jako RFC 6797. Původně autoři odeslali návrh jako Internet-Draft 17. června 2010. V rámci diskuze nad návrhem bylo jméno změněno ze „Strict Transport Security“ (STS) na „HTTP Strict Transport Security“ (HSTS). Důvodem pro změnu bylo, že jde o specifickou záležitost HTTP protokolu[2] (název v HTTP hlavičce zůstal Strict-Transport-Security).

HSTS mechanismus

Server implementuje HSTS politiku tím, že odesílá hlavičku přes HTTPS připojení (HSTS hlavičky odeslané pomocí HTTP jsou ignorovány).[3] Server může například odeslat hlavičku, která určí, že všechny budoucí dotazy na danou doménu používaly jen HTTPS připojení po dobu jednoho roku: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload.

Pokud webová aplikace[4] poskytne HSTS politiku user agentovi, agent se chová následovně:[5]

  1. Automaticky převede všechny nezabezpečené odkazy, které odkazují na webovou aplikaci, na zabezpečené. (http://example.com/some/page/ bude převedeno na https://example.com/some/page/ předtím, než přistoupí na server.)
  2. Pokud nemůže být navázáno zabezpečené připojení (např. pokud TLS certifikát je podepsaný sám sebou), zobrazí se chybová hláška a uživateli bude zamezen přístup do webové aplikace.[6]

HSTS pomáhá chránit webové aplikace proti některým pasivním (odposlechy) a aktivním síťovým útokům.[7] Díky HSTS mechanismu má útočník, který využívá man-in-the-middle útok, velmi sníženou šanci, že odchytí nějaké žádosti či požadavky odeslané mezi uživatelem a webovou aplikací.

Využití

Technologie HSTS dokáže odstranit problémy se SSL-stripping man-in-the-middle útokem, který byl poprvé publikován Moxie Marlinspikem v roce 2009 na BlackHat Federal talk pod názvem „New Tricks For Defeating SSL In Practice“.[8] SSL-stripping útoky (na SSL a TLS) transparentně převádějí zabezpečený HTTPS připojení na nezabezpečené HTTP připojení. Uživatel uvidí, že jeho připojení je nezabezpečené, ale v zásadě neví, zda by připojení mělo být zabezpečené nebo ne. Mnoho stránek nevyužívá TLS/SSL, proto není žádný způsob jak zjistit, zda je připojení v nezabezpečeném HTTP kvůli útoku nebo jen proto, že stránky nevyužívají TLS/SSL.

HSTS řeší tento problém[7] tak, že prohlížeči sdělí, že by připojení k serveru mělo vždy využívat TLS/SSL. HSTS hlavička může být útočníkem odstraněna, pokud uživatel na stránku přistupuje poprvé. Prohlížeče Google Chrome a Mozilla Firefox se snaží tomuto předcházet tak, že poskytuje předem načtený seznam HSTS sítí.[9][10] Toto řešení bohužel nelze použít pro všechny stránky v Internetu. Více níže v kapitole „Omezení“.

HSTS také pomáhá předcházet krádeži přihlašovacích HTTP cookies pomocí rozšířeného nástroje Firesheep (plugin pro Firefox).[11]

Jelikož je HSTS časově omezeno, je citlivý například na útoky, které posouvají systémový čas cílového počítače využitím falešných NTP paketů.

Omezení

Původní požadavek zůstává nechráněn proti aktivním útokům, pokud se použije nezabezpečený protokol (HTTP) nebo pokud URI pro původní požadavek byla získána přes nezabezpečený kanál.[12] To samé platí v případě, kdy poprvé přistupujeme na stránky po uplynutí doby stanovené HSTS politikou max-age (tato doba by měla být nastavena na několik dní nebo měsíců v závislosti na aktivitě a chování uživatele). Google Chrome a Mozilla Firefox řeší toto omezení pomocí „STS preloaded list“, což je seznam obsahující známé sítě, které podporují HSTS.[9][10] Tento seznam je distribuován s prohlížečem, díky čemuž využívá zabezpečené připojení pro sítě v seznamu již při prvním přístupu. Avšak, jak již bylo zmíněno, toto řešení nedokáže pokrýt všechny stránky na internetu. Možným řešením by mohlo být využití DNS záznamů pro deklarování HSTS politiky a přistupovat k nim zabezpečeně pomocí DNSSEC.

Ani využitím „STS preloaded list“ nemůže HSTS předcházet pokročilým útokům proti TLS jako je například BEAST nebo CRIME.

Podpora v prohlížečích

Reference

  1. . Dostupné online.  
  2. . Dostupné online.  
  3. https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
  4. . Dostupné online.  
  5. . Dostupné online.  
  6. . Dostupné online.  
  7. 7,0 7,1 . Dostupné online.  
  8. 9,0 9,1 . Dostupné online.  
  9. 10,0 10,1 10,2 Mozilla Security Blog – Preloading HSTS (anglicky)
  10. Firesheep and HSTS (HTTP Strict Transport Security)
  11. . Dostupné online.  
  12. . Dostupné online.  
  13. . Dostupné online.  
  14. Mozilla.org – HTTP Strict Transport Security (anglicky)
  15. Opera Software ASA – Web specifications support in Opera Presto 2.10 (anglicky)
  16. . Dostupné online.  
  17. ČÍŽEK, Jakub. IE11 je po letech zase o kus bezpečnější. Umí HSTS. zive.cz [online]. 2015-06-12 [cit. 2015-06-12]. Dostupné online.  
  18. Low adoption rate of HSTS website security mechanism is worrying, EFF says (anglicky)
  19. Internet Explorer Web Platform Status and Roadmap (anglicky)