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

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

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

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

У адрозненне ад іншых падобных нападаў па іншых каналах новы метад не аналізуе змену часу доступу да пракэшаваных і не пракэшаваных дадзеных і не патрабуе выканання стадыі са скідам рэгістра EFLAGS да пачатковага стану, што абцяжарвае выяўленне і блакаванне нападу. У якасці дэманстрацыі даследнікі рэалізавалі варыянт нападу Meltdown, задзейнічаўшы ў ім новы метад для атрымання інфармацыі аб выніку выканання спекулятыўнай аперацыі. Праца метаду для арганізацыі ўцечкі інфармацыі пры правядзенні нападу Meltdown паспяхова прадэманстравана на сістэмах з CPU Intel Core i7-6700 і i7-7700 у асяроддзі з Ubuntu 22.04 і ядром Linux 5.15. На сістэме з CPU Intel i9-10980XE атаку ўдалося правесці толькі часткова.

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

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

Крыніца: opennet.ru

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