Кампанія AMD пацвердзіла патэнцыйную схільнасць CPU AMD Zen 3 нападу Spectre-STL

Кампанія AMD апублікавала справаздачу з аналізам бяспекі тэхналогіі аптымізацыі PSF (Predictive Store Forwarding), рэалізаванай у працэсарах серыі Zen 3. Падчас даследаванняў тэарэтычна пацверджана дастасавальнасць да тэхналогіі PSF метаду нападу Spectre-STL (Spectre-v4), выяўленага ў траўні 2018 года, але на практыцы здольных прывесці да нападу шаблонаў кода пакуль не знойдзена і агульная небяспека ацэнена як малаважная.

Нагадаем, што напад Spectre-v4 (Speculative Store Bypass) засноўваецца на аднаўленні дадзеных, якія аселі ў працэсарным кэшы пасля адкідвання выніку спекулятыўнага выканання аперацый пры апрацоўцы якія чаргуюцца аперацый запісу і чытанні з выкарыстаннем ўскоснага адрасавання. Калі аперацыя чытання ідзе за аперацыяй запісу (напрыклад, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), зрушэнне адраса для чытання ўжо можа быць вядома з-за выканання падобных аперацый (аперацыі чытання выконваюцца значна часцей і чытанне можа быць выканана з кэша) і працэсар можа спекулятыўна выканаць чытанне раней запісу, не чакаючы пакуль будзе вылічана зрушэнне ўскоснага адрасавання для запісу.

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

Дададзеная ў працэсары AMD Zen 3 тэхналогія PSF аптымізуе метад STLF (Store-To-Load-Forwarding), які спекулятыўна выконвае аперацыі чытання на аснове прадказанні ўзаемасувязі паміж аперацыямі чытання і запісы. Пры выкарыстанні класічнага STLF працэсар выконвае аперацыю "load" з дадзенымі, наўпрост перанакіраванымі з мінулай каманды "store", не чакаючы фактычнага запісу ў памяць выніку, але пераканаўшыся, што скарыстаныя ў камандах "load" і "store" адрасы супадаюць. Аптымізацыя PSF робіць праверку адрасоў спекулятыўнай і выконвае аперацыю "load" да завяршэння вылічэння інфармацыі аб адрасах, калі да гэтага была выканана пара store/load, якая маніпулюе адным адрасам. У выпадку памылкі прагнозу стан адкочваецца назад, але дадзеныя застаюцца ў кэшы.

Атака на PSF здзяйсняльная толькі ў рамках прывілеяў аднаго ўзроўня, ахапляе толькі бягучы кантэкст працэсу і блакуецца метадамі ізаляцыі адраснай прасторы ці апаратнымі sandbox-механізмамі. Пры гэтым праграмныя метады sandbox-ізаляцыі ў працэсах патэнцыйна могуць быць закрануты праблемай. Атака ўяўляе небяспеку для сістэм, такіх як браўзэры, віртуальных машыны для выканання кода і JIT, якія выконваюць іншы код ўнутры аднаго працэсу (у выніку атакі незаслугоўвае даверу ізаляваны код можа атрымаць доступ да іншых дадзеных працэсу).

Кампанія AMD падала шэраг метадаў для поўнага ці выбарачнага адключэння PSF, але з улікам малаважнай рызыкі для большасці прыкладанняў рэкамендавала не адключаць дадзеную аптымізацыю па змаўчанні. Для выбарачнай абароны працэсаў, ізаляванай якія выконваюць не годны даверу код, прапанавана адключаць PSF праз усталёўку MSR-бітаў «SSBD» і «PSFD», у тым ліку для асобных струменяў. Для ядра Linux падрыхтаваны патчы c рэалізацыяй опцый каманднага радка "psfd" і "nopsfd", якія кіруюць уключэннем і выключэннем PSF.

Крыніца: opennet.ru

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