Компания Intel раскрыла сведения о микроархитектурной уязвимости (CVE-2023-28746) в процессорах Intel Atom (E-core), позволяющей определить данные, используемые процессом, до этого выполнявшемся на том же ядре CPU. Уязвимость, которая получила кодовое имя RFDS (Register File Data Sampling), вызвана возможностью определения остаточной информации из регистровых файлов (RF, Register File) процессора, которые используются для совместного хранения содержимого регистров во всех задачах на том же ядре CPU.
Проблема выявлена инженерами Intel в ходе внутреннего аудита. Детальная информация о методе эксплуатации уязвимости не раскрывается. Утверждается, что атакующий не может целенаправленно управлять выбором процессов для извлечения данных, т.е. оседание доступной для извлечения информации носит случайный характер. Тем не менее, мониторинг остаточной информации может привести к утечке конфиденциальных данных, обрабатываемых в векторных регистрах, а также регистрах для хранения чисел с плавающей запятой и целых чисел, процессами других пользователей, ядром системы, виртуальными машинами, анклавами SGX и обработчиками в режиме SMM.
Подверженные утечке векторные регистры активно используются при шифровании, в функциях копирования памяти и при обработке строк, среди прочего и в функциях memcpy, strcmp и strlen. Остаточные данные напрямую не остаются в программных регистрах, но могут извлекаться из регистровых файлов при помощи методов атак по сторонним каналам, таких как анализ данных в кэше CPU.
Уязвимость затрагивает только процессоры Atom на базе микроархитектур Alder Lake, Raptor Lake, Tremont, Goldmont и Gracemont. Так как уязвимые процессоры не поддерживали режим HyperThreading, утечка возможна только в рамках одного потока выполнения текущим ядром CPU. Изменения для блокирования уязвимости включены в состав обновления микрокода microcode-20240312-staging. Методы защиты от уязвимости идентичны тем, что уже применяются для блокирования ранее выявленных атак класса MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling), TAA (Transactional Asynchronous Abort), DRPW (Device Register Partial Write) и SBDS (Shared Buffers Data Sampling).
Для блокирования утечки в ядре и гипервизорах помимо обновления микрокода требуется применение программных методов защиты, основанных на использовании инструкции VERW для очистки содержимого микроархитектурных буферов в момент возвращения из ядра в пространство пользователя или при передаче управления гостевой системе. Указанная зашита уже добавлена в гипервизор Xen и ядро Linux. Для включения защиты в ядре Linux можно использовать при загрузке ядра флаг “reg_file_data_sampling=on”, а для информацию о подверженности уязвимости и наличии необходимого для защиты микрокода можно оценить в файле “/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling”.