CROSSTalk – хардуерна уязвимост в процесорите на Intel, водеща до изтичане на информация между ядрата

7
1162

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

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

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

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

При успешна атака хакерът може да определи резултата от изчисленията на инструкциите RDRAND, RDSEED и EGETKEY в чуждия процес, включително в друга виртуална среда и дори в анклава Intel SGX, независимо от ядрото на което се изпълнява кода. Експертите публикуваха прототип на експлойт, който демонстрира четенето на псевдослучайните числа, генерирани от инструкциите RDRAND и RDSEED, като по този начин става възможно прочитането на затворения ключ ECDSA, обработван от Intel SGX анклава.

Новата хардуерна уязвимост CROSSTalk засяга широк спектър десктоп, мобилни и сървърни процесори на корпорацията Intel, включително Core i3, i5, i7, i9, m3, Celeron (сериите J, G и N), Atom (сериите С, E и X), Xeon (фамилиите E3, E5, E7, W и D), Xeon Scalable и т.н. Интересно е, че компанията Intel е била уведомена за тази уязвимост още през месец септември 2018 година, а през месец юли същата година е представен прототипът на експлойт, демонстриращ изтичането на данни между ядрата на централния процесор. Но разработването на съответните пачове е изисквало много време поради сложността на проблема и твърде трудното запушване на тази уязвимост.

В предложеното днес обновяване на микрокода за съответните процесори на Intel, проблемът е блокиран чрез промяна в поведението на инструкциите RDRAND, RDSEED и EGETKEY при възникване на излишък при презаписването на данните в съвместния буфер и по този начин в него не остава излишна информация. Освен това, спрени са обръщенията към същия буфер преди приключването на операциите по четене и презапис на неговото съдържание. Пакетите с промените на микрокода тази сутрин излязоха като обновявания за Linux дистрибуциите DebianUbuntuRHELSUSE и Fedora.

Разбира се, както и при другите хардуерни уязвимости, страничният ефект от тези защити е появата на латентност при изпълнението на процесорните инструкции, в този случай на RDRAND, RDSEED и EGETKEY, както и осезателно спадналата пропускателна способност при едновременното изпълнение на тези инструкции в различните логически процесори. И още, след инсталирането на пачовете, изпълнението на инструкциите RDRAND, RDSEED и EGETKEY блокира достъпа до паметта от другите логически процесори. Тези особености оказват негативно влияние върху производителността, особено при някои сървърни приложения. Ето защо във фърмуера е предвиден специалния механизъм RNGDS_MITG_DIS за изключване защитата на инструкциите RDRAND и RDSEED, които се изпълняват извън Intel SGX анклава.

Откриването на този междинен буфер в процесорите на Intel е изключително важно. Експертите от Амстердам показаха, че междинният буфер съхранява изчислените от операциите RDRAND и RDSEED данни. Това са изключително чувствителни от информационна гледна точка инструкции, които осигуряват псевдослучайните числа за генериране на криптографските ключове. Прочитането на тези числа дава възможност за почти тривиалното извличане на използваните криптографски ключове.

5 1 глас
Оценете статията
Абонирай се
Извести ме за
guest
7 Коментара
стари
нови оценка
Отзиви
Всички коментари