Grsecurity projekti arendajad Ă”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 oma master-oksasse, 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 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
