Intel процессорларының MMIO механизміндегі осалдықтар

Intel MMIO (Memory Mapped Input Output) механизмін манипуляциялау арқылы басқа процессорлық ядроларда өңделген ақпаратты анықтауға мүмкіндік беретін процессорлардың микроархитектуралық құрылымдары арқылы деректер ағып кетуінің жаңа класы туралы ақпаратты ашты. Мысалы, осалдықтар деректерді басқа процестерден, Intel SGX анклавтарынан немесе виртуалды машиналардан алуға мүмкіндік береді. Осалдықтар тек Intel процессорларына тән; басқа өндірушілердің процессорларына осалдықтар әсер етпейді.

Осалдықтар әртүрлі Intel процессорларында, соның ішінде Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake және Rocketlake микроархитектураларына негізделген процессорларда, сондай-ақ Xeon EP/EX, Scalable және кейбір Atom сервер процессорларында пайда болады. Шабуыл жасау үшін MMIO-ға қол жеткізу қажет, оны, мысалы, шабуылдаушы басқаратын қонақтық жүйелер үшін MMIO-ға кіру мүмкіндігін қамтамасыз ететін виртуалдандыру жүйелерінде алуға болады. Түзету Intel SGX (Бағдарламалық қамтамасыз етуді қорғау кеңейтімдері) оқшауланған анклавтарын пайдаланатын жүйелер үшін де қажет болуы мүмкін.

Осалдықты блоктау микрокодты жаңартуды да, ядродан пайдаланушы кеңістігіне оралғанда немесе басқаруды қонақтық жүйеге беру кезінде микроархитектуралық буферлердің мазмұнын тазарту үшін VERW нұсқаулығын пайдалануға негізделген қосымша бағдарламалық қорғау әдістерін пайдалануды талап етеді. Ұқсас қорғау MDS (микроархитектуралық деректер үлгісі), SRBDS (арнайы регистр буферінің деректерін таңдау) және TAA (транзакциялық асинхронды тоқтату) сыныптарының бұрын анықталған шабуылдарын блоктау үшін де қолданылады.

Микрокод жағында қорғауды жүзеге асыру үшін қажетті өзгерістер Intel процессорларына арналған мамырдағы микрокод жаңартуында ұсынылды (IPU 2022.1). Linux ядросында шабуылдардың жаңа класынан қорғау 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 және 4.9.319 шығарылымдарына енгізілген. Жүйенің MMIO осалдықтарының әсерін тексеру және белгілі бір қорғау механизмдерінің белсенділігін бағалау үшін Linux ядросына “/sys/devices/system/cpu/vulnerabilities/mmio_stale_data” файлы қосылды. Қорғаныстың қосылуын бақылау үшін ядроның жүктелу параметрі «mmio_stale_data» енгізілді, ол «full» мәндерін қабылдай алады (пайдаланушы кеңістігіне және VM-ге көшкен кезде буферлерді тазалауға мүмкіндік береді), «full,nosmt» ( «толық» ретінде + SMT/Hyper- Threads) және «өшірулі» (қорғау өшірілген) қосымша өшіреді. Xen гипервизоры мен Qubes операциялық жүйесі үшін бөлек түзетулер ұсынылады.

Анықталған осалдықтар класының мәні мынада: кейбір операциялар басқа процессорлық ядроларда орындағаннан кейін қалған деректерді бір микроархитектуралық буферден екіншісіне көшіруге немесе жылжытуға әкеледі. MMIO осалдықтары бұл қалдық деректерді оқшауланған микроархитектуралық буферлерден қолданбаға көрінетін регистрлерге немесе CPU буферлеріне тасымалдауға мүмкіндік береді. MMIO арқылы қалдық деректерді алудың үш әдісі анықталды:

  • DRPW (Device Register Partial Write, CVE-2022-21166) — кейбір MMIO регистрлеріне жазуларды дұрыс өңдеуге байланысты мәселе. Жазылып жатқан деректердің өлшемі регистрдің өлшемінен аз болса, онда толтыру буферлерінен қалған ақпараттар да регистрге көшіріледі. Нәтижесінде, MMIO регистріне толық емес жазу әрекетін бастайтын процесс микроархитектуралық буферлерде қалған деректерді орталық процессордың басқа ядроларында орындалатын операциялардан ала алады.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) — барлық ядроларға ортақ аралық буферлерден орын ауыстыру нәтижесінде пайда болатын ядромен байланысты толтыру буферінен қалдық деректердің ағуы.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) - мәселе SBDS-ге ұқсас, бірақ қалдық деректердің қолданбаларға көрінетін CPU құрылымдарында аяқталуы мүмкін екендігімен ерекшеленеді. SBDS және SBDR мәселелері тек клиенттік жүйелерге арналған процессорларда және Intel Xeon E3 серверлер тобында пайда болады.

Intel процессорларының MMIO механизміндегі осалдықтар


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

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