Група изследователи от Свободния университет в Амстердам откри нова (CVE-2020-0543) уязвимост в микроархитектурните структури на процесорите Intel, забележителна с това, че позволява възстановяване на резултатите от изпълнението на определени инструкции, изпълнявани на друго ядро на ЦП. Това е първата уязвимост на механизма за спекулативно изпълнение на инструкции, допускаща изтичане на данни между отделни ядра на ЦП (по-рано изтичанията бяха ограничени до различни нишки на едно ядро). Изследователите нарекоха проблема CROSSTalk, но в уязвимостта се споменава като SRBDS (Special Register Buffer Data Sampling).
Уязвимостта попада под преди година клас проблеми MDS (Microarchitectural Data Sampling) и се основава на използването на методи за анализ чрез страничен канал върху данните в микроархитектурните структури. CROSSTalk е близо до уязвимостта , но се различава по източника на изтичането.
Нова уязвимост манипулира изтичането от преди неизвестен междинен буфер, който се използва съвместно от всички ядра на ЦП.
е, че някои инструкции на микропроцесора, включително RDRAND, RDSEED и SGX EGETKEY, се реализират с помощта на вътрешна микроархитектурна операция SRR (Special Register Reads). На уязвимите про processors данните, върнати за SRR, се задържат в междинен буфер, общ за всички ядра на ЦП, след което се предават в буфер за запълване, свързан с конкретно физическо ядро на ЦП, на което е инициирана операцията на четене. След това, от буфера за запълване стойността се копира в регистрите, видими за приложенията.
Размерът на междинния общ буфер съответства на линия кеш, която обикновено е по-голяма от размера на читаните данни, а различни операции на четене засягат различни офсети в буфера. Понеже общият буфер се копира в буфера за запълване изцяло, се прехвърля не само необходимата за текущата операция част, а и данни, останали от изпълнението на други операции, включително извършвани на други ядра на ЦП.
В случай на успешна организация на атаката, автентифициран в системата локален потребител може да определи резултата от изпълнението на инструкциите RDRAND, RDSEED и EGETKEY в чужд процес или в рамките на анклава Intel SGX, независимо от ядрото на ЦП, на което се изпълнява кодът.
Открилите проблема изследователи Прототип на експлойт, демонстриращ възможността за изтичане на информация за произволни стойности, получавани чрез инструкции RDRAND и RDSEED, за възстановяване на частния ключ ECDSA, обработван в анлака Intel SGX, след извършване на само една операция с цифров подпис в системата.

Проблем широк спектър от настолни, мобилни и сървърни процесори на Intel, включително Core i3, i5, i7, i9, m3, Celeron (серии J, G и N), Atom (серии C, E и X), Xeon (семейства E3, E5, E7, W и D), Xeon Scalable и др. Интересно е, че компанията Intel е била уведомена за уязвимостта през септември 2018 г., а през юли 2019 г. е предоставен прототип на експлойт, демонстриращ изтичане на данни между ядрата на CPU, но разработването на поправка е забавено поради сложността на нейното изпълнение. В предложеното днес обновление на микрокода проблемът е блокиран чрез промяна на поведението на инструкциите RDRAND, RDSEED и EGETKEY за излишно презаписване на данни в съвместен буфер, за да се предотврати оставането на остатъчна информация в него. Освен това е приложено спирането на достъпа до буфера до завършване на операциите по четене и презаписване на съдържанието.
Страничен ефект на подобна защита е увеличаването на закъсненията при изпълнението на RDRAND, RDSEED и EGETKEY, и намаляване на пропускателната способност при опит за едновременно изпълнение на тези инструкции на различни логически процесори. Изпълнението на RDRAND, RDSEED и EGETKEY също спира достъпа до паметта от други логически процесори. Посочените особености могат да негативно повлияят на производителността на някои сървърни приложения, затова в фърмуера е предвиден механизъм (RNGDS_MITG_DIS) за деактивиране на защитата на инструкциите RDRAND и RDSEED, извършвани извън анлака Intel SGX.
Източник: opennet.ru
