Razvijači projekta Grsecurity 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 u svoju master granu, 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 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
