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

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

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

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

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

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

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

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

В случай на успешна организация на атаката, удостоверен локален потребител в системата може да определи резултата от изпълнението на инструкциите RDRAND, RDSEED и EGETKEY в чужд процес или вътре в Intel SGX анклав, независимо от ядро на CPU, на което се изпълнява кодът.
Изследователите, открили проблема публикуваха прототип на експлойт, демонстрирящ, че е възможно изтичане на информация за случаен стойности, получени чрез инструкции 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