USENIX Enigma 2017 - LLC Cache Attacks: Použitelnost a protiopatření

Existuje způsob, jak určit, že prostředek by měl být ukládán do mezipaměti při přístupu přes HTTP i HTTPS? Máme spoustu statického obsahu, který je zpočátku poskytován přes HTTP a poté znovu poskytován přes SSL, když se uživatel pokusí zaregistrovat nebo přihlásit, a bylo by hezké to uložit do mezipaměti.

Ne, prohlížeče budou považovat adresy URL HTTP a HTTPS za zcela odlišné, i když jediným skutečným rozdílem je přítomnost s.

Pokud by to neudělali, vytvořilo by to vážnou bezpečnostní díru. Zvažte, co by se stalo, kdyby se například útočníkovi podařilo manipulovat se souborem JS načteným přes nezabezpečený HTTP a prohlížeč později znovu spustil stejný kód JS ze své mezipaměti na zabezpečené stránce.

Jediným způsobem, jak můžete znovu použít stejné statické prostředky na zabezpečených i nezabezpečených stránkách, je načíst je ze stejných adres URL. Zde máte v zásadě dvě možnosti:

  • Použijte HTTPS pro své statické prostředky, i když je hlavní stránka načtena přes HTTP. To bude fungovat a je bezpečné, ale použití HTTPS způsobí malé náklady na procesor a zabrání sdíleným serverům proxy ukládat prostředky do mezipaměti. Prohlížeč uživatele je však stále ukládá do mezipaměti a stále je možné použít reverzní proxy nebo CDN k poskytování prostředků, pokud mohou fungovat jako důvěryhodné koncové body SSL.

  • Použijte HTTP pro své statické prostředky, i když je hlavní stránka načtena přes HTTPS. Tento smět fungují také v některých prohlížečích, ale je to tak ne zajistit. Dokonce i prohlížeče, kde funguje, obvykle uživatele upozorní na přítomnost nezabezpečeného obsahu nebo s celou stránkou zacházejí jako s nejistými. Například IE8 zobrazí varování „smíšeného obsahu“, zatímco IE9 prostě nenačte nezabezpečené zdroje (kromě obrázků).

Samozřejmě máte také třetí možnost: stačí použít HTTPS pro Všechno vašich stránek. To může být praktičtější, než byste si mysleli, zvláště pokud podstatná část vašeho provozu již používá HTTPS.

Nenašel jsem nic, co by konkrétně uvádělo, jak by prohlížeče měly zpracovávat sdílení obsahu v mezipaměti https a http, a také jsem našel konfliktní informace online.

Například: Vymazal jsem mezipaměť ve Firefoxu, navštívil jsem http://www.google.com, zkontroloval svou mezipaměť disku (zadejte about:cache na liště s adresou URL) a poté navštívili stránku https://www.google.com.

I když obsah v mezipaměti http i https, web https nenačetl prostředky http v mezipaměti. Zde je několik článků, které by mohly být užitečné:

  • http://www.mnot.net/cache_docs/
  • http://www.web-caching.com/welcome.html
  • http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13

Snad to pomůže!

  • Ne jako v záhlaví - můžete poslat zpět záhlaví HTTP do mezipaměti přes HTTP a HTTPS?
  • stackoverflow.com/questions/174348/… mohou být také relevantní

Pracoval pro vás: Charles Robertson | Chcete nás kontaktovat?