Mezi nejlepší způsoby, jak zkoušet neznámý a potenciálně nebezpečný software, patří jeho spuštění na virtuálním stroji. Díky tomu nemůže nebezpečný kód ohrozit skutečný počítač. Toto pravidlo ale dostalo trhlinu. Ve virtualizační platformě Microsoft Hyper-V objevili bezpečnostní odborníci nebezpečnou zranitelnost, která právě napadení fyzického počítače z toho virtuálního umožňuje.

Nedávno jste již předplatné aktivoval

Je nám líto, ale nabídku na váš účet v tomto případě nemůžete uplatnit.

Pokračovat na článek

Tento článek pro vás někdo odemknul

Obvykle jsou naše články jen pro předplatitele. Dejte nám na sebe e-mail a staňte se na den zdarma předplatitelem HN i vy!

Navíc pro vás chystáme pravidelný výběr nejlepších článků a pohled do backstage Hospodářských novin.

Zdá se, že už se známe

Pod vámi uvedenou e-mailovou adresou již evidujeme uživatelský účet.

Děkujeme, teď už si užijte váš článek zdarma

Na váš e-mail jsme odeslali bližší informace o vašem předplatném.

Od tohoto okamžiku můžete číst neomezeně HN na den zdarma. Začít můžete s článkem, který pro vás někdo odemknul.

Na váš e-mail jsme odeslali informace k registraci.

V e-mailu máte odkaz k nastavení hesla a dokončení registrace. Je to jen pár kliků, po kterých můžete číst neomezeně HN na den zdarma. Ale to klidně počká, zatím si můžete přečíst článek, který pro vás někdo odemknul.

Pokračovat na článek

Schopnost přeskočit z virtuálního stroje na fyzický počítač a případně nakazit i další virtuální stroje běžící na stejném hardwaru je alarmující chyba, která v hodnocení rizik CVSS získala 9,9 bodu z deseti. Na chybu už je k dispozici záplata, ale historická zkušenost říká, že se zneužíváním této chyby se pravděpodobně budeme setkávat ještě velmi dlouho.

Emulované počítače

Abychom plně porozuměli podstatě a rozsahu problému, musíme nejprve hovořit o virtualizaci počítačů. Naprostá většina současných serverů funguje virtualizovaně. Tedy že operační systém a nějaký software nad ním (třeba webový server, databázový server atd.) neběží přímo na „holém železe“, fyzickém počítači, ale že na fyzickém počítači (serveru) běží nějaký hostitel virtuálních počítačů. V něm je vytvořeno několik (nebo třeba několik desítek) virtuálních počítačů s vlastními operačními systémy a softwarovým vybavením, kompletně (tedy alespoň doufáme) izolovaných od svého hostitelského stroje i od sebe navzájem.

Virtuální počítače začaly již před drahnou dobou díky principu emulace. Programy jako Virtual PC, VMWare, VirtualBox, DOSBox nebo Parallels umožňovaly softwarově emulovat (napodobit) hardware a vytvořit virtuální, emulovaný počítač. První virtuální počítače neměly nijak hvězdný výkon (protože softwarová emulace byla pomalá), ale přesto se na trhu uchytily, protože virtualizace má své výhody. Máte definované, kontrolované prostředí, ve kterém můžete vytvářet dle potřeby virtuální disky a jiný hardware a můžete třeba vytvářet snapshoty. To znamená, že před provedením nějaké operace lze virtuální počítač kompletně „zazálohovat“ v aktuálním stavu, včetně běžících programů a stavu operační paměti, a poté ho zase do tohoto stavu kdykoliv vrátit.

Další výborná vlastnost virtuálních počítačů, zejména z hlediska bezpečnosti, je izolace. Pokud máte nějaký program, kterému moc nevěříte, nebo dokonce víte, že je to malware, můžete ho spustit na virtuálním počítači, který je zcela oddělený od vaší reálné infrastruktury a kde nejsou žádná citlivá data, a tam ho zkoumat.

 V neposlední řadě nikde není psáno, že virtuální počítač musí mít stejný operační systém, jako ten fyzický. Můžete si tak jako uživatelé Windows do virtuálního počítače nainstalovat Linux nebo naopak. Pokud běžíte na Macu, můžete ve virtuálních Windows spouštět programy pro ně a podobně. Opačně to, alespoň oficiálně, nejde. Mac OS na žádné virtualizační platformě na Windows nebo Linuxu nespustíte.

