TLBleed
TLBleed je hardwarová chyba zabezpečení v některých moderních procesorech, které mají vyrovnávací paměť pro překlad příkazů a podporují simultánní multithreading. Tato chyba zabezpečení umožňuje uživatelské aplikaci (lokálnímu útočníkovi, když je spuštěn speciální program) spuštěné na jednom z hardwarových vláken neoprávněně extrahovat informace o provedení jiného vlákna pomocí skrytého kanálu . Únik informací může být potenciálně použit k bezpečnému přístupu k citlivým datům zpracovávaným jiným vláknem.
Stručný popis
TLBleed je útok postranního kanálu, a proto sdílí podobnosti s jinými zranitelnostmi mikroprocesorů, jako jsou Meltdown a Spectre . Tradiční přístup k využívání takových zranitelností je založen na měření doby přístupu k jednotlivým buňkám mezipaměti procesoru, aby se zjistilo, které konkrétní buňky byly do mezipaměti načteny napadeným procesem. Tímto způsobem je možné extrahovat nepřímé informace o provedení a chráněných datech procesu oběti. V případě útoku TLBleed není postranním kanálem běžná datová mezipaměť, ale asociativní překladová vyrovnávací paměť (TLB), speciální mezipaměť, která ukládá korespondenci mezi stránkami virtuální paměti a stránkami fyzické paměti procesoru, která se používá k urychlení překladu. virtuálních adres. Klíčovou příležitost k útoku poskytuje skutečnost, že při implementaci režimu simultánního vícevláknového zpracování (SMT) v procesorech Intel je asociativní překladová vyrovnávací paměť sdílena a je využívána všemi hardwarovými vlákny současně (podobný kanál třetí strany může existovat v mikroprocesoru implementací jiných společností, ale taková analýza dosud nebyla zpracována).
Podstata útoku je následující. Doba přístupu k jednotlivým buňkám TLB určuje, ke kterým stránkám paměti napadený proces přistupuje. Přitom ani minimální granularita adresování (4096 bajtů na moderních systémech) nestačí k přímému získání dat napadeného procesu (například zranitelnost Meltdown využívá k načtení a následné identifikaci konkrétní buňky mezipaměti nepřímé adresování, jehož adresa určuje část tajenky ). Analýzou povahy přístupu do paměti (pořadí přístupu ke stránkám paměti, intervaly mezi přístupy) pomocí metod strojového učení je však možné identifikovat část spustitelného kódu. Pokud se například v šifrovacím algoritmu při zpracování logické „1“ zavolá jedna část kódu a při zpracování logické „0“ - další, ukáže se, že je možné šifrovaná data zcela obnovit.
Historie
Původní studii zveřejnila skupina vědců na Svobodné univerzitě v Amsterdamu 22. června 2018. Podrobnosti o zranitelnosti později odhalil vedoucí projektu Ben Gras na konferenci o počítačové bezpečnosti Black Hat . [1] [2] Navzdory skutečnosti, že zranitelnost byla prokázána na mnoha procesorech Intel několika moderních architektur, společnost odmítla požádat o CVE identifikátor zranitelnosti s odkazem na její bezvýznamnost. Podle výzkumníků tato pozice neodráží skutečný stav věcí, protože TLBleed je výrazně nový typ útoku, představuje významnou hrozbu a může sloužit jako výchozí bod pro hledání dalších podobných zranitelností. [3]
Mechanismus
Pro implementaci popsaného útoku je nutné vyřešit řadu technických problémů:
- Zjistěte si předem konfiguraci TLB (asociativita, velikost) na použitém procesoru. K tomu můžete využít otevřené zdroje informací [4] nebo využít reverzní inženýrství pomocí nízkoúrovňových instrukcí [5] . Kromě údajů o parametrech TLB je potřeba také zjistit shodu mezi virtuálními adresami a TLB buňkami, aby bylo možné následně sledovat stav libovolných buněk přístupem k požadovaným virtuálním adresám. V nejjednodušším případě je umístění asociativní překladové vyrovnávací paměti určeno nízkými bity adresy stránky, ale lze použít i složitější mapovací funkce, jako je bitové XOR čísla toku a určité bity adresy stránky.
- Najděte způsob, jak sledovat přístupy napadeného procesu k buňkám TLB. Autoři studie používají klasický útok přístupovou dobou , aby zjistili, zda byla určitá TLB buňka použita procesem oběti. Další složitost přináší skutečnost, že asociativní překladová vyrovnávací paměť v moderních procesorech je zpravidla dvouúrovňová struktura (podobně jako hierarchická organizace mezipaměti , L1 TLB a L2 TLB). Přesto lze z přístupové doby určit, zda je adresa požadované stránky v TLB některé z úrovní (jinak se provádí procedura víceúrovňového překladu virtuální adresy, která trvá stovky procesorových cyklů ).
- Spusťte škodlivý kód na stejném hardwarovém jádru jako vlákno procesu oběti. Tvrdí se, že splnění této podmínky pro samotnou implementaci zranitelnosti je velmi obtížné a vyžaduje netriviální úsilí. Moderní operační systémy však poskytují mechanismy pro vazbu procesů na konkrétní hardwarová jádra procesoru, což značně zjednodušuje úlohu. [6]
- Použití statistik přístupů procesu oběti k různým buňkám TLB k obnovení informací o provedení napadeného procesu. Útočníkovi je poskytnuta úplná svoboda volby, jak a jaké informace ze shromážděných statistik získat. Zejména se lze pokusit určit, kterou část kódu napadený proces v té či oné době provádí. V tomto případě je úkol položen jako obnovení závislosti , kde je vektor volání TLB buněk závislý na čase a je požadovaný úsek kódu. V mnoha případech jsou tyto informace dostatečné pro přesnou reprodukci zpracovávaných dat. Zejména určité operace jsou prováděny v šifrovacích algoritmech v závislosti na příchozích bitech, což umožňuje zneužít zranitelnost.



