Atunṣe sisu yorisi atunṣe ti ko pe fun ailagbara Specter ninu ekuro Linux

Awọn Difelopa ti ise agbese Grasecurity pín itan iṣọra ti o ṣe afihan bi imukuro aibikita ti awọn ikilọ alakopọ le ja si awọn ailagbara ninu koodu naa. Ni ipari Oṣu Karun, fun ekuro Linux, a dabaa atunṣe fun fekito tuntun ti ilokulo ti ailagbara Specter nipasẹ ipe eto ptrace.

Ninu ilana ti idanwo alemo naa, awọn olupilẹṣẹ ṣe akiyesi pe nigbati o ba n kọ, olupilẹṣẹ ṣe afihan ikilọ kan nipa dapọ koodu ati awọn asọye (a ṣe asọye eto naa lẹhin koodu naa pẹlu yiyan iye kan si oniyipada ti o wa tẹlẹ):

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

Linus gba atunse si ẹka oluwa rẹ, yiyọ kuro lati ikilọ nipa fifi ipari si itumọ oniyipada sinu ohun ti o ba jẹ dina:

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

Ni Oṣu Keje, atunṣe tun jẹ gbigbe si 4.4, 4.9, 4.14, 4.19, ati 5.2 awọn ẹka ekuro iduroṣinṣin. Awọn olutọju iduro tun pade ikilọ naa, ati pe dipo ṣayẹwo lati rii boya o ti wa tẹlẹ ni ẹka ọga Linus, wọn parẹ funrararẹ. Iṣoro naa ni pe wọn, laisi ero pupọ, o kan gbe Itumọ eto soke, ki ipe si array_index_nospec, eyiti o pese aabo taara lodi si ailagbara, ko tun lo ninu itumọ eto naa, ati dipo oniyipada “atọka”, oniyipada “n” nigbagbogbo lo:

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

orisun: opennet.ru

Fi ọrọìwòye kun