У працэсарах AMD выяўлена яшчэ адна ўразлівасць, якая дапускае напады класа Meltdown

Група даследнікаў з Грацкага тэхнічнага ўніверсітэта (Аўстрыя) і Цэнтра Гельмгольца па інфармацыйнай бяспецы (CISPA) расчыніла звесткі аб уразлівасці (CVE-2021-26318) ва ўсіх працэсарах AMD, якая робіць магчымым правядзенне нападаў па іншых каналах класа Meltdown (першапачаткова меркавалася, не схільныя ўразлівасці Meltdown). З практычнага боку напад можа ўжывацца для арганізацыі ўтоеных каналаў перадачы дадзеных, маніторынгу за актыўнасцю ў ядры ці атрыманні звестак аб адрасах у памяці ядра для абыходу абароны на аснове рандомизации адрасоў (KASLR) падчас эксплуатацый уразлівасцяў у ядры.

Кампанія AMD лічыць немэтазгодным прыняцце адмысловых мер для блакавання праблемы, бо ўразлівасць, як і выяўленая ў жніўні падобная атака, малапрыдатная ў рэальных умовах, абмежаваная бягучымі межамі адраснай прасторы працэсу і патрабуе наяўнасці ў ядры вызначаных гатовых паслядоўнасцяў інструкцый (гаджэтаў). Для дэманстрацыі нападу даследнікі загружалі ўласны модуль ядра са штучна дададзеным гаджэтам. У рэальных умовах для падстаноўкі неабходных паслядоўнасцяў атакавалыя могуць выкарыстоўваць, напрыклад, рэгулярна ўсплываючыя ўразлівасці ў падсістэме eBPF.

Для абароны ад новага віду атакі кампанія AMD рэкамендавала прымяняць метады бяспечнага кадавання, якія дапамагаюць блакаваць атакі Meltdown, такія як выкарыстанне інструкцый LFENCE. Якія выявілі праблему даследнікі рэкамендуюць уключыць стражэйшую ізаляцыю табліц старонак памяці (KPTI), якая да гэтага ўжывалася толькі для працэсараў Intel.

Падчас эксперыменту даследнікам атрымалася дамагчыся ўцечкі інфармацыі з ядра ў працэс у прасторы карыстача з хуткасцю 52 байта ў секунду, пры наяўнасці ў ядры гаджэта, які выконвае аперацыю "if (offset <data_len) tmp = LUT [data [offset] * 4096];" . Прапанавана некалькі метадаў вымання па іншых каналах звестак, якія асядаюць у кэшы падчас спекулятыўнага выканання. Першы метад заснаваны на аналізе адхіленняў часу выканання працэсарнай інструкцыяй "PREFETCH" (Prefetch+Time), а другі на змене змены энергаспажывання пры выкананні "PREFETCH" (Prefetch+Power).

Нагадаем, што класічная ўразлівасць Meltdown засноўваецца на тым, што падчас спекулятыўнага выканання інструкцый працэсар можа выканаць зварот да зачыненай вобласці дадзеных, пасля чаго адкінуць вынік, бо выстаўленыя прывілеі забараняюць такі зварот з працэсу карыстача. У праграме спекулятыўна выкананы блок адлучаецца ад асноўнага кода ўмоўным пераходам, які ў рэальных умовах заўсёды спрацоўвае, але з-за таго, што ва ўмоўным аператары выкарыстоўваецца якое вылічаецца значэнне, якое працэсар не ведае падчас папераджальнага выканання кода, ажыццяўляецца спекулятыўнае выкананне ўсіх варыянтаў галінавання.

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

Крыніца: opennet.ru

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