CROSSTalk — уязвимост в CPU Intel, която води до изтичане на данни между ядрата

Група изследователи от Свободния университет в Амстердам откри нова уязвимост (CVE-2020-0543) уязвимост в микроархитектурните структури на процесорите Intel, забележителна с това, че позволява възстановяване на резултатите от изпълнението на определени инструкции, изпълнявани на друго ядро на ЦП. Това е първата уязвимост на механизма за спекулативно изпълнение на инструкции, допускаща изтичане на данни между отделни ядра на ЦП (по-рано изтичанията бяха ограничени до различни нишки на едно ядро). Изследователите нарекоха проблема CROSSTalk, но в документацията на Intel уязвимостта се споменава като SRBDS (Special Register Buffer Data Sampling).

Уязвимостта попада под представения преди година клас проблеми MDS (Microarchitectural Data Sampling) и се основава на използването на методи за анализ чрез страничен канал върху данните в микроархитектурните структури. Принцип на работа CROSSTalk е близо до уязвимостта RIDL, но се различава по източника на изтичането.
Нова уязвимост манипулира изтичането от преди неизвестен междинен буфер, който се използва съвместно от всички ядра на ЦП.

CROSSTalk - уязвимост в CPU Intel, водеща до изтичане на данни между ядрата

Същността на проблема е, че някои инструкции на микропроцесора, включително RDRAND, RDSEED и SGX EGETKEY, се реализират с помощта на вътрешна микроархитектурна операция SRR (Special Register Reads). На уязвимите про processors данните, върнати за SRR, се задържат в междинен буфер, общ за всички ядра на ЦП, след което се предават в буфер за запълване, свързан с конкретно физическо ядро на ЦП, на което е инициирана операцията на четене. След това, от буфера за запълване стойността се копира в регистрите, видими за приложенията.

Размерът на междинния общ буфер съответства на линия кеш, която обикновено е по-голяма от размера на читаните данни, а различни операции на четене засягат различни офсети в буфера. Понеже общият буфер се копира в буфера за запълване изцяло, се прехвърля не само необходимата за текущата операция част, а и данни, останали от изпълнението на други операции, включително извършвани на други ядра на ЦП.

CROSSTalk - уязвимост в CPU Intel, водеща до изтичане на данни между ядрата

CROSSTalk - уязвимост в CPU Intel, водеща до изтичане на данни между ядрата

В случай на успешна организация на атаката, автентифициран в системата локален потребител може да определи резултата от изпълнението на инструкциите 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster