හදිසි නිවැරදි කිරීමක් හේතුවෙන් ලිනක්ස් කර්නලයේ ස්පෙක්ටර් අවදානමක් සඳහා අසම්පූර්ණ විසඳුමක් ඇති විය.

Grsecurity ව්‍යාපෘතියේ සංවර්ධකයින් බෙදාගෙන ඇත සම්පාදක අනතුරු ඇඟවීම් නොසැලකිලිමත් ලෙස ඉවත් කිරීම කේතයේ දුර්වලතා වලට තුඩු දිය හැකි ආකාරය පෙන්නුම් කරන අනතුරු ඇඟවීමේ කතාවකි. මැයි මස අවසානයේදී, ptrace පද්ධති ඇමතුම හරහා ස්පෙක්ටර් අවදානම සූරාකෑමේ නව දෛශිකයක් සඳහා Linux කර්නලය සඳහා විසඳුමක් යෝජනා කරන ලදී.

පැච් එක පරීක්ෂා කිරීමේදී, සංවර්ධකයින් දුටුවේ ගොඩනඟන විට, සම්පාදකය මිශ්‍ර කේත සහ අර්ථ දැක්වීම් පිළිබඳ අනතුරු ඇඟවීමක් පෙන්වයි (ව්‍යුහය කේතයෙන් පසුව අර්ථ දක්වා ඇත, පවතින විචල්‍යයකට අගයක් පවරමින්):

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

ලිනස් පිළිගත්තා නිවැරදි කිරීම ඔබේ ප්‍රධාන ශාඛාවට, අයින් වෙලා විචල්‍ය අර්ථ දැක්වීම if block එකකට ගෙන යාමෙන් අනතුරු ඇඟවීමේ සිට:

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

ජුලි මාසයේදී, ස්ථාවර කර්නල් ශාඛා 4.4, 4.9, 4.14, 4.19 සහ 5.2 වෙත ද සවි කිරීම සිදු කරන ලදී. ස්ථායී ශාඛා නඩත්තු කරන්නන් ද අනතුරු ඇඟවීමට මුහුණ දුන් අතර, එය දැනටමත් ලිනස්ගේ ප්‍රධාන ශාඛාවේ සවි කර ඇත්දැයි සොයා බැලීම වෙනුවට, ඔවුන් විසින්ම නිවැරදි කිරීමක් සිදු කළහ. ප්‍රශ්නේ තියෙන්නේ ඇත්තටම ඒ ගැන හිතන්නෙ නැතුව නිකන් ඉන්න එක මාරු කළා ව්‍යුහය දක්වා නිර්වචනය කිරීම, එවිට අනාරක්‍ෂිතභාවයට එරෙහිව සෘජුවම ආරක්ෂාව සපයන array_index_nospec වෙත ඇමතුම තවදුරටත් ව්‍යුහය නිර්වචනය කිරීමේදී භාවිතා නොකරන අතර "දර්ශකය" විචල්‍යය වෙනුවට "n" විචල්‍යය සැමවිටම භාවිතා වේ:

int index = n;
නම් (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
දර්ශකය = array_index_nospec(දර්ශකය, HBP_NUM);

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න