Даступны Kasper, сканер праблем са спекулятыўным выкананнем кода ў ядры Linux

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

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

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

Для павышэння якасці вызначэння праблемных гаджэтаў Kasper мадэлюе ўразлівасці, якія атакуючы можа выкарыстоўваць на кожным кроку ажыццяўлення нападаў класа Spectre - мадэлююцца праблемы, якія дазваляюць кантраляваць дадзеныя (напрыклад, падстаноўка дадзеных атакавалага ў мікраархітэктурныя структуры для ўплыву на наступнае спекулятыўнае выкананне пры дапамозе нападаў класа LVI), атрымліваць доступ да канфідэнцыйнай інфармацыі (напрыклад, пры выхадзе за межы буфера або выкарыстанні памяці пасля яе вызвалення) і арганізоўваць уцечку канфідэнцыйнай інфармацыі (напрыклад, аналізуючы стан працэсарнага кэша або выкарыстоўваючы метад MDS).

Даступны Kasper, сканер праблем са спекулятыўным выкананнем кода ў ядры Linux

Пры тэставанні ядро ​​злучаецца з runtime-бібліятэкамі Kasper і праверкамі, якія працуюць на ўзроўні LLVM. У працэсе праверкі праводзіцца эмуляцыя спекулятыўнага выканання кода, рэалізаваная пры дапамозе механізму checkpoint-restore, які спецыяльна выконвае няправільна прадказаную галіну кода, пасля чаго адкочваецца да зыходнага стану да пачатку галінавання. Kasper таксама спрабуе мадэляваць розныя праграмныя і апаратныя ўразлівасці, аналізуе ўплыў архітэктурных і мікраархітэктурных эфектаў, і выконвае fuzzing-тэставанне магчымых дзеянні атакавалага. Для аналізу патокаў выканання выкарыстоўваецца порт DataFlowSanitizer для ядра Linux, а для fuzzing-тэставанні мадыфікаваная версія пакета syzkaller.

Даступны Kasper, сканер праблем са спекулятыўным выкананнем кода ў ядры Linux

Падчас сканавання ядра Linux пры дапамозе Kasper выяўлена 1379 раней невядомых гаджэтаў, патэнцыйна якія прыводзяць да ўцечкі дадзеных падчас спекулятыўнага выканання інструкцый. Адзначаецца, што магчыма толькі частка з іх можа ўяўляць рэальныя праблемы, але для дэманстрацыі таго, што маецца і рэальная небяспека, а не толькі тэарэтычная, для аднаго з праблемных урыўкаў кода быў распрацаваны працоўны прататып эксплоіту, які прыводзіць да ўцечкі інфармацыі з памяці ядра.

Крыніца: opennet.ru

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