Spectre 4 шабуылдан қорғауды айналып өтуі мүмкін eBPF осалдықтары

Linux ядросында eBPF ішкі жүйесін Spectre v4 шабуылынан қорғауды айналып өту үшін пайдалануға мүмкіндік беретін екі осалдық анықталды (SSB, Speculative Store Bypass). Артықшылықсыз BPF бағдарламасын пайдалана отырып, шабуылдаушы белгілі бір операцияларды алыпсатарлық орындау үшін жағдай жасай алады және ядролық жадының ерікті аумақтарының мазмұнын анықтай алады. Ядродағы eBPF ішкі жүйелерінің қолдаушылары тәжірибеде шабуылдарды жүзеге асыру мүмкіндігін көрсететін эксплойт прототипіне қол жеткізді. Мәселелер Linux ядросының келесі жаңартуына қосылатын патчтар (1, 2) түрінде түзетілді. Тарату жинақтарында жаңартулар әлі жасалмаған (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

Spectre 4 шабуыл әдісі жанама адрестеу арқылы ауыспалы жазу және оқу операцияларын өңдеу кезінде операциялардың алыпсатарлық орындалу нәтижесін жойғаннан кейін процессор кэшінде сақталған деректерді қалпына келтіруге негізделген. Оқу әрекеті жазу әрекетінен кейін (мысалы, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]) орындалып жатқан ұқсас операцияларға байланысты оқу мекенжайының ығысуы әлдеқашан белгілі болуы мүмкін (оқу операциялары әлдеқайда жиі орындалады және оқуды кэштен орындауға болады) және процессор жазудың жанама ығысуын есептеуді күтпей-ақ, жазу алдында оқуды алыпсатарлық түрде орындай алады.

Егер ығысуды есептегеннен кейін жазу мен оқуға арналған жад аймақтарының қиылысы анықталса, процессор болжамды түрде алынған оқу нәтижесін жай ғана алып тастайды және бұл әрекетті қайталайды. Бұл мүмкіндік оқу нұсқаулығына дүкен әрекеті әлі аяқталмаған кезде кейбір мекенжайдағы ескі мәнге қол жеткізуге мүмкіндік береді. Сәтсіз алыпсатарлық операциядан бас тартқаннан кейін оның орындалу іздері кэште қалады, содан кейін кэштелген және кэштелмеген деректерге қол жеткізу уақытындағы өзгерістерді талдау негізінде кэштің мазмұнын анықтау әдістерінің бірі оны шығарып алу үшін пайдаланылуы мүмкін.

Бірінші осалдық (CVE-2021-35477) BPF бағдарламасының тексеру механизміндегі ақаудан туындайды. Spectre 4 шабуылынан қорғау үшін тексеруші алдыңғы әрекеттің іздерін ауыстыру үшін нөлдік мәнді сақтайтын ықтимал проблемалық қоймалардан кейін жадқа қосымша нұсқауды қосады. Нөлді жазу операциясы өте жылдам және алыпсатарлық орындалуды блоктайды деп күтілді, себебі ол тек BPF стек жақтауының көрсеткішіне байланысты. Бірақ іс жүзінде алыпсатарлық орындауға әкелетін нұсқауды алдын ала дүкен операциясына дейін орындауға болатын жағдайларды жасауға болады.

Екінші осалдық (CVE-2021-3455) BPF тексерушісі ықтимал қауіпті жадты сақтау операцияларын анықтаған кезде, бірінші жазу әрекеті қорғалмаған BPF стекінің инициализацияланбаған аймақтарын есепке алмайтындығына байланысты. Бұл мүмкіндік дүкен нұсқаулығын орындамас бұрын инициализацияланбаған жад аймағына тәуелді алыпсатарлық оқу әрекетін орындау мүмкіндігіне әкеледі. BPF стекіне арналған жаңа жады бөлінген жадтағы мазмұнды тексерусіз бөлінеді және BPF бағдарламасы іске қосылғанға дейін BPF стекіне бөлінетін жад аймағының мазмұнын басқарудың жолы бар.

Ақпарат көзі: opennet.ru

пікір қалдыру