В ядрата на 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
