Прапанаваны метад нападу для выдаленага вызначэння фрагментаў памяці на серверы.

Група даследнікаў з Грацкага тэхнічнага ўніверсітэта (Аўстрыя), раней вядомая распрацоўкай нападаў MDS, NetSpectre, Throwhammer і ZombieLoad, апублікавала новы метад нападу (CVE-2021-3714) па іншых каналах на механізм дэдуплікацыі старонак памяці (Memory-Deduplication), дазваляючы у памяці вызначаных дадзеных, арганізаваць пабайтавую ўцечку змесціва памяці ці вызначыць раскладку памяці для абыходу абароны на аснове рандомизации адрасоў (ASLR). Ад раней дэманстраваных варыянтаў нападаў на механізм дэдуплікацыі новы метад адрозніваецца правядзеннем нападу з вонкавага хаста з выкарыстаннем у якасці крытэра змены часу адказаў на якія адпраўляюцца атакавалым запыты па пратаколах HTTP/1 і HTTP/2. Магчымасць правядзення напады прадэманстравана для сервераў на базе Linux і Windows.

Напады на механізм дэдуплікацыі памяці выкарыстоўваюць у якасці канала для ўцечкі звестак розніцу ў часе апрацоўкі аперацыі запісу ў сітуацыях, калі змена дадзеных прыводзіць да кланавання дэдуплікаванай старонкі памяці пры дапамозе механізму Copy-On-Write (COW). Падчас прац ядро ​​вызначае аднолькавыя старонкі памяці ад розных працэсаў і аб'ядноўвае іх, адлюстроўваючы ідэнтычныя старонкі памяці ў адну вобласць фізічнай памяці для захоўвання толькі адно копіі. Пры спробе змены адным з працэсаў дадзеных, злучаных з дэдуплікаванымі старонкамі, узнікае выключэнне (page fault) і пры дапамозе механізму Copy-On-Write аўтаматычна ствараецца асобная копія старонкі памяці, якая замацоўваецца за працэсам. На выкананне капіявання марнуецца дадатковы час, што можа быць прыкметай змены дадзеных якія перасякаюцца з іншым працэсам.

Даследнікі паказалі, што якія ўзнікаюць у выніку працы механізму COW затрымкі можна ўлавіць не толькі лакальна, але і аналізуючы змена часу дастаўкі адказаў па сетцы. Прапанавана некалькі метадаў вызначэння змесціва памяці з выдаленага хаста праз аналіз часу выканання запытаў па пратаколах HTTP/1 і HTTP/2. Для захавання падбіраемых шаблонаў выкарыстоўваюцца тыпавыя web-прыкладанні, якія захоўваюць у памяці якая паступае ў запытах інфармацыю.

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

Прапанаваны метад нападу для выдаленага вызначэння фрагментаў памяці на серверы.

Падчас праведзеных эксперыментаў максімальная хуткасць уцечкі інфармацыі склала 34.41 байт у гадзіну пры нападзе праз глабальную сетку і 302.16 байт у гадзіну пры нападзе праз лакальную сетку, што хутчэй за іншых метадаў здабывання дадзеных па іншых каналах (напрыклад, пры нападзе NetSpectre хуткасць перадачы дадзеных складае 7.5 байт у гадзіну).

Прапанавана тры працоўныя варыянты атакі. Першы варыянт дазваляе вызначыць дадзеныя ў памяці web-сервера, на якім выкарыстоўваецца Memcached. Атака зводзіцца да загрузкі пэўных набораў дадзеных у сховішча Memcached, ачыстцы дэдуплікаванага блока, паўторнага запісу таго ж элемента і стварэння ўмовы для ўзнікнення COW-капіравання праз змену змесціва блока. Падчас эксперыменту з Memcached атрымалася за 166.51 секунд вызначыць версію libc, усталяваную ў сістэме, запушчанай у віртуальнай машыне.

Другі варыянт даў магчымасць пазнаць змесціва запісаў у СКБД MariaDB, пры выкарыстанні сховішчы InnoDB, праз узнаўленне змесціва байт за байтам. Атака вырабляецца праз адпраўку спецыяльна змененых запытаў, якія прыводзяць да аднабайтавых несупадзенняў у старонках памяці і аналізе часу рэакцыі для вызначэння, што здагадка аб змесцівам байта была дакладнай. Хуткасць падобнай уцечкі невялікая і складае 1.5 байт у гадзіну пры нападзе з лакальнай сеткі. Плюсам метаду з'яўляецца тое, што ён можа прымяняцца для аднаўлення невядомага змесціва памяці.

Трэці варыянт дазволіў за 4 хвіліны цалкам абыйсці механізм абароны KASLR і атрымаць інфармацыю аб зняцці ў памяці выявы ядра віртуальнай машыны, у сітуацыі калі адрас зрушэння знаходзіцца ў старонцы памяці, іншыя дадзеныя ў якой не змяняюцца. Атака ажыццяўлялася з хаста, які знаходзіцца за 14 транзітных пераходаў (hops) ад атакаванай сістэмы. Прыклады кода для ажыццяўлення прадстаўленых нападаў абяцаюць апублікаваць на GitHub.

Крыніца: opennet.ru

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