Plundervolt – новы метад нападу на працэсары Intel, які закранае тэхналогію SGX

Кампанія Intel выпусціла абнаўленне мікракода, які ліквідуе уразлівасць (CVE-2019-14607), якая дазваляе праз маніпуляцыі з механізмам дынамічнага кіравання напругай і частатой у CPU ініцыяваць пашкоджанне змесціва вочак з дадзенымі, у тым ліку ў абласцях, выкарыстоўваных пры вылічэннях у ізаляваных анклавах Intel SGX. Атака атрымала назву Plundervolt, і патэнцыйна дазваляе лакальнаму карыстачу дамагчыся падвышэнні сваіх прывілеяў у сістэме, выклікаць адмову ў абслугоўванні і атрымаць доступ да зачыненых дадзеных.

Атака ўяўляе небяспеку толькі ў кантэксце маніпуляцый з вылічэннямі ў анклавах SGX, бо для правядзення патрабуе наяўнасці правоў root у сістэме. У найпростым выпадку, атакавалы можа дамагчыся занясенні скажэнняў у інфармацыю, апрацоўваную ў анклаве, але пры больш складаных сцэнарах не выключаецца магчымасць узнаўлення захоўваемых у анклаве зачыненых ключоў, выкарыстоўваных для шыфравання з выкарыстаннем алгарытмаў RSA-CRT і AES-NI. Тэхніка таксама можа прымяняцца для генерацыі памылак у першапачаткова карэктных алгарытмах для правакавання ўзнікнення ўразлівасцяў пры працы з памяццю, напрыклад, для арганізацыі звароту да вобласці за мяжой выдзеленага буфера.
Прататып кода для здзяйснення нападу апублікаваны на GitHub

Сутнасць метаду ў стварэнні ўмоў для ўзнікнення непрадбачаных скажэнняў дадзеных пры вылічэннях у SGX, ад якіх не абараняе ўжыванне шыфравання і аўтэнтыфікацыі памяці ў анклаве. Для ўнясення скажэнняў аказалася можна выкарыстоўваць штатныя праграмныя інтэрфейсы для кіравання частатой і напругай, звычайна прымяняюцца для зніжэння энергаспажывання падчас прастою сістэмы і актывацыі максімальнай прадукцыйнасці пры выкананні інтэнсіўных работ. Характарыстыкі частаты і напругі ахопліваюць увесь чып, у тым ліку ўплываюць на выкананне вылічэнняў у ізаляваным анклаве.

Змяняючы напругу, можна дамагчыся ўзнікненні ўмоў, пры якіх зарада апыняецца нядосыць для рэгенерацыі вочка памяці ўсярэдзіне CPU, і яе значэнне змяняецца. Ключавым адрозненнем ад нападу RowHammer з'яўляецца тое, што RowHammer дазваляе змяніць змесціва асобных бітаў у памяці DRAM, шляхам цыклічнага чытання дадзеных з суседніх ячэек, у той час як Plundervolt дазваляе дамагчыся змены бітаў усярэдзіне CPU, калі дадзеныя ўжо загружаныя з памяці для выканання вылічэнняў. Падобная асаблівасць дазваляе абыйсці ужывальныя ў SGX механізмы кантролю цэласнасці і шыфраванні дадзеных у памяці, бо значэнні ў памяці застаюцца карэктнымі, але могуць сказіцца пры аперацыях з імі, да таго як вынік будзе запісаны ў памяць.

Калі дадзенае змененае значэнне выкарыстоўваецца ў працэсе множання ў працэсе шыфравання, то на выхадзе адмаўляецца некарэктны шыфратэкст. Маючы магчымасць звяртацца да апрацоўшчыка ў SGX для шыфравання сваіх дадзеных, атакавалы можа выклікаючы збоі назапасіць статыстыку аб змене шыфратэксту на выхадзе і за некалькі хвілін аднавіць значэнне захоўваецца ў анклаве ключа. Зыходны тэкст на ўваходзе і карэктны шыфратэкст на выхадзе вядомыя, ключ не змяняецца, а выснова некарэктнага шыфратэксту сведчыць аб скажэнні нейкага біта на супрацьлеглае значэнне.

Прааналізаваўшы назапашаныя пры розных збоях пары значэнняў карэктнага і скажонага шыфратэкстаў, пры дапамозе метадаў дыферэнцыяльнага аналізу збояў (DFA, Differential Fault Analysis) можна прадбачыць верагодныя ключы, якія ўжываюцца для сіметрычнага шыфравання AES, а затым, прааналізаваўшы скрыжаванні ключоў у розных наборах, вызначыць шуканы ключ.

Праблеме схільныя розныя мадэлі працэсараў Intel, у тым ліку CPU Intel Core з 6
па 10 пакаленне, а таксама пятае і шостае пакаленні Xeon E3, першае і другое пакаленні Intel Xeon Scalable, Xeon D,
Xeon W і Xeon E.

Нагадаем, што тэхналогія SGX (Пашырэння праграмнага забеспячэння) з'явілася ў працэсарах Intel Core шостага пакалення (Skylake) і прапануе серыю інструкцый, якія дазваляюць вылучаць прыкладанням карыстацкага ўзроўня зачыненыя вобласці памяці - анклавы, змесціва якіх не можа быць прачытана і зменена нават ядром і кодам, выкананым у рэжымах ring0, SMM і VMM. Перадаць кіраванне коду ў анклаве немагчыма традыцыйнымі функцыямі пераходу і маніпуляцыямі з рэгістрамі і стэкам - для перадачы кіравання ў анклав прымяняецца спецыяльна створаная новая інструкцыя, якая выконвае праверку паўнамоцтваў. Пры гэтым змешчаны ў анклаў код можа ўжываць класічныя метады выкліку для звароту да функцый усярэдзіне анклава і адмысловую інструкцыю для выкліку вонкавых функцый. Для абароны ад апаратных нападаў, такіх як падлучэнне да модуля DRAM, ужываецца шыфраванне памяці анклава.

Крыніца: opennet.ru

Дадаць каментар