En Ausschlagfix huet zu enger onkomplett Fix fir eng Spectre Schwachstelle am Linux Kernel gefouert

Entwéckler vum Grsecurity Projet gedeelt eng virsiichteg Geschicht, déi demonstréiert wéi ondenklech Eliminatioun vu Compiler Warnungen zu Schwachstelle am Code féieren kann. Enn Mee gouf e Fix fir de Linux Kernel proposéiert fir en neie Vektor vun der Ausbeutung vun der Spectre Schwachstelle duerch de ptrace System Call.

Wärend de Patch getest hunn, hunn d'Entwéckler gemierkt datt beim Bauen de Compiler eng Warnung iwwer d'Vermëschung vu Code an Definitioune weist (d'Struktur gouf nom Code definéiert, e Wäert un eng existent Variabel zougewisen):

int index = n;
wann (n < HBP_NUM) { index = array_index_nospec(index, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];

Linus ugeholl Korrektur op Är Meeschtesch Branche, entlooss hunn vun der Warnung andeems Dir d'Variabel Definitioun an en If Block beweegt:

wann (n < HBP_NUM) { int index = array_index_nospec(n, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];

Am Juli gouf d'Fixatioun och an de stabile Kernelzweige 4.4, 4.9, 4.14, 4.19 a 5.2 portéiert. D'Entretiener vun de Stallzweige sinn och op d'Warnung gestouss an amplaz ze kucken ob et schonn am Linus senger Meeschtesch gefléckt gouf, hu si selwer eng Fix gemaach. De Problem ass, datt ouni wierklech doriwwer denken, si just geplënnert d'Struktur erop ze definéieren, sou datt den Uruff un array_index_nospec, deen direkt Schutz géint d'Schwachheet ubitt, net méi benotzt gëtt wann Dir d'Struktur definéiert, an amplaz vun der Variabel "Index" gëtt d'Variabel "n" ëmmer benotzt:

int index = n;
wann (n <HBP_NUM){ struct perf_event *bp = thread->ptrace_bps[index];
index = array_index_nospec(index, HBP_NUM);

Source: opennet.ru

Setzt e Commentaire