Уразливість у ядрі 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

Додати коментар або відгук