Neproračunato ispravak dovelo je do nepotpunog uklanjanja ranjivosti Spectre u Linux kernelu

Razvijači projekta Grsecurity podijelili poučavajućom pričom koja pokazuje kako nepromišljeno uklanjanje upozorenja prevoditelja može dovesti do pojave ranjivosti u kodu. Krajem svibnja je za Linux kernel ponuđena ispravka novog vektora iskorištavanja ranjivosti Spectre kroz sistemski poziv ptrace.

Tijekom testiranja zakrpe, programeri su primijetili da prevoditelj ispisuje upozorenje o miješanju koda i definicija (struktura je definirana nakon koda s dodjeljivanjem vrijednosti postojećoj varijabli):

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

Linus je prihvatio ispravka u svoju master granu, oslobodivši se upozorenja premještanjem definicije varijable u blok if:

if (n ptrace_bps[index];

U srpnju je ispravka također portirana u stabilne grane kernela 4.4, 4.9, 4.14, 4.19 i 5.2. Održavatelji stabilnih grana također su se susreli s upozorenjem i umjesto da provjere je li ono već uklonjeno u Linusovoj master grani, sami su unijeli ispravku. Problem je što su, ne razmišljajući puno, samo premjestili definiciju strukture više, tako da poziv array_index_nospec, koji izravno osigurava zaštitu od ranjivosti, više nije korišten pri definiranju strukture, a umjesto varijable „index“ uvijek se koristila varijabla „n“:

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

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster