Google Project Zero meeskonna teadlased avastasid Linuxi kerneli koosseisu kuuluvas KVM-hüperviisoris haavatavuse (CVE-2021-29657), mis võimaldab mööda minna külalissüsteemi isolatsioonist ja käivitada oma koodi hostkeskkonna poolel. Probleem esineb AMD protsessoritega süsteemides kasutatavas koodis (moodul kvm-amd.ko) ega avaldu Intel protsessorite puhul.
Teadlased valmistasid ette toimiva exploit'i prototüübi, mis võimaldab külaliskeskkonnast käivitada root shelli hostkeskkonnas süsteemis, millel on AMD Epyc 7351P protsessor ja Linuxi kernel 5.10. Märgitakse, et see on esimene «guest-to-host» klassi turvaauk hüperviisoris endas KVM, mis ei ole seotud kasutajaruumis töötavate komponentide, näiteks QEMU, vigadega. Parandus võeti kernelisse vastu märtsi lõpus. Probleem avaldub alates Linuxi kerneli versioonist 5.10-rc1 kuni versioonini v5.12-rc6, st see puudutab ainult kerneli harusid 5.10 ja 5.11 (enamikku distributsioonide stabiilseid harusid probleem ei mõjutanud).
Probleem esineb mehhanismis nested_svm_vmrun, mis on realiseeritud AMD SVM (Secure Virtual Machine) laienduse abil ja võimaldab korraldada külalissüsteemide pesastatud käivitamist. Selle funktsionaalsuse korrektseks rakendamiseks peab hüperviisor kinni püüdma kõik külalissüsteemides täidetavad SVM-käsud, emuleerima nende käitumist ning sünkroonima oleku riistvaraga, mis on üsna keerukas ülesanne. Analüüsides KVM-is pakutud teostust, leidsid teadlased loogikavea, mis võimaldab külalissüsteemist mõjutada hosti MSR-registrite (Model-Specific Register) sisu, mida saab kasutada koodi käivitamiseks hosti tasemel.
Täpsemalt põhjustab VMRUN-operatsiooni täitmine teise pesastustaseme külalissüsteemist (L2, mis on käivitatud teisest külalissüsteemist) nested_svm_vmrun teise väljakutse ja struktuuri svm->nested.hsave rikkumise, millele kirjutatakse peale külalissüsteemi L2 vmcb andmed. Selle tulemusena tekib olukord, kus L2 külalissüsteemi tasemel saab vabastada mälu struktuuris svm->nested.msrpm, kus hoitakse MSR-bitti, kuigi see on endiselt kasutuses, ning saada ligipääs hostkeskkonna MSR-idele.
Allikas: opennet.ru