Přichází virtualizace

Ačkoliv to začalo jako jenom o něco více než technická hračka, výhody virtuálních počítačů začaly být natolik přesvědčivé, že s nimi začaly počítat operační systémy, a dokonce i hardware. První emulátory hostované operační systémy „klamaly“. Ubohý systém si myslel, že běží na fyzickém počítači s nějakým konkrétním fyzicky existujícím (i když ve skutečnosti emulovaným) hardwarem. Současné virtualizační platformy ale fungují jinak.

Podpora pro virtualizaci je nyní přímo součást procesorů, jako různá rozšíření jejich instrukčních sad. Například Intel VT-x nebo AMD-V. A operační systémy zase počítají s tím, že budou virtualizovány a mají přímo v sobě ovladače pro tzv. syntetický hardware.

Ačkoliv se nadále používá i na desktopu (Windows obsahují podporu pro běh virtuálních počítačů od Windows 7), hlavní doménou virtualizace jsou servery. Naprostá většina serverů dnes běží virtualizovaně: všechny cloudové, většina hostingových a ve firemních datacentrech. Hlavní virtualizační platformy jsou VMWare vSphere a ESXi, Hyper-V od Microsoftu a Xen. Zde zmiňovaný problém se týká konkrétně platformy Microsoft Hyper-V, která je součástí prakticky všech současných verzí Windows.

Hyper-V a jemu podobné systémy fungují jako takzvaný hypervisor. Tenká softwarová vrstva, která běží na holém hardwaru, a nad ní běží jednotlivé virtualizované počítače. Smyslem hypervizoru je distribuce dostupných zdrojů (procesor, paměť, úložiště, síť) mezi jednotlivé virtuální stroje, zároveň je hypervisor od sebe izoluje.

Serverová virtualizace dnes

Jak již bylo řečeno, naprostá většina současných serverů běží virtuálně. Důvodů pro to je několik.

První jsou důvody ekonomické. Současné počítače jsou natolik výkonné, že jeden běžný server bez problémů zastane práci několika různých. Může na něm současně běžet několik web serverů, k nim přináležející databáze a úložiště a další. Použití virtualizace vede k lepšímu využití dostupných zdrojů a zlevňuje provoz.

Důležité jsou i bezpečnostní aspekty. Pokud se neobjeví bezpečnostní průšvih jako ten současný, jsou virtuální počítače izolované od toho fyzického, na němž běží, i od sebe navzájem. Na jednom fyzickém serveru tak lze bezpečně hostovat virtuální servery několika různých zákazníků nebo různých aplikací, které si navzájem nemají vidět do dat a ovlivňovat se.

Virtualizace také přináší zjednodušení správy serverů. Je snadné měnit jejich konfiguraci a migrovat je mezi jednotlivými fyzickými servery v rámci infrastruktury, zálohovat je, škálovat a podobně. Možnost virtualizace umožnila cloud computing tak, jak ho dnes známe.

Hypervisory, lépe řečeno virtualizační platformy, jsou extrémně důležitou součástí současné infrastruktury. A chyby v nich jsou sledovány ostřížím zrakem, protože mohou mít dalekosáhlé důsledky.

Průšvih jménem CVE-2021-28476

Typickým příkladem je právě aktuální zranitelnost v Hyper-V, které se dostalo označení CVE-2021-28476. Objevila se v srpnu 2019 a týká se Windows 7, 8.1, 10 a Windows Serveru 2008-2019. Nejedná se o žádnou novinku a oprava na ni vyšla už v květnu letošního roku. Teprve teď ale vyšla zpráva společnosti Guardicore, která ji podrobně popisuje a ukazuje možnosti jejího zneužití. A ve středu budou objevitelé chyby držet řeč na konferenci BlackHat USA 2021, kde odbornou veřejnost seznámí s detaily a tím, jak chybu objevili.

