Klienti cloudové platformy Microsoft Azure, kteří používají Linux ve virtuálních strojích, se setkali s kritickou zranitelností (CVE-2021-38647), která umožňuje vzdálené spuštění kódu s právy roota. Zranitelnost byla označena jako OMIGOD a je významná tím, že problém existuje v aplikaci OMI Agent, která je bez okolků instalována do linuxových prostředí.
OMI Agent se automaticky instaluje a aktivuje při použití takových služeb, jako jsou Azure Automation, Azure Automatic Update, Azure Operations Management Suite, Azure Log Analytics, Azure Configuration Management, Azure Diagnostics a Azure Container Insights. Například jsou ohrožena linuxová prostředí v Azure, pro která je povoleno monitorování. Agent je součástí otevřeného balíčku OMI (Open Management Infrastructure Agent) s implementací zásobníku DMTF CIM/WBEM pro správu IT infrastruktury.
OMI Agent se instaluje do systému pod uživatelským jménem omsagent a vytváří nastavení v /etc/sudoers pro spuštění série skriptů s právy roota. V průběhu práce některých služeb se vytvářejí síťové sockety naslouchající na síťových portech 5985, 5986 a 1270. Skener Shodan ukazuje, že v síti je více než 15 tisíc zranitelných linuxových prostředí. V současnosti je již veřejně dostupný pracovní prototyp exploit, který umožňuje spustit vlastní kód s právy roota na podobných systémech.
Problém se zhoršuje tím, že v Azure není jasně zdokumentováno použití OMI a OMI Agent se instaluje bez varování — stačí souhlasit s podmínkami vybrané služby při konfiguraci prostředí a OMI Agent bude automaticky aktivován, t.j. většina uživatelů ani netuší o jeho přítomnosti.
Metoda exploitace je triviální — stačí poslat agentu XML požadavek, a to bez hlavičky odpovídající za autentizaci. OMI používá autentizaci při příjmu řídicích zpráv, kontroluje, zda má klient právo poslat daný příkaz. Podstatou zranitelnosti je, že při odstranění hlavičky „Authentication“, odpovědné za autentizaci, server považuje úspěšné absolvování kontroly, přijímá řídicí zprávu a umožňuje provádění příkazů s právy root. Pro provádění libovolných příkazů v systému stačí použít ve zprávě standardní příkaz ExecuteShellCommand_INPUT. Například pro spuštění utility „id“ stačí odeslat dotaz: curl -H "Content-Type: application/soap+xml;charset=UTF-8" -k —data-binary "@http_body.txt" https://10.0.0.5:5986/wsman …
id
0
Společnost Microsoft již vydala aktualizaci OMI 1.6.8.1 s opravou zranitelnosti, ale dosud není k dispozici uživatelům Microsoft Azure (v nových prostředích se zatím instaluje starší verze OMI). Automatická aktualizace agenta není podporována, takže uživatelé musí provést aktualizaci balíčku ručně pomocí příkazů „dpkg -l omi“ v Debianu/Ubuntu nebo „rpm -qa omi“ ve Fedoře/RHEL. Jako pracovního řešení ochrany se doporučuje blokovat přístup k síťovým portům 5985, 5986 a 1270.
Kromě CVE-2021-38647 byla v OMI 1.6.8.1 také odstraněna tři zranitelnosti (CVE-2021-38648, CVE-2021-38645 a CVE-2021-38649), které umožňují nezprivilegovanému místnímu uživateli spouštět svůj kód s právy root.
Zdroj: opennet.ru
