CROSSTalk - уязвимость в CPU Intel, приводящая к утечке данных между ядрами: различия между версиями

[досмотренная версия][досмотренная версия]
Содержимое удалено Содержимое добавлено
Автоматическая загрузка статьи по свободной лицензией с сайта https://www.opennet.ru/.
 
Нет описания правки
Строка 1:
{{дата|9 июня 2020}}
{{тема|Intel|Информационная безопасность}}
{{тема|Компьютерные технологии}}
[[FileФайл:Wikinews-logo-ru.svg|thumb|left|300px|]]
Группа исследователей из Амстердамского свободного университета выявила новую [https://www.vusec.net/projects/crosstalk/ уязвимость] (CVE-2020-0543) в микроархитектурных структурах процессоров Intel, примечательную тем, что она позволяет восстановить результаты выполнения некоторых инструкций, выполняемых на другом ядре CPU. Это первая уязвимость механизма спекулятивного выполнения инструкций, допускающая утечку данных между отдельными ядрами CPU (ранее утечки ограничивались разными потоками одного ядра). Исследователи присвоили проблеме имя CROSSTalk, но в [https://software.intel.com/security-software-guidance/insights/deep-dive-special-register-buffer-data-sampling документах Intel] уязвимость упоминается как SRBDS (Special Register Buffer Data Sampling).
 
Уязвимость относится к представленному год назад классу проблем MDS (Microarchitectural Data Sampling) и основывается на применении методов анализа по сторонним каналам к данным в микроархитектурных структурах. [https://download.vusec.net/papers/crosstalk_sp21.pdf Принцип действия] CROSSTalk близок к уязвимости [https://mdsattacks.com/ RIDL], но отличается источником утечки. Новая уязвимость манипулирует утечкой из ранее недокументированного промежуточного буфера, который используется совместно всеми ядрами CPU.
 
[https://software.intel.com/security-software-guidance/insights/deep-dive-special-register-buffer-data-sampling Суть проблемы] в том, что некоторые инструкции микропроцессора, включая RDRAND, RDSEED и SGX EGETKEY, реализованы с использованием внутренней микроархитекстурной операции SRR (Special Register Reads). На подверженных уязвимости процессорах данные, возвращаемые для SRR, оседают в промежуточном буфере, общем для всех ядер CPU, после чего передаются в буфер заполнения, привязанный к конкретному физическому ядру CPU на котором инициирована операция чтения. Далее, из буфера заполнения значение копируется в регистры, видимые приложениям.
 
Размер промежуточного совместного буфера соответствует линии кеша, что обычно больше, чем размер читаемых данных и разные операции чтения затрагивают разные смещения в буфере. Так как совместный буфер копируется в буфер заполнения целиком, то перемещается не только нужная для текущей операции порция, но и данные, оставшиеся от выполнения других операций, в том числе выполненных на других ядрах CPU.
Строка 12:
В случае успешной организации атаки, аутентифицированный в системе локальный пользователь может определить результат выполнения инструкций RDRAND, RDSEED и EGETKEY в чужом процессе или внутри анклава Intel SGX, независимо от ядра CPU, на котором выполняется код. Выявившие проблему исследователи [https://github.com/vusec/ridl опубликовали] прототип эксплоита, демонстрирующий возможность утечки сведений о случайных значениях, получаемых через инструкции RDRAND и RDSEED, для восстановления закрытого ключа ECDSA, обрабатываемого в анклаве Intel SGX, после осуществления в системе всего одной операции с цифровой подписью.
 
Проблеме [https://software.intel.com/security-software-guidance/processors-affected-transient-execution-attack-mitigation-product-cpu-model подвержен] широкий спектр настольных, мобильных и серверных процессоров Intel, включая Core i3, i5, i7, i9, m3, Celeron (серии J, G и N), Atom (серии С, 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.
 
{{next|Intel исправила очередную MDS-уязвимость в своих процессорах}}
 
{{-}}