Утечка документов показывает, что компания Google планировала, а затем отказалась от ключевой функции безопасности Pixel 11 для GrapheneOS

GrapheneOS — форк Android с усиленными функциями конфиденциальности, который на протяжении многих лет устанавливался исключительно на смартфоны Google Pixel, — заявляет, что не может обеспечить надлежащую поддержку новой серии Pixel 11. После недели попыток принудительно осуществить портирование команда обнаружила, что в чипе Tensor G6 модели Pixel 11 отсутствует аппаратная поддержка функции под названием Memory Tagging Extension (MTE) — функции безопасности, присутствующей во всех чипах Pixel начиная с модели Pixel 8, выпущенной в 2023 году.
В основном MTE работает следующим образом: память вашего телефона представляет собой огромную сетку из множества небольших ячеек хранения данных. Многие уязвимости используются таким образом, что приложение обманывается и считывает данные из неправильной ячейки или записывает в неё данные, к которым оно не должно было обращаться. MTE предотвращает это, прикрепляя невидимую «записку» к каждому 16-байтовому блоку памяти и к каждому указателю, имеющему право доступа к нему. Если эти «записки» не совпадают в момент попытки программы чтения или записи, чип резко «тормозит», прерывая процесс вместо того, чтобы незаметно пропустить эксплойт. GrapheneOS использует MTE во всей своей ОС и утверждает, что эта технология пресекает целые категории попыток удалённого взлома ещё до того, как они успевают начаться. Команда заявляет, что, судя по всему, Google удалила MTE из Pixel 11 с целью экономии средств; Google пока не дала комментариев. В настоящее время GrapheneOS рекомендует пользователям отказаться от Pixel 11 и вместо него приобрести Pixel 8, 9 или 10, если они желают использовать GrapheneOS.
Что на самом деле позволяет сэкономить Google удаление MTE
Исследовательская работа ученых из Техасского университета в Остине, Калифорнийского университета в Беркли, компании Google и Ampere Computing (arXiv:2601.11786) даёт представление о том, во что обходится внедрение MTE в реальном аппаратном обеспечении, а также показывает, какую экономию получает компания, отказавшись от его использования.
Сами «заметки» занимают довольно мало места: 4 бита на каждые 16 байт памяти, что соответствует накладным расходам примерно в 3,125 %. В руководстве ARM не указано, где именно производители микросхем должны хранить эти «заметки», а лишь то, что они должны где-то находиться. Именно поэтому компании реализуют это по-разному. В собственном эталонном проекте ARM выделяется специальный блок оперативной памяти, и при промахе кэша выполняются два отдельных запроса к памяти: один — для данных, другой — для соответствующей «заметки». Компания Ampere, производящая серверные чипы, вместо этого размещает «заметки» на битах, обычно используемых для коррекции ошибок, и извлекает данные и «заметку» одновременно за один цикл. Ни один из подходов не является более правильным; компания ARM специально встроила такую гибкость в архитектуру.
Более значительные затраты связаны не с дополнительными 3,125 % памяти, требуемыми на чипе, а с дополнительной работой, которую чипу приходится выполнять при каждом обращении к памяти. Каждый раз, когда ваш телефон обращается к памяти, ему необходимо проверять эту небольшую метку, что требует наличия специальной схемы сравнения. Для случайного назначения меток, чтобы злоумышленники не могли их предсказать, требуется встроенный в микросхему генератор случайных чисел, а создать быстрый генератор с достаточной энтропией без ущерба для качества весьма сложно. Несколько специальных инструкций для записи меток требуют собственного канала прохождения через микросхему, а не повторного использования обычного пути.
Представьте себе ядро процессора с нелинейным выполнением команд как кухню, где несколько поваров одновременно готовят разные части заказа, не обязательно в том порядке, в котором он поступил, при условии, что ничто не зависит от того, что ещё не готово. Именно так современное ядро с внеочередным выполнением обычно сохраняет высокую скорость: оно не простаивает, а работает над тем, над чем может, пока более медленные этапы не наверстают отставание.
Строгий режим SYNC технологии MTE вносит сбой в одну из частей этой «кухни»: запись в память. Обычно ядро может записывать данные в память и продолжать работу над следующими инструкциями, пока эта запись завершается в фоновом режиме. Однако в режиме MTE SYNC для каждой записи сначала необходимо проверить её небольшую метку и подтвердить её достоверность, и до тех пор, пока эта проверка не будет завершена, ядру не разрешается переходить к следующей записи. Дело не в том, что вся «кухня» останавливается: приготовление (чтение, вычисления, ветвление и т. д.) продолжается в произвольном порядке без проблем. Речь идет именно о шаге «поставить готовую тарелку на стол», который теперь должен выполняться по одному, по порядку, с ожиданием проверки метки каждый раз. Код, который многократно записывает данные в память в тесном цикле, постоянно сталкивается с этой проблемой, и именно поэтому в некоторых тестах производительность снизилась до 6,64 раз. Код, в котором преобладают операции чтения, вычислений или ветвления, практически не замечает этого, поскольку часть конвейера, которая стала работать медленнее, не является той, на которую он опирается.
Даже в облегчённом режиме MTE обычное «большое» ядро по-прежнему демонстрировало замедление до 1,82 раза, и именно этот режим сегодня используется в собственной функции Google «Advanced Protection». Между тем серверный чип Ampere и новый чип M5 от Apple практически не реагировали на включение MTE: средняя нагрузка составляла всего 2–3 %, а замедление в худшем случае достигало 10 %. Этот разрыв доказывает, что такие замедления не являются каким-то неизбежным законом физики; они отражают, насколько хорошо (или плохо) инженеры конкретного чипа реализовали данную функцию. А зная Tensor, мы не ожидаем от него ничего особенного.
Кто-то проверил загрузчик, и да, его действительно нет
Теперь появились доказательства, подтверждающие это, помимо собственных заявлений GrapheneOS. Разработчик под ником Romashka, который также ведёт канал «Mystic Leaks» в Telegram, проанализировал загрузчики Pixel 10 (внутреннее кодовое название «deepspace») и Pixel 11 («spacecraft») с помощью дисассемблера — инструмента, который преобразует скомпилированный код обратно в более или менее удобочитаемый вид. В загрузчике Pixel 10 аббревиатура MTE встречается повсеместно: в названиях функций, таких как «gs_mte_enable», в отладочных сообщениях, например «MTE cmdline override ON», и даже в скрытых командах, таких как «fastboot_oem_cmd_mte».

