V jadre Linux 6.2 bola zistená zraniteľnosť (CVE-2023-1998), ktorá deaktivuje ochranu proti útokom triedy Spectre v2, čo umožňuje prístup k pamäti iných procesov vykonávaných v rôznych vláknach SMT alebo Hyper Threading, ale na jednom fyzickom jadre procesora. Zraniteľnosť môže byť mimo iného použitá na organizáciu úniku údajov medzi virtuálnymi strojmi v cloudových systémoch. Problém sa týka iba jadra Linux 6.2 a je spôsobený nesprávnou implementáciou optimalizácií, ktoré mali znížiť výrazné režijné náklady pri aplikácii ochrany proti Spectre v2. Zraniteľnosť bola odstránená v experimentálnej vetve jadra Linux 6.3.
V užívateľskom priestore na ochranu proti útokom triedy Spectre môžu procesy selektívne deaktivovať špekulatívne vykonávanie inštrukcií pomocou prctl PR_SET_SPECULATION_CTRL alebo použiť filtráciu systémových volaní na základe mechanizmu seccomp. Podľa údajov výskumníkov, ktorí problém identifikovali, nesprávna optimalizácia v jadre 6.2 nechala bez riadnej ochrany virtuálne stroje aspoň jedného veľkého cloudového providera, aj napriek aktivácii režimu blokovania útokov spectre-BTI prostredníctvom prctl. Zraniteľnosť sa tiež prejavuje na bežných serveroch s jadrom 6.2, pri bootovaní ktorých sa používa nastavenie „spectre_v2=ibrs.
Podstata zraniteľnosti spočíva v tom, že pri výbere ochranných režimov IBRS alebo eIBRS zavedené optimalizácie deaktivovali uplatnenie mechanizmu STIBP (Single Thread Indirect Branch Predictors), potrebného na blokovanie únikov pri aplikácii technológie súčasného viacvláknového spracovania (SMT alebo Hyper-Threading). Ochranu proti úniku medzi vláknami zabezpečuje iba režim eIBRS, nie režim IBRS, pretože pri ňom sa bit IBRS, zabezpečujúci ochranu proti únikom medzi logickými jadrami, z dôvodu výkonu vymaže pri návrate kontroly do užívateľského priestoru, čo robí vlákna v užívateľskom priestore nechránene pred útokmi triedy Spectre v2.
Zdroj: opennet.ru