Jedná se o chybu v síťovém stacku, která umožňuje virtuálnímu stroji vykonat libovolný kód (RCE, Remote Code Execution) na svém fyzickém hostiteli. V nejjednodušší variantě se fyzický stroj prostě zhroutí a přestanou běžet na něm hostované virtuální stroje. V horší variantě ovšem útočník vykoná svůj vlastní smysluplný kód v kontextu systémového jádra hostitelského počítače, a může tak například ovlivnit i jiné virtuální počítače spuštěné na stejném fyzickém serveru. To vede k prolomení jedné ze základních vlastností virtualizace, oné již zmíněné izolace, kterou tak milujeme z důvodů bezpečnosti.

Primární zranitelností je chyba v knihovně vmswitch.sys, která se stará o provoz virtuálního síťového switche. Hyper-V totiž disponuje virtuální síťovou vrstvou, která umožňuje rozličným způsobem propojovat virtuální a fyzické počítače a umožňuje jim přístup do lokální sítě a třeba do internetu. Chyba spočívá v tom, že nejsou řádně kontrolovány hodnoty parametrů zasílaných zpráv. Útočník, který musí mít možnost spustit kód na virtuálním stroji, pak pošle speciálně formátovanou zprávu, kterou může způsobit v lepším případě pád systému (Denial of Service), v horším pak vykonat svůj kód pod vysokými oprávněními na straně fyzického serveru. Tento kód může dělat cokoliv, a protože hostitel (fyzický server) má kontrolu nad hosty (virtuálními servery), může ovlivnit jiné virtuální počítače.

Jaký je praktický scénář útoku? Tak například hostingové společnosti často na jednom fyzickém počítači provozují několik virtuálních. Útočník si může pronajmout virtuální server a dostat se do dat uložených na ostatních virtuálech jiných zákazníků. Kompromitace hostitele z hosta, nebo dokonce kompromitace cizího hosta jiným je jedním z nejčernějších scénářů.

Záplata nestačí

Na tento problém existuje záplata již bezmála čtvrt roku. Proč je tedy tak závažný? Protože praktická a mnohokrát opakovaná zkušenost říká, že dostupnost záplaty ještě neznamená, že bude aplikována. Mnoho velkých organizací (přesně těch, u kterých je pravděpodobné, že budou Hyper-V provozovat) své servery neaktualizuje včas, nebo dokonce vůbec. Důvody bývají různé. Od prosté lenosti a neznalosti přes obavy, že aktualizace něco rozbije, až po zhmotnění nesmyslného přesvědčení „dokud to funguje, tak do toho nehrab“. Historická zkušenost říká, že mnoho serverů zůstane neopravených po dlouhé měsíce, nebo dokonce léta.

Ačkoliv si mnoho laiků (a žel bohu i IT profesionálů) myslí, že nejnebezpečnější jsou 0-day útoky (tedy výrobci neznámé chyby, u kterých měl „nula dnů“ na opravu, pro naprostou většinu zákazníků je opak pravdou. Útoky na nové chyby se nepochybně dějí, ale zpravidla nikoliv masově. Jde o cílené útoky na pečlivě vybrané hodnotné cíle. Naprostá většina uživatelů a firem se 0-day nemusí nijak přehnaně obávat. Typické útoky jsou totiž vedeny prostřednictvím zranitelností, na které již opravy existují dlouho, ale nejsou na konkrétním systému nainstalovány.

Co tedy máte dělat? Pokud jste běžný uživatel s klientskou verzí Windows, problém se vás s velkou pravděpodobností vůbec netýká. Hyper-V si musíte explicitně nainstalovat a nastavit, což většina uživatelů nedělá. I pokud Hyper-V používáte, nejspíš na něj nedáváte přístup cizím zákazníkům. A hlavně, klientská Windows se aktualizují sama poměrně svižně automaticky, takže pokud jste se tomu aktivně a intenzivně nebránili, máte nejspíš opravu nainstalovanou. Problémy mohou nastat ve větších firmách, kde se instalace aktualizací řídí centrálně na základě nastavení doménové politiky. Jestliže je vaše doménová politika nastavena tak, že v srpnu není nainstalovaná kritická oprava z května, je nastavená velmi, velmi špatně.

Co se týče Hyper-V serverů, pak záplatu instalujte bezodkladně. Serverové operační systémy si aktualizace nevynucují tak brutálně jako ty klientské. Existuje řada legitimních důvodů, proč některé aktualizace nelze nainstalovat hned. U této nicméně nebezpečí dalece převyšuje možné problémy vzniklé instalací (žádné „vedlejší účinky“ nejsou známy).