A Grsecurity projekt fejlesztői egy tanulságos történetet osztanak meg, amely bemutatja, hogyan vezethet a figyelmetlen figyelmeztetések eltávolítása a kódban lévő sebezhetőségek megjelenéséhez. Május végén ajánlottak egy javítást a Linux kernel számára, amely a Spectre sebezhetőség új kihasználási vektorát célozza meg az ptrace rendszerhíváson keresztül.
A javítás tesztelése során a fejlesztők észrevették, hogy a fordító figyelmeztetést ad, amikor a kód és a definíciók keverednek (a struktúra definíciója a meglévő változó értékadásához tartozó kód után volt):
int index = n;
if (n ptrace_bps[index];
Linus elfogadta a master ágba, a figyelmeztetéstől úgy, hogy a változó definícióját az if blokkba helyezte:
if (n ptrace_bps[index];
Júliusban a javításot a 4.4, 4.9, 4.14, 4.19 és 5.2 stabil kernel ágakra is átvitték. A stabil ágakat fenntartó fejlesztők szintén szembesültek a figyelmeztetéssel, és ahelyett, hogy megnézték volna, már megoldották-e azt Linus master ágában, saját kezűleg hajtottak végre javítást. A probléma az volt, hogy ők, különös gondolkodás nélkül, egyszerűen a struktúra definícióját felfelé, így az array_index_nospec hívás, amely közvetlenül biztosította a sebezhetőségtől való védelmet, megszűnt a struktúra definíciójában használni, és mindig a „n” változót használták az „index” helyett:
int index = n;
if (n ptrace_bps[index];
index = array_index_nospec(index, HBP_NUM);
Forrás: opennet.ru
