Mõttetu parandamine viis Spectre haavatavuse osalise likvideerimiseni Linuxi tuumas.

Grsecurity projekti arendajad jagati õpetliku looga, mis näitab, kuidas ettevaatamatu kompilaatori hoiatuste eemaldamine võib viia koodi haavatavuste tekkimiseni. Mais pakuti Linuxi kärgi jaoks välja uus parandus Spectre haavatavuse eksploitatsiooni uue vektori jaoks läbi süsteemi kutsumise ptrace.

Paranduse testimise käigus märkasid arendajad, et kompilaator annab hoiatuse koodi ja määratluste segamise kohta (struktuur defineeriti pärast olemasoleva muutuja väärtuse määramist):

int index = n;
if (n ptrace_bps[index];

Linus võttis parandus oma master-oksasse, vabanedes hoiatustest, viies muutuja määratluse if-plokki:

if (n ptrace_bps[index];

Juulis viidi parandused ka stabiilsetesse kerni okstesse 4.4, 4.9, 4.14, 4.19 ja 5.2. Stabiilsete okste hooldajad kohtasid samuti hoiatust ning selle asemel, et kontrollida, kas see on juba Linuse master-oksas lahendatud, tegid nad paranduse ise. Probleem oli selles, et nad, eriti mitte mõeldes, lihtsalt lükkasid struktuuri määratluse üles, nii et array_index_nospec'i kutsumine, mis otseselt kaitseb haavatavuse eest, ei saanud enam struktuuri määramisest osa ning muutuja "index" asemel kasutati alati muutujat "n":

int index = n;
if (n ptrace_bps[index];
index = array_index_nospec(index, HBP_NUM);

Allikas: opennet.ru

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster