Уразлівасць у механізме спекулятыўнага выканання інструкцый працэсараў AMD

Праект Grsecurity апублікаваў дэталі і дэманстрацыю метаду нападу для новай уразлівасці (CVE-2021-26341) у працэсарах AMD, звязанай са спекулятыўным выкананнем інструкцый пасля аперацый безумоўнага прамога пераходу. У выпадку паспяховага правядзення нападу ўразлівасць дазваляе вызначыць змесціва адвольных абласцей памяці. Напрыклад, даследнікамі падрыхтаваны эксплоіт, які дазваляе вызначыць раскладку адрасоў і абыйсці механізм абароны KASLR (рандамізацыя памяці ядра) праз выкананне непрывілеяванага кода ў падсістэме ядра ePBF. Не выключаны і іншыя сцэнары нападаў, якія могуць прывесці да ўцечкі змесціва памяці ядра.

Уразлівасць дазваляе стварыць умовы, пры якіх працэсар падчас папераджальнага выканання спекулятыўна апрацуе інструкцыю, якая ідзе ў памяці адразу за камандай пераходу (SLS, Straight Line Speculation). Пры гэтым падобная аптымізацыя спрацоўвае не толькі для аператараў умоўнага пераходу, але і для інструкцый якія разумеюць прамы безумоўны пераход, такіх як JMP, RET і CALL. Следам за інструкцыямі безумоўнага пераходу могуць размяшчацца ў тым ліку адвольныя даныя, не прызначаныя для выканання. Пасля вызначэння таго, што пераход не мае на ўвазе выкананне наступнай інструкцыі, працэсар проста адкочвае стан і не ўлічвае спекулятыўнае выкананне, але след ад выканання інструкцыі застаецца ў агульным кэшы і даступны для аналізу з выкарыстаннем метадаў вымання па іншых каналах.

Як і пры эксплуатацыі ўразлівасці Spectre-v1 для ажыццяўлення нападу патрабуецца наяўнасць у ядры вызначаных паслядоўнасцяў інструкцый (гаджэтаў), якія прыводзяць да спекулятыўнага выканання. Блакаванне ўразлівасці пры гэтым зводзіцца да выяўлення падобных гаджэтаў у кодзе і даданню ў іх дадатковых інструкцый, блакавальных спекулятыўнае выкананне. Умовы для спекулятыўнага выканання таксама могуць быць створаны пры дапамозе непрывілеяваных праграм, якія выконваюцца ў віртуальнай машыне eBPF. Для блакавання магчымасці канструявання гаджэтаў пры дапамозе eBPF рэкамендуецца забараніць непрывілеяваны доступ да eBPF у сістэме ("sysctl -w kernel.unprivileged_bpf_disabled=1").

Уразлівасць закранае працэсары на базе мікраархітэктуры Zen1 і Zen2, уключаючы першае і другое пакаленні працэсараў AMD EPYC і AMD Ryzen Threadripper, а таксама працэсары AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon A. Для блакавання спекулятыўнага выканання інструкцый рэкамендавана выклікаць інструкцыі INT3 або LFENCE пасля аперацый галінавання (RET, JMP, CALL).

Крыніца: opennet.ru

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