Yon ranje gratèl te lakòz yon ranje enkonplè pou yon vilnerabilite Spectre nan nwayo Linux la

Devlopè pwojè Gsecurity pataje yon istwa prekosyon ki montre kouman eliminasyon san reflechi nan avètisman konpilatè ka mennen nan frajilite nan kòd la. Nan fen mwa me, yo te pwopoze yon ranje pou nwayo Linux pou yon nouvo vektè eksplwatasyon vilnerabilite Spectre atravè apèl sistèm ptrace la.

Pandan y ap teste patch la, devlopè yo te remake ke lè bati, konpilatè a montre yon avètisman sou melanje kòd ak definisyon (yo te defini estrikti a apre kòd la, bay yon valè nan yon varyab ki egziste deja):

int endèks = n;
si (n < HBP_NUM) { endèks = etalaj_index_nospec (endèks, HBP_NUM); struct perf_event *bp = fil->ptrace_bps[endèks];

Linus aksepte koreksyon nan branch mèt ou a, li te debarase m de soti nan avètisman an lè w deplase definisyon varyab la nan yon blòk si:

si (n < HBP_NUM) { int endèks = array_index_nospec (n, HBP_NUM); struct perf_event *bp = fil->ptrace_bps[endèks];

An jiyè, ranje a te tou pòtab nan branch nwayo ki estab 4.4, 4.9, 4.14, 4.19 ak 5.2. Moun ki kenbe branch ki estab yo te rankontre avètisman an tou e, olye pou yo tcheke pou wè si li te deja fiks nan branch mèt Linus la, yo te fè yon ranje tèt yo. Pwoblèm lan se ke san yo pa reyèlman panse sou li, yo jis deplase defini estrikti a moute, se konsa ke apèl la nan array_index_nospec, ki dirèkteman bay pwoteksyon kont vilnerabilite a, pa itilize ankò lè defini estrikti a, epi olye pou yo "endèks" varyab la varyab "n" toujou itilize:

int endèks = n;
if (n < HBP_NUM ){ struct perf_event *bp = fil->ptrace_bps[endèks];
endèks = array_index_nospec (endèks, HBP_NUM);

Sous: opennet.ru

Add nouvo kòmantè