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