Zpět na seznam článků     Číst komentáře (1)     Verze pro tisk

Browser cache weakness

Autor: .cCuMiNn.   
18.1.2018

Využíváte někdy k přístupu k webovým aplikacím informační kiosky, nebo sdílíte svůj počítač s dalšími lidmi? Hlavně v těchto případech jste velice náchylní na útoky zneužívající mezipaměť webového prohlížeče. Pojďme si tedy některé z těchto útoků blíže představit.


Začněme hypotézou

Vžijte se do situace, kdy si prostřednictvím svého počítače prohlížíte doručenou poštu ve svém oblíbeném Hackmailu. Současně si představme, že je vaše partnerka velice žárlivá a až opustíte počítač, pokusí se na něm zjistit obsah vašich zpráv. Varianty, kdy opustíte svůj počítač a zůstanete na něm přihlášeni, nebo tu, kdy vaše partnerka zná heslo k vašemu účtu, ignorujme. Budeme vycházet z toho, že jste se po návštěvě z aplikace webmailu odhlásili.

Kde může být problém

Útok procházením historie

První chybu, kterou byste mohli udělat je, že necháte webový prohlížeč otevřený i po skončení práce.

V tomto případě je zde totiž možnost, že se vaše partnerka pokusí procházet historii navštívených stránek tlačítkem zpět. Stačí, aby v prohlížeči několikrát klikla na toto tlačítko, a může se dostat na stránku s důvěrnými daty, například se seznamem doručených zpráv, nebo na obsah konkrétní doručené zprávy, pokud jste ji před tím zobrazili.

Problém je v tom, že pokud to správce serveru, nebo sama aplikace explicitně nezakáže, ukládají se navštívené stránky v prohlížeči do mezipaměti. Při průchodu historií zpět se pak tyto stránky zobrazují z ní, a ne z webového serveru. Partnerka tedy nemusí být vůbec přihlášená, aby vaše důvěrná data dokázala zobrazit.

V demonstračním Hackmailu je takto možné zobrazit webovou stránku se seznamem doručených zpráv, viz video.



Útok zobrazením dat, která jsou uložena v dočasných souborech

Pokud byste se chyby z předchozího scénáře nedopustili, a prohlížeč po skončení práce ihned uzavřeli, neznamená to ještě, že máte vyhráno. Data totiž mohou být stále uložena v dočasných souborech na disku, aby se urychlilo jejich načítání v budoucnu.

Dalo by se tedy říci, že by partnerce stačilo, aby spustila prohlížeč, prohlédla si seznam dříve navštívených stránek, a načetla některou z nich, například zmiňovanou stránku se seznamem doručených zpráv v Hackmailu. Pokud by se obsah načetl z dočasného souboru, zobrazila by se stránka v původní verzi bez dotazování se serveru. Takto to ovšem ve skutečnosti fungovat nebude, leda tak u obrázků. Prohlížeč si totiž HTML obsah ukládá do dočasných souborů s hodnotou expirace „Expired Immediately“ bez ohledu na hodnotu HTTP hlavičky Expires. Při druhé návštěvě této webové stránky se tedy vždy načte aktuální obsah z webového serveru a to i v případě, že stránka byla uložena v dočasném souboru.

Partnerka na to proto bude muset jít jinak. Bude muset prozkoumat přímo obsah dočasných souborů.


Úložiště dočasných souborů
Mozilla Firefox
Unix/Linux~/.mozilla/firefox//Cache/
WindowsC:\Documents and Settings\\Local Settings\Application Data\Mozilla\Firefox\Profiles\\Cache
Internet Explorer
WindowsC:\Documents and Settings\\Local Settings\Temporary Internet Files

Protože těchto souborů bude na disku pravděpodobně uloženo velmi velké množství a z jejich náhodně vygenerovaného názvu není možné určit, které stránce který soubor patří, bylo by procházení těchto souborů příliš nekomfortní. Pro prohlížení historie je tedy mnohem jednodušší použít přímo webový prohlížeč. Například ve Firefoxu se k datům uloženým v dočasných souborech dostanete přes URI

about:cache?storage=disk

Nyní si stačí v seznamu uložených zdrojů vyhledat konkrétní stránku a v detailu pak přečíst uložený obsah

Obsah zdrojů uložených v dočasných souborech

Detail zdroje v dočasném souboru

Na screenshotu s detailem cache stránky je vidět přímo její HTML kód. Ve většině případů ovšem uvidíte zkomprimovaná data algoritmem gzip a zobrazená data tedy budou pouze nečitelnou binárkou. Proto je vhodné se poohlédnout po nějakém nástroji, který dokáže obsah cache přímo zobrazit.

