Уразлівасць у ядры Linux 6.2, якая дазваляе абыйсці абарону ад нападаў Spectre v2

У ядры Linux 6.2 выяўленая ўразлівасць (CVE-2023-1998), якая прыводзіць да адключэння абароны ад нападаў класа Spectre v2, якія дазваляюць атрымаць доступ да памяці іншых працэсаў, выкананых у розных струменях SMT або Hyper Threading, але на адным фізічным ядры працэсара. Уразлівасць, сярод іншага, можа выкарыстоўвацца для арганізацыі ўцечкі дадзеных паміж віртуальнымі машынамі ў хмарных сістэмах. Праблема закранае толькі ядро ​​Linux 6.2 і выклікана некарэктнай рэалізацыяй аптымізацый, закліканых зменшыць значныя накладныя выдаткі пры ўжыванні абароны ад Spectre v2. Уразлівасць ухіленая ў эксперыментальнай галінцы ядра Linux 6.3.

У прасторы карыстача для абароны ад нападаў класа Spectre працэсы могуць выбарачна адключаць спекулятыўнае выкананне інструкцый пры дапамозе prctl PR_SET_SPECULATION_CTRL або выкарыстаць фільтраванне сістэмных выклікаў на базе механізму seccomp. Па дадзеных выявіўшую праблему даследнікаў некарэктная аптымізацыя ў ядры 6.2 пакінула без належнай абароны віртуальныя машыны прынамсі аднаго буйнага хмарнага правайдэра, нягледзячы на ​​ўключэнне рэжыму блакавання нападаў spectre-BTI праз prctl. Уразлівасць таксама выяўляецца і на звычайных серверах з ядром 6.2, пры загрузцы якіх выкарыстоўваецца налада "spectre_v2=ibrs".

Сутнасць уразлівасці ў тым, што пры выбары рэжымаў абароны IBRS ці eIBRS унесеныя аптымізацыі адключалі ўжыванне механізму STIBP (Single Thread Indirect Branch Predictors), неабходнага для блакавання ўцечак пры ўжыванні тэхналогіі адначасовай шматструменнасці (SMT або Hyper-Threading). Пры гэтым абарону ад уцечкі паміж струменямі забяспечвае толькі рэжым eIBRS, але не рэжым IBRS, бо пры ім біт IBRS, які забяспечвае абарону ад уцечак паміж лагічным ядрамі, з меркаванняў прадукцыйнасці чысціцца пры вяртанні кіравання ў прастору карыстача, што робіць струмені ў прасторы карыстача не абароненымі ад нападаў класа Spectre v2.

Крыніца: opennet.ru

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