Ang kahinaan sa mga AMD CPU na nagpapahintulot sa iyo na i-bypass ang mekanismo ng proteksyon ng SEV (Secure Encrypted Virtualization)

Ang mga mananaliksik sa Helmholtz Center for Information Security (CISPA) ay naglathala ng bagong paraan ng pag-atake ng CacheWarp upang ikompromiso ang mekanismo ng seguridad ng AMD SEV (Secure Encrypted Virtualization) na ginagamit sa mga virtualization system upang protektahan ang mga virtual machine mula sa interference ng hypervisor o host system administrator. Ang iminungkahing paraan ay nagbibigay-daan sa isang attacker na may access sa hypervisor na magsagawa ng third-party na code at magpataas ng mga pribilehiyo sa isang virtual machine na protektado gamit ang AMD SEV.

Ang pag-atake ay batay sa paggamit ng isang kahinaan (CVE-2023-20592) na sanhi ng hindi tamang operasyon ng cache sa panahon ng pagpapatupad ng pagtuturo ng processor ng INVD, sa tulong kung saan posible na makamit ang isang data mismatch sa memorya at cache. , at mga mekanismo ng bypass para sa pagpapanatili ng integridad ng memorya ng virtual machine, na ipinatupad batay sa mga extension na SEV-ES at SEV-SNP. Ang kahinaan ay nakakaapekto sa mga processor ng AMD EPYC mula sa una hanggang sa ikatlong henerasyon.

Para sa mga third generation AMD EPYC processors (Zen 3), naresolba ang isyu sa November microcode update na inilabas kahapon ng AMD (ang pag-aayos ay hindi nagreresulta sa anumang pagkasira ng performance). Para sa una at ikalawang henerasyon ng AMD EPYC (Zen 1 at Zen 2), hindi ibinibigay ang proteksyon, dahil hindi sinusuportahan ng mga CPU na ito ang extension ng SEV-SNP, na nagbibigay ng kontrol sa integridad para sa mga virtual machine. Ang ika-apat na henerasyon ng mga processor ng AMD AMD EPYC "Genoa" batay sa microarchitecture na "Zen 4" ay hindi mahina.

Ang teknolohiya ng AMD SEV ay ginagamit para sa virtual machine isolation ng mga cloud provider tulad ng Amazon Web Services (AWS), Google Cloud, Microsoft Azure at Oracle Compute Infrastructure (OCI). Ang proteksyon ng AMD SEV ay ipinatupad sa pamamagitan ng pag-encrypt ng antas ng hardware ng memorya ng virtual machine. Bukod pa rito, pinoprotektahan ng extension ng SEV-ES (Encrypted State) ang mga rehistro ng CPU. Tanging ang kasalukuyang sistema ng panauhin ang may access sa naka-decrypt na data, at kapag sinubukan ng ibang virtual machine at ng hypervisor na i-access ang memorya na ito, makakatanggap sila ng naka-encrypt na set ng data.

Ang ikatlong henerasyon ng mga processor ng AMD EPYC ay nagpakilala ng karagdagang extension, SEV-SNP (Secure Nested Paging), na nagsisiguro ng ligtas na operasyon ng mga nested memory page table. Bilang karagdagan sa pangkalahatang memory encryption at register isolation, ang SEV-SNP ay nagpapatupad ng mga karagdagang hakbang upang maprotektahan ang integridad ng memorya sa pamamagitan ng pagpigil sa mga pagbabago sa VM ng hypervisor. Ang mga susi sa pag-encrypt ay pinamamahalaan sa gilid ng isang hiwalay na processor ng PSP (Platform Security Processor) na binuo sa chip, na ipinatupad batay sa arkitektura ng ARM.

Ang kakanyahan ng iminungkahing paraan ng pag-atake ay ang paggamit ng pagtuturo ng INVD upang mapawalang-bisa ang mga bloke (linya) sa cache ng mga maruruming pahina nang hindi itinatapon ang data na naipon sa cache sa memorya (write-back). Kaya, pinapayagan ka ng pamamaraan na paalisin ang nabagong data mula sa cache nang hindi binabago ang estado ng memorya. Upang magsagawa ng isang pag-atake, iminumungkahi na gumamit ng mga pagbubukod ng software (fault injection) upang matakpan ang pagpapatakbo ng virtual machine sa dalawang lugar: sa unang lugar, tinawag ng attacker ang "wbnoinvd" na pagtuturo upang i-reset ang lahat ng memory write operations na naipon sa ang cache, at sa pangalawang lugar ay tinatawag ang "invd" na pagtuturo sa pagbabalik ng mga operasyon sa pagsulat na hindi makikita sa memorya sa lumang estado.

Upang suriin ang iyong mga system para sa mga kahinaan, isang pagsasamantalang prototype ay nai-publish na nagbibigay-daan sa iyong magpasok ng isang pagbubukod sa isang virtual machine na protektado sa pamamagitan ng AMD SEV at ibalik ang mga pagbabago sa VM na hindi na-reset sa memorya. Ang rollback ng isang pagbabago ay maaaring gamitin upang baguhin ang daloy ng isang programa sa pamamagitan ng pagbabalik ng isang lumang return address sa stack, o upang gamitin ang mga parameter sa pag-log in ng isang lumang session na dati nang na-authenticate sa pamamagitan ng pagbabalik ng isang authentication attribute value.

Halimbawa, ipinakita ng mga mananaliksik ang posibilidad ng paggamit ng paraan ng CacheWarp upang magsagawa ng pag-atake ng Bellcore sa pagpapatupad ng algorithm ng RSA-CRT sa ipp-crypto library, na naging posible na mabawi ang pribadong key sa pamamagitan ng error substitution kapag kinakalkula ang isang digital pirma. Ipinapakita rin nito kung paano mo mababago ang mga parameter ng pag-verify ng session sa OpenSSH kapag kumokonekta nang malayuan sa isang guest system, at pagkatapos ay baguhin ang estado ng pag-verify kapag pinapatakbo ang sudo utility upang makakuha ng mga karapatan sa ugat sa Ubuntu 20.04. Ang pagsasamantala ay nasubok sa mga system na may AMD EPYC 7252, 7313P at 7443 na mga processor.

Pinagmulan: opennet.ru

Magdagdag ng komento