Sáhnout můžete jednak k doplňkům do webového prohlížeče. Pro Firefox je jím například CacheViewer. Jedinou jeho nevýhodou je, že není kompatibilní s Firefoxem Quantum.

Doplněk prohlížeče CacheViewer

Druhou možností je využít externí nástroj, například Mozilla Cache Viewer, případně IE Cache Viewer.

Mozilla Cache Viewer

Pomocí uvedených nástrojů není skutečně žádný problém, načíst a zobrazit data uložená v dočasných souborech prohlížeče.

Zobrazená stránka z dočasného souboru

Útok na data uložená v paměti

Na předchozím screenshotu je vidět jedna zpráva, jejíž zobrazené informace (odesilatel a předmět) vaší partnerku zcela jistě zaujmou. Vycházejme z toho, že dříve než partnerka usedla k našemu počítači, tak jste si tuto zprávu přečetli. Teoreticky by se tak tedy mohla dostat k jejímu obsahu stejným postupem, jako se dostala k seznamu doručených zpráv. Na rozdíl od stránky se seznamem zpráv, je tato stránka ale správně ošetřena zákazem cachování s nutností načtení aktuálních dat při pohybu zpět v historii. Více si o tomto povíme níže v odstavci věnovaném obraně. Když byste tedy stránku s detailem zprávy navštívili průchodem zpět, prohlížeč by si vyžádal její aktuální verzi ze serveru, ale protože již nejste přihlášeni, zpráva by se nezobrazila.

Díky zmíněným omezením nebude žádný z doposud uvedených postupů fungovat. Pokud ovšem zapomeneme po skončení práce zavřít prohlížeč, zůstanou data uložena v paměti. V této paměti zůstávají data dokonce i po zavření konkrétního panelu prohlížeče. Navštívíte-li ve Firefoxu URI about:cache, budete mít na výběr, zda chcete zobrazit data uložená v dočasných souborech nebo v paměti.

about:cache ve firefoxu

Zobrazení detailu dat uložených v paměti vypadá úplně stejně, jako v případě, kdy byla tato data uložena v dočasném souboru na disku. Lze tedy předpokládat, že i v tomto případě budou data zkomprimována algoritmem gzip a tím pádem budou nečitelná.

Nástroje jako Mozilla Cache Viewer nám v tomto případě příliš nepomohou. protože pracují pouze s dočasnými soubory na disku. Na druhou stranu použití již jednou zmíněného doplňku CacheViewer pro Firefox dokáže data uložená v paměti zobrazit spolehlivě.

Doplněk CacheViewer

Stránka vytažená z dočasné paměti

Obrana

Uživatelé

Jako uživatelé byste měli po skončení práce vždy zavírat spuštěný prohlížeč. Pro jistotu byste vždy měli také vymazat obsah mezipaměti, nebo v nastavení prohlížeče ukládání dat do ní rovnou zakázat. Počítejte v takovém případě ale s větším objemem přenášených dat a tím pádem i s pomalejším načítáním stránek. Ty totiž budou také všechny obrázky a jiný statický obsah stránek načítat vždy ze serveru.

Provozovatelé aplikací

Bylo by tedy daleko lepší, kdyby bezpečnost vašich dat zajistili provozovatelé aplikací. Stačí totiž, když server bude u všech stránek, které obsahují důvěrná data, zakazovat jejich ukládání do mezipaměti. Současně by aplikace měla také zajistit, že pokud se někdo bude snažit procházet historií zpět tak, aby si prohlížeč vždy vyžádal aktuální data.

Tomuto zabrání správné použití http response hlaviček:

Zákaz cachování HTTP Response hlavičkami
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: 0
Pragma: no-cache

Odpověď zobrazená nástrojem Burp Suite

Uvedené hlavičky současně informují proxy servery, které stojí v cestě mezi vámi a webovým serverem, aby tento obsah také neukládaly. To je velice důležité, protože bez toho by se mohlo jednat o mnohem vážnější bezpečnostní problém. Představte si následující situaci:

Uživatel 1 navštíví stránku http://www.hackmail.cz/inc/nastaveni.php, jejíž obsah se v případě chybějících hlaviček, při vracení uloží na proxy serveru. Při následné návštěvě stejné stránky uživatelem 2 odpoví proxy server, který má obsah uložen a uživatel 2 tak uvidí obsah stránky nastaveni.php uživatele 1.

Schéma použití proxy serveru

Testování

Během testu webové aplikace byste tedy vždy měli ověřit, že všechny stránky aplikace, které obsahují soukromá data uživatelů (nebo jsou dynamicky generované), vrací správně uvedené hlavičky. Jde o to, aby se k cizímu obsahu nedalo dostat průchodem historie přes tlačítko zpět, ani prohledáním dočasných souborů.


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 1.82/22

1  2  3  4  5    
(známkování jako ve škole)