Perbaikan baruntus nyababkeun perbaikan anu teu lengkep pikeun kerentanan Spectre dina kernel Linux

Pamekar proyék Grsecurity dibageakeun dongéng cautionary nu mendemonstrasikan kumaha éliminasi cuek tina warnings compiler bisa ngakibatkeun kerentanan dina kode. Dina ahir Méi, pikeun kernel Linux, perbaikan diusulkeun pikeun véktor anyar eksploitasi kerentanan Specter ngaliwatan ptrace system call.

Dina prosés nguji patch, pamekar perhatikeun yén nalika ngawangun, kompiler nampilkeun peringatan ngeunaan campur kode sareng definisi (strukturna didefinisikeun saatos kode sareng masihan nilai kana variabel anu tos aya):

int indéks = n;
lamun (n <HBP_NUM) {indéks = array_index_nospec (indéks, HBP_NUM); struct perf_event *bp = thread->ptrace_bps [indéks];

Linus narima koreksi ka cabang master anjeun, nyingkirkeun tina peringatan ku ngabungkus definisi variabel dina blok upami:

lamun (n <HBP_NUM) {indéks int = array_index_nospec (n, HBP_NUM); struct perf_event *bp = thread->ptrace_bps [indéks];

Dina bulan Juli, perbaikan ieu ogé dialihkeun ka 4.4, 4.9, 4.14, 4.19, sareng 5.2 cabang kernel stabil. Para pangropéa stabil ogé mendakan peringatan éta, sareng tibatan mariksa naha éta parantos dipasang dina cabang master Linus, aranjeunna nambal nyalira. Masalahna nyaeta aranjeunna, tanpa loba pamikiran, ngan dipindahkeun harti struktur up, ku kituna panggero ka array_index_nospec, nu langsung nyadiakeun panyalindungan ngalawan kerentanan, geus euweuh dipaké dina harti struktur, sarta gaganti "indéks" variabel, variabel "n" salawasna dipaké:

int indéks = n;
lamun (n <HBP_NUM) {struct perf_event *bp = thread->ptrace_bps [indéks];
indéks = array_index_nospec (indéks, HBP_NUM);

sumber: opennet.ru

Tambahkeun komentar