В Apple M1 обнаружена уязвимость M1RACLES, которую невозможно исправить программно

В новенькой SoC Apple M1 нашли уязвимость. Обнаружил её разработчик Asahi Linux Гектор Мартин (Hector Martin) в процессе работы над своим проектом по переносу Linux на ПК с M1. 

Автор назвал уязвимость M1RACLES (M1ssing Register Access Controls Leak EL0 State). Суть уязвимости в том, что системный регистр ARM с кодом s3_5_c15_c10_1 доступен из режима EL0 и содержит два реализованных бита, которые могут быть прочитаны или записаны (биты 0 и 1). Это регистр для каждого кластера, к которому могут одновременно обращаться все ядра кластера. Это делает его двухбитным скрытым каналом, который любой произвольный процесс может использовать для обмена данными с другим процессом.  

Пара взаимодействующих процессов может построить устойчивый канал из этого двухбитового состояния, используя протокол синхронизации. Это позволяет процессам обмениваться произвольным объемом данных, ограничиваясь только накладными расходами ЦП.  

Проще говоря, два приложения могут скрытно обмениваться данными напрямую, минуя память, файлы и любые другие обычные функции ОС. Правда, по умолчанию этот канал имеет ширину всего в 2 бита. И хотя его можно расширить до 1 МБ/с, в целом автор говорит, что переживать пользователям Mac на M1 не стоит. 

Матин отмечает, что любые приложения, которые могли бы воспользоваться такими методами передачи данных, с гораздо большей вероятностью будут использовать другие каналы. Более того, Мартин прямо говорит о том, что просто решил потроллить СМИ, которые раздувают те или иные данные о новых уязвимостях в процессорах. Уязвимость, конечно, действительно существует, но она не несёт угрозы, так что о ней можно было бы и не сообщать. 

Интереснее другой факт. Разработчик предполагает, что существование данной уязвимости является следствием намеренных действий Apple по изменению спецификаций Arm. Купертинский гигант попросту удалил некую одну функцию, вероятно, потому что полагал, что она никогда не пригодится в macOS.  

Исправить уязвимость программно невозможно.  

Источник: ixbt.com/