Vundebleco en AMD-CPUoj, kiuj ebligas al vi preteriri la sekurmekanismon de SEV (Secure Encrypted Virtualization)

Esploristoj ĉe la Helmholtz Centro por Informa Sekureco (CISPA) publikigis novan CacheWarp atakmetodon por endanĝerigi la AMD SEV (Secure Encrypted Virtualization) sekurecmekanismon uzitan en virtualigsistemoj por protekti virtualajn maŝinojn kontraŭ interfero de la hiperviziero aŭ gastiga sistemadministranto. La proponita metodo permesas al atakanto kun aliro al la hiperviziero ekzekuti triapartan kodon kaj pligrandigi privilegiojn en virtuala maŝino protektita per AMD SEV.

La atako baziĝas sur la uzo de vundebleco (CVE-2023-20592) kaŭzita de malĝusta funkciado de la kaŝmemoro dum la ekzekuto de la INVD-procesora instrukcio, kun la helpo de kiu eblas atingi datuman miskongruon en memoro kaj kaŝmemoro. , kaj preterpasi mekanismojn por konservado de la integreco de virtuala maŝinmemoro, efektivigita surbaze de etendaĵoj SEV-ES kaj SEV-SNP. La vundebleco influas procesorojn AMD EPYC de la unua ĝis la tria generacio.

Por triageneraciaj AMD EPYC-procesoroj (Zen 3), la problemo estas solvita en la novembra mikrokoda ĝisdatigo publikigita hieraŭ de AMD (la riparo ne rezultigas ajnan rendimentan degeneron). Por la unua kaj dua generacioj de AMD EPYC (Zen 1 kaj Zen 2), protekto ne estas provizita, ĉar ĉi tiuj CPU-oj ne subtenas la etendon SEV-SNP, kiu disponigas integreckontrolon por virtualaj maŝinoj. La kvara generacio de AMD AMD EPYC "Genoa" procesoroj bazitaj sur la "Zen 4" mikroarkitekturo ne estas vundebla.

AMD SEV-teknologio estas uzata por virtuala maŝina izolado de nubaj provizantoj kiel Amazon Web Services (AWS), Google Cloud, Microsoft Azure kaj Oracle Compute Infrastructure (OCI). AMD SEV-protekto estas efektivigita per aparatar-nivela ĉifrado de virtuala maŝina memoro. Aldone, la etendaĵo SEV-ES (Ĉifrita Ŝtato) protektas CPU-registrojn. Nur la nuna gastsistemo havas aliron al la deĉifritaj datumoj, kaj kiam aliaj virtualaj maŝinoj kaj la hiperviziero provas aliri ĉi tiun memoron, ili ricevas ĉifritan aron da datumoj.

La tria generacio de AMD EPYC-procesoroj enkondukis plian etendon, SEV-SNP (Secure Nested Paging), kiu certigas sekuran funkciadon de nestitaj memorpaĝaj tabeloj. Aldone al ĝenerala memorĉifrado kaj registra izoliteco, SEV-SNP efektivigas kromajn iniciatojn protekti memorintegrecon malhelpante ŝanĝojn al la VM de la hiperviziero. Ĉifradŝlosiloj estas administritaj flanke de aparta procesoro PSP (Platform Security Processor) konstruita en la blaton, efektivigita surbaze de ARM-arkitekturo.

La esenco de la proponita atakmetodo estas uzi la INVD-instrukcion por malvalidigi blokojn (liniojn) en la kaŝmemoro de malpuraj paĝoj sen forĵeti la datumojn akumulitajn en la kaŝmemoro en memoron (reskribo). Tiel, la metodo permesas elpeli ŝanĝitajn datumojn el la kaŝmemoro sen ŝanĝi la memoran staton. Por fari atakon, oni proponas uzi programajn esceptojn (faŭltan injekton) por interrompi la funkciadon de la virtuala maŝino en du lokoj: unue, la atakanto vokas la "wbnoinvd" instrukcion por restarigi ĉiujn memorajn skribajn operaciojn akumulitajn en. la kaŝmemoro, kaj en la dua loko vokas la "invd" instrukcion por resendi skribajn operaciojn ne reflektitajn en memoro al la malnova stato.

Por kontroli viajn sistemojn pri vundeblecoj, ekspluata prototipo estis publikigita, kiu ebligas al vi enmeti escepton en virtualan maŝinon protektitan per AMD SEV kaj refari ŝanĝojn en la VM, kiuj ne estis restarigitaj al memoro. Rollback de ŝanĝo povas esti uzita por ŝanĝi la fluon de programo resendante malnovan revenadreson sur la stakon, aŭ por uzi la ensalutajn parametrojn de malnova sesio kiu antaŭe estis aŭtentikigita resendante aŭtentikigvaloron.

Ekzemple, esploristoj pruvis la eblecon uzi la CacheWarp-metodon por efektivigi Bellcore-atakon kontraŭ la efektivigo de la algoritmo RSA-CRT en la ipp-kripto-biblioteko, kiu ebligis reakiri la privatan ŝlosilon per erar-anstataŭigo dum kalkulo de cifereca. subskribo. Ĝi ankaŭ montras kiel vi povas ŝanĝi la sesiajn konfirmajn parametrojn al OpenSSH kiam vi konektas malproksime al gastsistemo, kaj poste ŝanĝi la kontrolan staton kiam vi rulas la sudo-servaĵon por akiri radikrajtojn en Ubuntu 20.04. La ekspluato estis provita sur sistemoj kun AMD EPYC 7252, 7313P kaj 7443 procesoroj.

fonto: opennet.ru

Aldoni komenton