AEPIC Leak. Изучаем нашумевшую уязвимость в процессорах Intel

  • Партнер

  • Содержание статьи

    • Что такое Intel SGX?
    • Брешь Aepic Leak
    • Выявление уязвимости
    • Цели атаки
    • Немного теории
    • Архитектура Intel SGX
    • Эксплуатация
    • Насколько это опасно?
    • Как обезопасить свои данные?

    Прог­рам­мно экс­плу­ати­руемая аппа­рат­ная уяз­вимость — явле­ние ред­кое. Обна­ружить такую неп­росто, а пофик­сить — еще слож­нее: если проб­лема скры­вает­ся в архи­тек­туре про­цес­сора, она впол­не может ока­зать­ся и вов­се неус­тра­нимой. Тех­нология Intel SGX уже неод­нократ­но под­верга­лась ата­кам, и вот недав­но объ­еди­нен­ная груп­па иссле­дова­телей обна­ружи­ла в про­цес­сорах Intel еще один архи­тек­турный баг, поз­воля­ющий орга­низо­вать утеч­ку клю­чей шиф­рования и дру­гой кри­тич­ной информа­ции.

    Баг получил наиме­нова­ние AEPIC Leak. Давай раз­берем­ся в его устрой­стве и пос­мотрим, так ли он опа­сен, как об этом говорят.

     

    Что такое Intel SGX?

    Тех­нологию SGX (Software Guard Extensions) называ­ют кра­еуголь­ным кам­нем сис­темы безопас­ности про­цес­соров Intel. По боль­шому сче­ту SGX пред­став­ляет собой набор инс­трук­ций, поз­воля­ющих прог­раммам, в час­тнос­ти опе­раци­онным сис­темам и вир­туаль­ным машинам, соз­давать так называ­емые анкла­вы — защищен­ные учас­тки памяти для хра­нения клю­чей шиф­рования и про­чих кри­тич­ных дан­ных.

    Глав­ная осо­бен­ность анкла­вов зак­люча­ется в том, что, кро­ме про­цес­са‑вла­дель­ца, ни один дру­гой про­цесс, вклю­чая ядро ОС, гипер­визоры вир­туаль­ных машин, перифе­рий­ные устрой­ства, обра­щающиеся к памяти с пря­мыми зап­росами DMA, не име­ют прав на чте­ние из защищен­ной области памяти и запись в нее. Это гаран­тиру­ет целос­тность хра­нящих­ся там дан­ных.

    Те­оре­тичес­ки нет никакой воз­можнос­ти изме­нить содер­жимое анкла­вов SGX, даже если сама опе­раци­онная сис­тема ском­про­мети­рова­на или в ней работа­ет вре­донос­ное ПО с высоки­ми при­виле­гиями. С исполь­зовани­ем это­го инс­тру­мен­та мож­но орга­низо­вать надеж­ное шиф­рование дан­ных (нап­ример, для соз­дания защищен­ных дис­ковых раз­делов), выпол­нять безопас­ные уда­лен­ные вычис­ления, хра­нить циф­ровые сер­тифика­ты или реали­зовать сис­темы защиты от копиро­вания — так, SGX активно исполь­зовал­ся в тех­нологии записи дан­ных Blu-ray. Изна­чаль­но SGX соз­давал­ся имен­но для вычис­лений на уда­лен­ных машинах в обо­соб­ленном и пол­ностью защищен­ном окру­жении.

    SGX появи­лась в 2015 году в про­цес­сорах Intel шес­того поколе­ния Skylake. Имен­но в эти чипы был встро­ен аппа­рат­ный модуль Memory Encryption Engine, обес­печива­ющий шиф­рование дан­ных, которые переда­ются от про­цес­сора в анкла­вы памяти SGX. Пос­коль­ку шиф­рование выпол­нялось ком­понен­том CPU, периметр безопас­ности огра­ничи­вал­ся толь­ко про­цес­сором, без обме­на незашиф­рован­ными дан­ными с опе­ратив­ной памятью, всег­да счи­тав­шей­ся ненадеж­ной в пла­не информа­цион­ной безопас­ности.

     

    Брешь Aepic Leak

    AEPIC Leak — пер­вый архи­тек­турный баг CPU, поз­воля­ющий ата­кующе­му сли­вать дан­ные из про­цес­сора без исполь­зования сто­рон­него канала. Такие уяз­вимос­ти, как Meltdown или Spectre, не явля­ются пол­ностью аппа­рат­ными багами. Они пред­став­ляют собой аппа­рат­ные уяз­вимос­ти, которые экс­плу­ати­руют­ся из прог­рам­мно­го обес­печения. Сле­дова­тель­но, сто­рон­ний канал — это внеш­нее ПО. Дру­гими сло­вами, брешь AEPIC Leak поз­воля­ет уво­дить дан­ные нап­рямую, без исполь­зования спе­циаль­ных прог­рамм. Тем не менее, что­бы соз­дать эти дан­ные, при­меня­ются спе­циаль­ные архи­тек­турно зависи­мые биб­лиоте­ки Intel IPP и SGX. Ата­ки на уяз­вимос­ти Meltdown и Spectre называ­ются ата­ками переход­ного исполне­ния из‑за необ­ходимос­ти исполь­зования такого спе­циаль­ного соф­та.

    К чис­то архи­тек­турным багам так­же отно­сят­ся широко извес­тные уяз­вимос­ти FDIV и F00F. Пер­вый из них был обна­ружен в ори­гиналь­ных про­цес­сорах Pentium и при­водил к невер­ным резуль­татам при делении чисел с пла­вающей запятой с помощью инс­трук­ции FDIV. Вто­рой же при­сутс­тво­вал в боль­шем чис­ле моделей про­цес­соров, вклю­чая всю линей­ку мик­роар­хитек­турно­го ряда P5. Ошиб­ка мог­ла при­вес­ти к оста­нову про­цес­сора еще при заг­рузке опе­раци­онной сис­темы, а «лечили» это, обновляя ОС.

    Меж­ду тем в девянос­тые годы прош­лого века, ког­да были выяв­лены две эти уяз­вимос­ти, диапа­зон вычис­лений не рас­простра­нял­ся даль­ше локаль­ного компь­юте­ра. Поэто­му, хотя выяв­ление этих багов надела­ло мно­го шума, умыш­ленная их экс­плу­ата­ция не соз­давала для поль­зовате­лей серь­езных проб­лем, осо­бен­но пос­ле выхода зап­латок. В наше вре­мя кар­тина выг­лядит ина­че. Мир зависит от вычис­лений в обла­ках, а так как SGX — глав­ный защит­ный механизм уда­лен­ных вычис­лений, экс­плу­ата­ция хакера­ми его уяз­вимос­ти наносит сок­рушитель­ный удар по кон­фиден­циаль­нос­ти дан­ных.

     

    Выявление уязвимости

    Ис­сле­дова­тели прос­каниро­вали адресное прос­транс­тво вво­да/вывода про­цес­соров, базиру­ющих­ся на мик­роар­хитек­туре Intel Sunny Cove. В резуль­тате уда­лось обна­ружить, что не все регис­тры локаль­ного APIC про­ини­циали­зиро­ваны дол­жным обра­зом. Дру­гими сло­вами, пос­ле выпол­нения опе­рации чте­ния/записи эти регис­тры не очи­щают­ся и про­дол­жают хра­нить ста­рые зна­чения, которые исполь­зовались в пре­дыду­щем вычис­лении.

    Пос­редс­твом AEPIC Leak мож­но про­честь зарезер­вирован­ную часть APIC-регис­тров. APIC исполь­зует суперо­чередь меж­ду L2 и LLC для переда­чи дан­ных ядру про­цес­сора. Зарезер­вирован­ная часть не переза­писы­вает­ся, что поз­воля­ет хакеру про­честь уста­рев­шие дан­ные дру­гого при­ложе­ния.

    На­ибо­лее уяз­вимым учас­тком переда­чи дан­ных внут­ри CPU, отку­да мож­но утя­нуть цен­ную информа­цию, явля­ется суперо­чередь — буфер для переда­чи дан­ных из кеша L2 в LLC и обратно. При наличии адми­нис­тра­тив­ных при­виле­гий в сис­теме это поз­воля­ет похитить хра­нящи­еся в анкла­ве SGX дан­ные без исполь­зования слож­ных схем.

     

    Цели атаки

    Уяз­вимос­ти AEPIC Leak под­верже­ны все про­цес­соры Intel на базе архи­тек­туры Sunny Cove (такие как Ice Lake и Alder Lake), то есть кли­ент­ские мик­ропро­цес­соры 10, 11 и 12-го поколе­ний, а так­же сер­верные про­цес­соры Xeon треть­его поколе­ния.

    При этом сама Intel выкати­ла более широкий спи­сок про­цес­соров, под­вержен­ных уяз­вимос­ти AEPIC Leak, вклю­чающий Ice Lake Xeon-SP, Ice Lake D, Gemini Lake, Ice Lake U, Y и Rocket Lake.

    Све­дения о том, под­верже­ны ли ата­кам на эту брешь про­цес­соры фир­мы AMD, раз­нятся. Кто‑то сооб­щает, что такие про­цес­соры не име­ют этой уяз­вимос­ти, дру­гие утвер­жда­ют, буд­то ата­кам под­верже­ны про­цес­соры на архи­тек­турах Zen 1–3.

    Да­ниель Грусс (иссле­дова­тель из груп­пы Грац­ско­го тех­ничес­кого уни­вер­ситета, опуб­ликовав­шей отчет об уяз­вимос­ти) утвер­жда­ет, что, пос­коль­ку Apple M1 (и, воз­можно, M2) пос­тро­ены на осно­ве того же дизай­на, что и Sunny Cove, они тоже под­верже­ны ата­кам на уяз­вимость AEPIC Leak.

    Хо­тя уста­нов­лено, что наиболь­шую опас­ность AEPIC Leak пред­став­ляет для локаль­ных сис­тем, это не зна­чит, что хакер не может на сво­ем компь­юте­ре под­готовить экс­плу­ати­рующую уяз­вимость мал­варь и под­сунуть ее поль­зовате­лю, работа­юще­му на целевой сис­теме. Оста­нет­ся зас­тавить поль­зовате­ля запус­тить вре­донос­ную прог­рамму, а даль­ше уже дело тех­ники.

    Как все‑таки работа­ет уяз­вимость AEPIC Leak? Сей­час раз­берем­ся.

     

    Немного теории

    Сов­ремен­ные про­цес­соры — край­не слож­ные устрой­ства, сос­тоящие из набора логичес­ких эле­мен­тов, управля­емых собс­твен­ным набором мик­ропрог­рамм. Один из них — рас­ширен­ный прог­рамми­руемый кон­трол­лер пре­рыва­ний (APIC), управля­ющий, как сле­дует из его наз­вания, пре­рыва­ниями. Он сос­тоит из локаль­ного APIC, интегри­рован­ного в каж­дое логичес­кое ядро и ответс­твен­ного за обра­бот­ку меж­про­цес­сорных пре­рыва­ний, и внеш­него APIC, управля­юще­го пре­рыва­ниями вво­да/вывода.

    В свою оче­редь, локаль­ный APIC содер­жит так называ­емые регис­тры, пред­назна­чен­ные для управле­ния его фун­кци­ональ­ностью или отоб­ражения сос­тояния пре­рыва­ний в сис­теме. По умол­чанию сов­ремен­ные кон­трол­леры APIC фун­кци­они­руют в режиме xAPIC, в котором каж­дый регистр пред­став­ляет собой область раз­мером 4 Кбайт в физичес­ком адресном прос­транс­тве памяти. Раз­ные модели про­цес­соров име­ют раз­ное количес­тво APIC-регис­тров: от 32 до 256.

    Источник: xakep.ru

    Ответить

    Ваш адрес email не будет опубликован. Обязательные поля помечены *