ИБ-исследователь Гектор Мартин рассказал о найденной им уязвимости открытого канала в архитектуре чипа Apple М1, которую нельзя исправить. Он назвал ее M1racles (CVE-2021-30747). С помощью этого аппаратного бага можно передавать данные с настолько быстрой скрытой передачей данных между двумя приложениями различных пользователей в системе, что её хватает на видеопоток. Это происходит на уровне одного из каналов в вычислительном ядре чипа M1. С виртуальными машинами «уязвимость открытого канала» не работает.

M1RACLES — это сокращение от M1ssing Register Access Controls Leak EL0 State (утечка контроля доступа к регистру состояния в режиме EL0).

Системный регистр архитектуры ARM под кодом s3_5_c15_c10_1 доступен из режима EL0 и содержит два бита, которые могут быть прочитаны или записаны (биты 0 и 1). Этот регистр доступен для каждого кластера, к которому могут одновременно обращаться все ядра кластера, что делает его двухбитным скрытым каналом, который любой произвольный процесс может использовать для обмена данными с другим взаимодействующим процессом. Мартин опубликовал на GitHub демо-приложение для доступа к этому регистру.

Пара взаимодействующих процессов может построить устойчивый канал из этого двухбитового состояния, используя протокол синхронизации и данных (например, одна сторона записывает 1x для отправки данных, другая сторона записывает 00 для запроса следующего бита). Это позволяет двум процессам (приложениям) обмениваться произвольным объемом данных, ограничиваясь только накладными расходами ЦП. У Мартина получилось без особой оптимизации достичь скорости передачи более 1 МБ/с.

Мартин уточнил, что первоначальное назначение этого регистра неизвестно. Он предполагает, что он не был специально сделан доступным из режима EL0, что делает инцидент аппаратной ошибкой, которую Apple не сможет исправить программными обновлениями. В компании в курсе уязвимости M1. Там считают, что злоумышленники не смогут ее использовать, так как процесс передачи данных работает исключительно в рамках одного ПК и только при инициировании специальной команды отправки, а передача во внешнюю среду невозможна без разрешения пользователя.

Примечательно, что уязвимость M1racles позволяет создавать скрытый канал для незаметного (при штатной работе системы) обмена данными между двумя процессами, запущенными от имени разных пользователей и с разными уровнями привилегий. Фактически любые два приложения, работающие под управлением операционной системы macOS или Linux, могут обмениваться данными по высокоскоростному каналу без использования памяти, сокетов, файлов или других «нормальных» возможностей ОС.

Мартин считает, что в самом худшем случае эту уязвимость могут использовать, например, рекламные компании для отслеживания действий пользователей между своими приложениями.


Пример использования уязвимости M1RACLES с передачей видео между приложениями.

Мартин с конца прошлого года занимается краудфандинговым проектом Linux для Maс на M1 — Asahi Linux. Именно в рамках изучения архитектуры М1 по этому проекту он смог обнаружить
уязвимость M1RACLES.