Попробуйте найти то же самое в загрузчике Pixel 11 — вы ничего не обнаружите. Ни единого следа. Это весьма существенное отличие: если бы Google просто переключил переключатель, чтобы отключить MTE, можно было бы ожидать, что эти имена функций и сообщения всё равно останутся в коде, просто неиспользуемыми. Их полное отсутствие указывает на то, что код был полностью удалён, а не просто отключён. Это точно подтверждает то, о чём заявила GrapheneOS после того, как отказалась от своего порта.
Утечка внутренних документов свидетельствует о том, что технология MTE планировалась для Tensor G6, но затем была исключена
Несколько просочившихся внутренних документов команды Google по разработке микросхем, известной внутри компании как gChips, датированных несколькими годами назад, указывают на то, что технология MTE изначально входила в проект, но затем была намеренно исключена.
На очень старом слайде дорожной карты проекта «Malibu» — внутреннего кодового названия G6 — технология MTE указана в качестве части базовых технических характеристик чипа и представлена как «Hela (собственная система межядерной связи Google) + MTE в SLC». Это указывает на другой просочившийся слайд под названием «Спецификация архитектуры системного кэша Google (GSLC)», история изменений которого восходит к маю 2022 года. В списке «Функции P0», обозначающем наивысший приоритет, в документе в качестве второго пункта указана «поддержка MTE», зачеркнутая красным. Нам неизвестно, когда именно была добавлена эта зачеркнутая строка, однако известно, что Google планировала иную реализацию MTE для G6 и занималась её доработкой, прежде чем отменить этот проект по неизвестным причинам.
У Motorola есть ответ: Wukong
Кроме того, компания GrapheneOS завершает сделку с Motorola, в рамках которой операционная система впервые будет установлена на смартфон, не относящийся к линейке Pixel, а Qualcomm приступила к добавлению поддержки MTE в свои новейшие чипы, включая Snapdragon 8 Elite Gen 5.
Как стало известно NotebookCheck, Motorola разрабатывает флагманский смартфон с внутренним кодовым названием «Wukong», построенный на базе следующего флагманского чипа Qualcomm — Snapdragon 8 Elite Extreme Gen 6 (SM8975), полная презентация которого запланирована на Snapdragon Summit 22 сентября. На данный момент это единственное устройство Motorola, разработка которого ведётся на базе данного чипа. Если «Wukong» станет первым смартфоном Motorola с операционной системой GrapheneOS, он станет первым устройством, сочетающим полноценную поддержку MTE, флагманский чип Qualcomm и поддержку GrapheneOS — то, чего в настоящее время невозможно получить даже на Pixel 11, сколько бы вы ни потратили.
Здесь уместно сделать стандартное предупреждение: на столь раннем этапе разработки технические характеристики и даже кодовое название «Wukong» взяты из внутренних материалов и могут измениться до официального анонса. Компания Motorola не подтвердила существование данного смартфона.
И последнее, но не менее важное: действительно ли MTE имеет большое значение для большинства людей?
Для обычного покупателя Pixel 11 потеря поддержки MTE, на мой взгляд, не является такой катастрофой, как это может показаться из данной статьи.
MTE — это вероятностная функция, а не твёрдая гарантия. Вероятность того, что конкретный выход за пределы области доступа полностью обойдёт проверку тегов, составляет 1 к 16, а исследование, цитируемое в той же статье (TikTag), нарушила секретность тегов на реальном оборудовании Pixel с помощью спекулятивного выполнения, а это означает, что даже предлагаемая ею защита на практике не так надежна, как предполагает соотношение «15/16». И, что особенно важно, практически ни один из уязвимостей, о которых среднестатистическому владельцу телефона действительно стоит беспокоиться, изначально не является ошибкой безопасности памяти. Фишинг, вредоносные разрешения приложений, подмена SIM-карт, программы для слежки и взлом учетных записей — ничто из этого не относится к тому, от чего защищает MTE. Даже сама GrapheneOS признает, что поддержка сторонних приложений является опциональной и используется редко; Signal не включает эту функцию.
MTE действительно оправдывает себя в той модели угроз, для которой создана сама GrapheneOS: дорогостоящие, требующие высокой надёжности цепочки эксплойтов типа «zero-click», которые продаются за миллионы долларов и используются почти исключительно против журналистов, диссидентов и государственных целей, а не против обычного потребителя. Это реальный и важный сценарий применения. Просто он весьма узкий. Телефон, который выходит из строя вместо того, чтобы быть незаметно взломанным, — это действительно важно, если вы являетесь целью с высоким уровнем риска, за которой наблюдает государственный субъект. Это гораздо менее актуально, если ваш реальный риск заключается в потере телефона в баре или нажатии на вредоносную ссылку в текстовом сообщении. Соблюдение надлежащих мер оперативной безопасности (OPSEC), использование уникальных паролей, отказ от сканирования случайных QR-кодов и отказ от разбрасывания личной информации по всем сайтам, которые её запрашивают, обеспечивают для большинства людей гораздо более реальную защиту, чем любая функция безопасности памяти на уровне микросхем.
Ничто из вышесказанного не делает регрессию микросхемы Pixel 11 несущественной проблемой. Пользовательская база GrapheneOS — это именно та аудитория, для которой это имеет наибольшее значение, и потеря поддержки целого поколения устройств Pixel является серьёзным ударом для этого проекта. Однако следует честно признать, что MTE в большей степени представляет собой ценную меру защиты для предприятий или пользователей, подверженных высокому риску, которая случайно оказалась в потребительских микросхемах, чем функцию, отсутствие которой заметит обычный покупатель Pixel 11. И есть некоторая ирония в том, как Google оказалась в этой ситуации: именно эта компания в первую очередь продвинула MTE в массовое использование, внедрив эту технологию в процессор Tensor раньше, чем почти кто-либо другой в экосистеме Android, финансируя исследования в этой области и создав вокруг неё целый режим безопасности. Теперь же её собственные внутренние документы свидетельствуют о том, что компания внедрила MTE в свой следующий чип, подробно описала эту технологию, а затем незаметно удалила её перед запуском. В данном случае никто не превзошёл Google в техническом плане. Компания сама лишила себя этой функции.
Источник(и)
GrapheneOS через X, Romashka (Mystic Leaks) через Telegram, ARM (1), (2), arXiv:2601.11786v1, IEEE: TikTag: Обход расширения ARM по маркировке памяти с помощью спекулятивного выполнения (доступ по подписке), Блог Google по безопасности, исследование NotebookCheck