Vliv
Od srpna 2018 byla zranitelnost prokázána pouze na procesorech Intel. Předpokládá se, že procesory jiných společností, ve kterých je vyrovnávací paměť pro překlad stránek sdílena hardwarovými vlákny, mohou být také zranitelné vůči tomuto typu útoku, ale nebyly předloženy žádné implementace tohoto konceptu. [7] AMD tvrdí, že její procesory nejsou touto zranitelností ovlivněny. [3]
Po zveřejnění informací o zranitelnosti projekt OpenBSD zcela vyřadil podporu pro simultánní multithreading v systému. [8] [9] Šéf OpenBSD Theo de Raadt se domnívá, že i přes to, že zranitelnost lze teoreticky eliminovat zákazem běhu procesů různých kontextů na běžných procesorových jádrech, v praxi není takové řešení z důvodu složitosti proveditelné. . [osm]
Obranné mechanismy
- Hlavním a zřejmým způsobem, jak zranitelnost eliminovat, je zakázat režim simultánního multithreadingu ( Hyper Threading ). Je zřejmé, že deaktivace SMT vede k výraznému poklesu výkonu a neefektivnímu využití hardwaru mikroprocesoru. Aplikováno na systém OpenBSD . [osm]
- Oddělení softwarového přístupu k hardwarovým vláknům v řádku mezipaměti TLB. Chcete-li použít metodu, je nutné zakázat každému z hardwarových vláken přístup k určitým oblastem virtuální paměti, aby se v důsledku toho linie TLB používané vlákny neprotínaly. Metoda je obtížně implementovatelná, protože porušuje koncept koherentní virtuální paměti . Tento přístup však lze potenciálně použít na úrovni operačního systému a nevyžaduje změny hardwaru.
- Oddělení hardwarového přístupu vláken v TLB. Ve skutečnosti to vyžaduje rozdělení společného TLB do několika nezávislých vyrovnávacích pamětí adresovaných každým z toků samostatně. Mělo by se očekávat snížení výkonu kvůli snížení celkové velikosti TLB na hardwarové vlákno.
Viz také
- Meltdown je podobný spekulativní exekuční útok, který narušuje izolaci mezi procesy a jádrem operačního systému ve stejném kontextu provádění.
- Spectre je podobný útok založený na spekulativním provádění, který narušuje izolaci mezi libovolnými procesy v systému
Poznámky
- ↑ Black Hat USA 2018 . www.blackhat.com Datum přístupu: 19. prosince 2018. Archivováno z originálu 7. ledna 2019. (neurčitý)
- ↑ TLBleed Side-Channel CPU Attack Detailed at Black Hat . eWEEK. Staženo: 19. prosince 2018. (neurčitý)
- ↑ 12 Williams, Chris . Seznamte se s TLBleed: Útok na CPU unikající kryptoklíči, o kterém se Intel domnívá, že bychom se ho neměli bát , The Register ( 22. června 2018). Archivováno z originálu 8. prosince 2018. Staženo 19. prosince 2018.
- ↑ WikiChip – WikiChip . en.wikichip.org. Získáno 19. prosince 2018. Archivováno z originálu dne 26. října 2020.
- ↑ [ https://www.cs.vu.nl/~giuffrida/papers/revanc_eurosec17.pdf RevAnC: Framework for Reverse Engineering Hardware Page Table Caches] // 10. evropský workshop. Archivováno z originálu 20. prosince 2018.
- ↑ sched_setaffinity(2) – manuálová stránka Linuxu . man7.org. Staženo 19. prosince 2018. Archivováno z originálu 20. prosince 2018. (neurčitý)
- ↑ Halfacree, Gareth . Výzkumníci varují před TLLeed Hyper-Threading vuln (anglicky) , bit-tech.net (25. června 2018). Archivováno z originálu 13. února 2019. Staženo 19. prosince 2018.
- ↑ 1 2 3 Šéf OpenBSD de Raadt říká , že není snadná oprava nové chyby CPU Intel . www.itwire.com (25. června 2018). Získáno 25. června 2018. Archivováno z originálu 25. června 2018.
- ↑ OpenBSD deaktivuje podporu hyperthreadingu pro procesory Intel kvůli pravděpodobným únikům dat . www.itwire.com (21. června 2018). Datum přístupu: 19. prosince 2018. Archivováno z originálu 9. července 2018.
Odkazy
Hackerské útoky z roku 2010 |
---|
Největší útoky |
|
---|
Skupiny a komunity hackerů |
|
---|
osamělí hackeři |
|
---|
Zjištěna kritická zranitelnost |
- Heartbleed (SSL, 2014)
- Bashdoor (Bash, 2014)
- PUDLE (SSL, 2014)
- Rootpipe (OSX, 2014)
- JASBUG (Windows, 2015)
- Stagefright (Android, 2015)
- DROWN (TLS, 2016)
- Badlock (SMB/CIFS, 2016)
- Špinavá kráva (Linux, 2016)
- EternalBlue ( SMBv1 , 2017)
- DoublePulsar (2017)
- KRACK (2017)
- ROCA (2017)
- BlueBorn (2017)
- Meltdown (2018)
- Spectre (2018)
- Blue Keep (2019)
|
---|
Počítačové viry |
|
---|
2000 • 2010 • 2020 |