Ranljivost v jedru Linux 6.2, ki bi lahko zaobšla zaščito pred napadi Spectre v2

V jedru Linuxa 6.2 je bila ugotovljena ranljivost (CVE-2023-1998), ki onemogoči zaščito pred napadi Spectre v2, ki omogočajo dostop do pomnilnika drugih procesov, ki se izvajajo v različnih nitih SMT ali Hyper Threading, vendar na istem fizičnem procesorju jedro. Ranljivost je med drugim mogoče uporabiti za povzročitev uhajanja podatkov med virtualnimi stroji v sistemih v oblaku. Težava vpliva samo na jedro Linuxa 6.2 in je posledica nepravilne implementacije optimizacij, namenjenih zmanjšanju znatnih stroškov uporabe zaščite Spectre v2. Ranljivost je bila odpravljena v eksperimentalni veji jedra Linux 6.3.

V uporabniškem prostoru lahko procesi za zaščito pred napadi Spectre selektivno onemogočijo špekulativno izvajanje navodil z uporabo prctl PR_SET_SPECULATION_CTRL ali uporabijo filtriranje sistemskih klicev na podlagi mehanizma seccomp. Po mnenju raziskovalcev, ki so odkrili težavo, je nepravilna optimizacija v jedru 6.2 pustila virtualne stroje vsaj enega velikega ponudnika oblaka brez ustrezne zaščite, kljub vključitvi načina za blokiranje napadov spectre-BTI prek prctl. Ranljivost se pojavlja tudi na običajnih strežnikih z jedrom 6.2, pri njihovem nalaganju se uporablja nastavitev “spectre_v2=ibrs”.

Bistvo ranljivosti je v tem, da so pri izbiri načinov zaščite IBRS ali eIBRS uvedene optimizacije onemogočile uporabo mehanizma STIBP (Single Thread Indirect Branch Predictors), ki je potreben za blokiranje uhajanja pri uporabi tehnologije hkratnega večnitnega delovanja (SMT ali Hyper- Navoj). Vendar le način eIBRS zagotavlja zaščito pred uhajanjem med nitmi, ne pa tudi način IBRS, saj je v tem primeru bit IBRS, ki zagotavlja zaščito pred uhajanjem med logičnimi jedri, počiščen zaradi zmogljivosti, ko se nadzor vrne v uporabniški prostor, zaradi česar niti v uporabniškem prostoru niso zaščitene pred napadi Spectre v2.

Vir: opennet.ru

Dodaj komentar