Ny fanamboarana maimaika dia niteraka fanamboarana tsy feno ho an'ny vulnerable Spectre ao amin'ny kernel Linux

Mpamorona ny tetikasa Grsecurity nozaraina tantara fampitandremana mampiseho fa mety hitarika ho amin'ny faharefoana ao amin'ny code ny fanafoanana tsy voahevitra ny fampitandremana mpanangona. Tamin'ny faran'ny volana Mey, nisy fanamboarana natolotra ho an'ny kernel Linux ho an'ny vector vaovao amin'ny fitrandrahana ny vulnerability Spectre amin'ny alΓ lan'ny antson'ny rafitra ptrace.

Raha nanandrana ny patch, dia nahatsikaritra ireo mpamorona fa rehefa manorina dia mampiseho fampitandremana momba ny fampifangaroana kaody sy famaritana (ny rafitra dia nofaritana taorian'ny kaody, manome sanda amin'ny fari-piainana efa misy):

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

Nanaiky i Linus RΓ΄sy (nitranga in-1) amin'ny sampana tomponao, efa nanala avy amin'ny fampitandremana amin'ny alΓ lan'ny famindrana ny famaritana miovaova ho amin'ny sakana raha:

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

Tamin'ny Jolay, ny fanamboarana dia nafindra tany amin'ny sampana kernel stable 4.4, 4.9, 4.14, 4.19 ary 5.2. Nifanena tamin’ilay fampitandremana ihany koa ireo mpikarakara ny sampana stable, ka tsy nijery raha toa ka efa raikitra tao amin’ny sampana lehiben’i Linus ilay izy, fa nanamboatra ny tenany. Ny olana dia tsy tena mieritreritra an'izany izy ireo NIALA mamaritra ny rafitra, ka ny antso amin'ny array_index_nospec, izay manome fiarovana mivantana amin'ny vulnerability, dia tsy ampiasaina intsony rehefa mamaritra ny rafitra, ary raha tokony ho ny "index" miovaova ny variable "n" dia ampiasaina foana:

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

Source: opennet.ru

Add a comment