Një rregullim i papeshuar çoi në një eliminim të pjesshëm të vulnerabilitetit Spectre në kernel-in Linux

Zhvilluesit e projektit Grsecurity ndanë një histori mësimore që tregon se si heqja e pa shqetësuar e paralajmërimeve të kompilatorit mund të çojë në shfaqjen e vulnerabiliteteve në kod. Në fund të majit, një korrigjim për një vektor të ri shfrytëzimi të vulnerabilitetit Spectre për kernelin Linux u propozua përmes thirrjes së sistemit ptrace.

Gjatë testimit të patch-it, zhvilluesit vunë re se gjatë ndërtimit kompiliatori lëshonte një paralajmërim për përzierjen e kodit dhe definicioneve (struktura ishte e përcaktuar pas kodit me atribucionin e vlerës një variabli ekzistues):

int index = n;
if (n ptrace_bps[index];

Linus pranoi korrigjimin në degën e tij master, duke u shkëputur nga paralajmërimi duke e shëmbur definicionin e variablit në bllokun if:

if (n ptrace_bps[index];

Në korrik, korigjimi uportua gjithashtu në degët e stabilizuara të bërthamës 4.4, 4.9, 4.14, 4.19 dhe 5.2. Mbikëqyrësit e degëve të stabilizuara gjithashtu hasën një paralajmërim dhe, në vend që të verifikonin nëse ishte zgjidhur tashmë në degën master të Linusit, e bënë korrigjimin vetë. Problemi është se ata, pa u menduar shumë, thjesht e kaluan përcaktimin e strukturës më lart, në mënyrë që thirrja array_index_nospec, e cila ofronte mbrojtje nga vulnerabiliteti, të ndalonte së përdoruri gjatë përcaktimit të strukturës, dhe në vend të ndryshores "index", gjithmonë u përdor ndryshorja "n":

int index = n;
if (n ptrace_bps[index];
index = array_index_nospec(index, HBP_NUM);

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster