Xakamaynta finanka waxay keentay hagaajin aan dhamaystirnayn oo nuglaanta Specter ee kernel Linux

Horumarinta mashruuca Gsecurity la wadaago sheeko digniin ah oo muujinaysa sida aan laga fiirsan ee baabi'inta digniinta isu-ururinta ay u horseedi karto baylahda koodka. Dhammaadkii Maajo, hagaajin ayaa loo soo jeediyay kernel Linux si loogu sameeyo vector cusub oo ka faa'iidaysiga nuglaanta Specter iyada oo loo marayo wicitaanka nidaamka ptrace.

Markii ay tijaabinayeen balastar-ka, horumariyayaashu waxay ogaadeen in marka la dhisayo, iskudubariduhu uu soo bandhigayo digniin ku saabsan isku darka koodka iyo qeexitaannada (qaabka ayaa la qeexay ka dib koodhka, isaga oo qiimeeya doorsoome jira):

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

Linus wuu aqbalay sixid laanta sayidkaaga, isagoo ka takhalusay Laga soo bilaabo digniinta adiga oo u wareejinaya qeexitaan doorsoome una guuri kara if block:

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

Bishii Luulyo, hagaajinta waxaa sidoo kale loo gudbiyay laamaha kernel-ka ee 4.4, 4.9, 4.14, 4.19 iyo 5.2. Ilaaliyeyaasha laamaha xasilloon ayaa sidoo kale la kulmay digniinta, halkii ay ka hubin lahaayeen in ay mar hore ku go'an tahay laanta sayid ee Linus, waxay sameeyeen hagaajin. Dhibaatadu waxay tahay iyaga oo aan si dhab ah uga fikirin, kaliya dhaqaaqday qeexidda qaab-dhismeedka kor, si wac array_index_nospec, kaas oo si toos ah u bixiya ka hortagga dayacanka, aan hadda la isticmaali marka la qeexayo qaab-dhismeedka, iyo halkii doorsoomaha "index" doorsoomaha "n" had iyo jeer la isticmaalo:

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

Source: opennet.ru

Add a comment