Haste parandamine viis Linuxi tuumas Spectre haavatavuse mittetäieliku kõrvaldamiseni.

Grsecurity projekti arendajad jagasid õppetundi, mis näitab, kuidas hoolimatu kompilaatori hoiatuste eemaldamine võib tuua koodi haavatavusi. Mais tehti Linuxi kerneli jaoks ettepanek parandada uut Spectre haavatavuse ekspluateerimise vektorit ptrace süsteemi kutsumise kaudu.

Paranduse testimise käigus tähelepanid arendajad, et kompilaatori ehitamisel ilmub hoiatus koodi ja definitsioonide segamise kohta (struktuur oli defineeritud pärast olemasoleva muutuja väärtuse määramist):

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

Linus aktsepteeris parandust oma master-haru, vabanedes hoiatusest viidates muutuja määramine if plokki:

if (n ptrace_bps[index];

Juulis viidi see parandamine ka stabiliseeritud põhiharudesse 4.4, 4.9, 4.14, 4.19 ja 5.2. Stabiilsete harude hooldajad seisid silmitsi hoiatustega ja selle asemel, et kontrollida, kas see on juba Linuse master-harus kõrvaldatud, teostasid nad paranduse ise. Probleem on selles, et nad, eriti mitte mõeldes, lihtsalt kandsid struktuuri määratlemise üles, nii et funktsioon array_index_nospec, mis otse kaitseb haavatavuse eest, lõpetas struktuuri määramisel kasutamise ja muutujat «index» kasutati alati muutuja «n» asemel:

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

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster