Даследнікі Цэнтра Гельмгольца па інфармацыйнай бяспецы (CISPA) апублікавалі новы метад нападу CacheWarp, які дазваляе скампраметаваць механізм абароны AMD SEV (Secure Encrypted Virtualization), які ўжываецца ў сістэмах віртуалізацыі для абароны віртуальных машын ад умяшання са боку гіпервізара-адміністратара. Прапанаваны метад дазваляе зламысніку, які мае доступ да гіпервізара, дамагчыся выкананні іншага кода і падвышэнні прывілеяў у віртуальнай машыне, абароненай пры дапамозе AMD SEV.
Атака заснавана на выкарыстанні ўразлівасці (CVE-2023-20592), выкліканай некарэктнай працай з кэшам падчас выканання працэсарнай інструкцыі INVD, пры дапамозе якой можна дамагчыся разузгадненні дадзеных у памяці і кэшы, і абыйсці механізмы падтрымання цэласнасці памяці віртуальных машын, рэалізаваныя на базе SEV-ES і SEV-SNP. Уразлівасць закранае працэсары AMD EPYC з першага па трэцяе пакаленні.
Для працэсараў AMD EPYC трэцяга пакалення (Zen 3) праблема ўхіленая ў лістападаўскім абнаўленні мікракода, выпушчаным учора кампаніяй AMD (выпраўленне не прыводзіць да паніжэння прадукцыйнасці). Для першага і другога пакаленняў AMD EPYC (Zen 1 і Zen 2) абарона не прадугледжана, бо ў дадзеных CPU адсутнічае падтрымка пашырэння SEV-SNP, які забяспечвае кантроль цэласнасці віртуальная машына. Чацвёртае пакаленне працэсараў AMD AMD EPYC "Genoa" на базе мікраархітэктуры "Zen 4" уразлівасці не схільна.
Тэхналогія AMD SEV ужываецца для ізаляцыі віртуальных машын такімі хмарнымі правайдэрамі, як Amazon Web Services (AWS), Google Cloud, Microsoft Azure і Oracle Compute Infrastructure (OCI). Абарона AMD SEV рэалізавана праз шыфраванне на апаратным узроўні памяці віртуальных машын. Дадаткова пры дапамозе пашырэння SEV-ES (Encrypted State) ажыццяўляецца абарона рэгістраў CPU. Доступ да расшыфраваных дадзеных мае толькі бягучая гасцёўня сістэма, а астатнія віртуальная машына і гіпервізор пры спробе звароту да гэтай памяці атрымліваюць зашыфраваны набор дадзеных.
У трэцім пакаленні працэсараў AMD EPYC было рэалізавана дадатковае пашырэнне SEV-SNP (Secure Nested Paging), якое забяспечвае бяспечную працу са ўкладзенымі табліцамі старонак памяці. У дадатак да агульнага шыфравання памяці і ізаляцыі рэгістраў, у SEV-SNP рэалізаваны дадатковыя сродкі для абароны цэласнасці памяці, не дапушчальныя занясенні змен у VM са боку гіпервізара. Кіраванне ключамі шыфравання вырабляецца на баку ўбудаванага ў чып асобнага працэсара PSP (Platform Security Processor), рэалізаванага на базе архітэктуры ARM.
Сутнасць прапанаванага метаду нападу выкарыстанні інструкцыі INVD для анулявання блокаў (ліній) у кэшы брудных (dirty) старонак без скіду назапашаных у кэшы дадзеных у памяць (write-back). Такім чынам метад дазваляе выцесніць змененыя дадзеныя з кэша, не змяняючы стан памяці. Для здзяйснення нападу прапануецца выкарыстоўваць праграмныя выключэнні (fault injection) для перапынення працы віртуальнай машыны ў двух месцах: у першым месцы атакавалы выклікае інструкцыю "wbnoinvd" для скіду ўсіх назапашаных у кэшы аперацый запісу ў памяць, а ў другім месцы выклікае інструкцыю "invd" для вяртання неадлюстраваных у памяці аперацый запісу ў стары стан.
Для праверкі сваіх сістэм на наяўнасць уразлівасці апублікаваны прататып эксплоіта, які дазваляе выканаць падстаноўку выключэння ў віртуальную машыну, абароненую праз AMD SEV, і адкаціць у стары стан няскінутыя ў памяць змены ў VM. Адкат змены можа быць скарыстаны для змены ходу выканання праграмы праз вяртанне старога адрасу звароту ў стэку або для выкарыстання пры ўваходзе параметраў старога сеансу, для якога раней была выканана аўтэнтыфікацыя, праз вяртанне значэння прыкметы аўтэнтыфікацыі.
Напрыклад, даследнікамі прадэманстравана магчымасць ужывання метаду CacheWarp для здзяйснення нападу Bellcore на рэалізацыю алгарытму RSA-CRT у бібліятэцы ipp-crypto, якая дазволіла аднавіць зачынены ключ праз падстаноўку памылак пры вылічэнні лічбавага подпісу. Таксама паказана як можна падмяніць параметры праверкі сеансу да OpenSSH пры выдаленым падлучэнні да гасцявой сістэмы, а затым змяніць стан праверкі пры выкананні ўтыліты sudo для атрымання правоў root у Ubuntu 20/04. Праца эксплоіта праверана на сістэмах з працэсарамі AMD EPYC 7252, 7313P і 7443.
Крыніца: opennet.ru
