Компанията Intel информация за новия в своите процесори — (Microarchitectural Data Sampling). Както и предишните атаки от класа Spectre, новите проблеми могат да доведат до изтичане на конфиденциални данни на операционната система, виртуални машини и чужди процеси. Съобщава се, че проблемите първоначално са били открити от служители и партньори на Intel по време на вътрешен одит, след което информацията за подобни проблеми в Intel е предадена на независими изследователи. Процесорите на AMD и ARM не са уязвими на проблема.
На база откритите проблеми, изследователи от Техническия университет в Грац (Австрия) няколко практични атаки по странични канали:
- () — позволява извличането на конфиденциална информация от други процеси, операционната система, виртуални машини и защитени анклави (TEE, Trusted Execution Environment). Например, е демонстрирана възможността да се определи историята на отваряне на страници в Tor браузър, стартиран в друга виртуална машина, а също така и да се определят използваните в приложенията ключове за достъп и пароли;
- () — позволява организирането на изтичане на информация между различни изолирани области в процесорите на Intel, като буфери за запълване, буфери за съхранение и портове за зареждане. Примери за провеждане на атаката са показани за организиране на изтичания от други процеси, операционната система, виртуални машини и защитени анклави. Например, показано е как да се узнае съдържанието на хеш на парола root от /etc/shadow при периодични опити за удостоверяване (атаката отне 24 часа);

Освен това е показан пример за провеждане на атака с помощта на JavaScript и WebAssembly при отваряне на зловредна страница в двигателя SpiderMonkey (в съвременните браузъри подобна атака е малко вероятна поради ограниченията в точността на таймера и мерките за защита от Spectre);

- () — дава възможност за четене на данни, наскоро записани от операционната система, и определяне на разположението на паметта на ОС за опростяване на провеждането на други атаки;
- — експлоатира оптимизациите на CPU при работа с буфера за съхранение и може да се използва за заобикаляне на механизма за рандомизация на адресното пространство на ядрото (KASLR), за мониторинг на състоянието на операционната система или за на изтичания в комбинация с уредите на базата на методите Spectre.
Откритите :
- CVE-2018-12126 — MSBDS (Примерно извлечение данных из буферов хранения), възстановяване на съдържанието на буферите за съхранение. Използва се в атаката Fallout. Степента на опасност е оценена на 6.5 точки (CVSS);
- CVE-2018-12127 — MLPDS (Примерно извлечение на данни от порта за зареждане), възстановяване на съдържанието на портовете за зареждане. Използва се в атаката RIDL. CVSS 6.5;
- CVE-2018-12130 — MFBDS (Примерно извлечение на данни от буферите за запълване), възстановяване на съдържанието на буферите за запълване. Използва се в атаките ZombieLoad и RIDL. CVSS 6.5;
- CVE-2019-11091 — MDSUM (Примерно извлечение на данни от некеширана памет), възстановяване на съдържанието на некеширана памет. Използва се в атаката RIDL. CVSS 3.8.
разкрити проблеми в способността за прилагане на методи за анализ чрез странични канали към данни в микроархитектурни структури, до които приложенията нямат пряк достъп. Става въпрос за такива нисколевелни структури, като буфери за запълване (Line Fill Buffer), буфери за съхранение (Store Buffer) и портове за зареждане (Load Port), които са по-малки съставни елементи в сравнение с кеша от първо ниво (L1D), кеша за зареждане на данни (RDCL) или L1TF (L1 Terminal Fault), и следователно включват по-малко информация и се обновяват по-интензивно.

Атаките чрез странични канали върху микроархитектурни структури значително по-трудно се провеждат в сравнение с методите за възстановяване на съдържанието на кеша и изискват проследяване и анализ на значителни обеми данни, за да се определи тяхната връзка с определени адреси в паметта (в същността на атакуващия не може целенасочено да прихване определени данни, а може да натрупва утечки дълго време и да прилага статистически методи за реконструкция на определени видове данни). Освен това, атаката засяга само данни на същото физическо ядро на CPU, както и кода на атакуващия.
Предложените методи за определяне на съдържанието на микроархитектурните структури са основани на факта, че тези структури се използват при спекулативна обработка на изключения (fault) или операции load и store.
При спекулативното изпълнение съдържанието на вътрешните структури се пренасочва за обработка в регистри или кеш. Спекулативните операции не завършват и резултатът се отхвърля, но пренасоченото съдържание може да бъде определено с помощта на методи за анализ на кеша чрез странични канали.
Зареждащите портове се използват от процесора за получаване на данни от паметта или подсистемата за вход/изход и предоставяне на получената информация в регистри на CPU. Поради особеностите на реализацията, данните от стари зареждащи операции остават в портовете, докато не бъдат презаписани с нови данни, което позволява косвено определяне на състоянието на данните в зареждащия порт чрез манипулации с изключения (fault) и инструкции SSE/AVX/AVX-512, които зареждат повече от 64 бита данни. В такива условия операциите по зареждане спекулативно разкриват остарели стойности на данните от вътрешни структури в зависими операции. По подобен начин се организира изтичането през буфера за съхранение, използван за ускоряване на записите в кеша на CPU и включващ таблица с адреси, стойности и флагове, а също и през буфера за запълване, който съдържа данни, докато не са налични в кеша L1 (cache-miss), за времето на тяхното зареждане от кешовете на други нива.
Проблема моделите на процесори Intel, произвеждани от 2011 година (започвайки от 6-то поколение). Апаратурата уязвимостите са блокирани, започвайки от някои модели на 8-мо и 9-то поколение на Intel Core и 2-ро поколение на Intel Xeon Scalable (може да се провери чрез бита ARCH_CAP_MDS_NO в IA32_ARCH_CAPABILITIES MSR). Уязвимостите също вече на ниво фърмуер, микрокод и операционни системи. Според оценките на Intel, загубата на производителност след активиране на корекцията за повечето потребители 3%. При деактивация на технологията Hyper-Threading, намалението на производителността може да достигне до 9% в теста SPECint_rate_base, до 11% при активни цели числени изчисления и до 19% при изпълнение на сървърни Java приложения (при активен HT, намалението на производителността почти не съществува). Корекциите практически не влияят на производителността на операциите, свързани с вход/изход.
В ядрото на Linux защитата от MDS в настоящите 5.1.2, 5.0.16,
4.19.43, 4.14.119 и 4.9.176. Методът на защита по почистването на съдържанието на микроархитектурните буфери при връщане от ядрото в пространството на потребителя или при прехвърляне на управлението на хост системата, за което се използва инструкцията VERW. За работата на защитите е необходимо да има поддръжка на режима MD_CLEAR, реализирана в последното обновление на микрокода. За пълна защита също така се препоръчва деактивиране на Hyper Threading. За проверка на податливостта на системата на уязвимости в ядрото на Linux. обработчикът "\/sys\/devices\/system\/cpu\/vulnerabilities\/mds". За управление на включването на различни режими за блокиране на уязвимости в ядрото е добавен параметърът "mds=", който може да приема стойности "full", "full,nosmt" (деактивиране на Hyper-Threads), "vmwerv" и "off".
Актуализациите на пакетите вече са издадени за и , но все още не са налични за , и .
Поправката за блокиране на изтичания на данни от виртуални машини също за хипервизора Xen. За защита на системи за виртуализация, извършващи извикване на командата L1D_FLUSH преди предаване на управлението на друга виртуална машина, и за защита на анклавите Intel SGX е достатъчно обновление на микрокода.
Източник: opennet.ru


