28.02.2024

Обновление защищённой Android-платформы GrapheneOS

Доступен выпуск защищённой мобильной платформы GrapheneOS 2024011300, представляющей собой ответвление от кодовой базы Android (AOSP, Android Open Source Project), расширенное и изменённое для усиления безопасности и обеспечения конфиденциальности. Ранее проект развивался под именем AndroidHardening, а до этого ответвился от проекта CopperheadOS после конфликта его основателей. В GrapheneOS официально поддерживается большинство актуальных устройств Google Pixel (Pixel 4/5/6/7/8, Pixel Fold, Pixel Tablet). Наработки проекта распространяются под лицензией MIT.

В состав GrapheneOS включены многие экспериментальные технологии, связанные с усилением изоляции приложений, детальным управлением доступом, блокированием проявления типовых уязвимостей и усложнением работы эксплоитов. Например, в платформе применяется собственная реализация malloc и модифицированный вариант libc с защитой от повреждения памяти, а также более жёсткое разделение адресного пространства процессов. Вместо JIT в Android Runtime применяется только упреждающая (AOT, ahead-of-time) компиляция. В ядре Linux включены многие дополнительные механизмы защиты, например, в slub добавляются канареечные метки для блокирования переполнения буферов. Для усиления изоляции приложений задействованы SELinux и seccomp-bpf.

Имеется возможность предоставления доступа к сетевым операциям, датчикам, адресной книге и периферийным устройствам (USB, камере) только выбранным приложениям. Чтение из буфера обмена разрешено только приложениям, в которых в данный момент активен фокус ввода. По умолчанию запрещено получение сведений о IMEI, MAC-адресе, серийном номере SIM-карты и других аппаратных идентификаторах. Предприняты дополнительные меры для изоляции связанных с Wi-Fi и Bluetooth процессов и предотвращения утечек в результате беспроводной активности. Многие из разработанных в рамках проекта механизмов усиления безопасности перенесены в основную кодовую базу Android.

В GrapheneOS применяется криптографическая верификация загружаемых компонентов и расширенное шифрование данных на уровне файловых систем ext4 и f2fs (данные шифруются при помощи AES-256-XTS, а имена файлов — AES-256-CTS c использованием HKDF-SHA512 для генерации отдельного ключа для каждого файла), а не блочного устройства. Данные в системных разделах и в каждом профиле пользователя шифруются разными ключами. Используются доступные аппаратные возможности для ускорения операций шифрования. На экране блокировки отображается кнопка завершения сеанса, после нажатия которой ключи для расшифровки сбрасываются и хранилище переводится в неактивированное состояние. Имеется настройка для запрета установки дополнительных приложений для выбранных профилей пользователей. Для защиты от подбора паролей задействована система задержек, зависящих от числа неудачных попыток (от 30 секунд до 1 дня).

В состав GrapheneOS принципиально не включаются приложения и сервисы Google, а также альтернативные реализации сервисов Google, такие как microG. При этом имеется возможность установки сервисов Google Play в отдельном изолированном окружении, не имеющем специальных привилегий. Проектом также развивается несколько собственных приложений, сфокусированных на защите информации и приватности. Например, предлагаются браузер Vanadium на базе Chromium и модифицированный вариант движка WebView, защищённый PDF-просмотрщик, межсетевой экран, приложение Auditor для верификации устройств и выявления вторжений, приложение для работы с камерой, нацеленное на обеспечение конфиденциальности, и система создания шифрованных резервных копий Seedvault.

Среди изменений в новой версии:

  • Полностью переделана реализация механизма автоматической перезагрузки, которая переведена на использование таймера в процессе init, а не в процессе system_server, что позволило повысить защищённость и исключить перезагрузку ещё ни разу не разблокированного устройства. Время автоматической перезагрузки уменьшено с 72 до 18 часов. Основная идея автоматической перезагрузки в том, чтобы сбросить активированные (расшифрованные) разделы с пользовательскими данными в исходное нерасшифрованное состояние после определённого времени неактивности.

    Данные пользовательского профиля после перезапуска устройства находятся в зашифрованном виде и расшифровываются только после ввода пользователем пароля входа. Пользователь имеет возможность выйти из сеанса и очистить ключи шифрования, вычисленные на базе его пароля. Если пользователь не покидает сеанс больше 18 часов устройстве теперь будет автоматически перезагружено (таймаут можно изменить в настройках Settings > Security > Auto reboot) для предотвращения анализа ключей, остающихся в памяти устройства.

    В качестве демонстрации необходимости применения функции автоматической перезагрузки разработчики GrapheneOS упомянули недавно выявленные уязвимости в смартфонах Google Pixel и Samsung Galaxy, позволяющие компаниям, специализирующимся на криминалистическом анализе, шпионить за пользователями и извлекать данные при нахождении устройства в активированном состоянии (когда сеанс активен и данные расшифрованы).

  • Добавлен просмотрщик логов (Settings > System > View logs), позволяющий оценить возникающие проблемы и упростить подготовку отчётов об ошибках.
  • Переработан интерфейс для отправки отчётов о сбоях.
  • В adevtool добавлена поддержка Pixel Camera Service, позволяющего использовать ночной режим в приложениях на смартфонах Pixel 6+.
  • В adevtool прекращена поддержка устройств, не поддерживаемых в Android 14.
  • Добавлен вывод уведомлений о срабатывании детектора повреждения памяти в malloc.
  • В ядре Linux отключена поддержка sysrq.
  • Ядро Linux обновлено до последнего обновления GKI (Generic Kernel Image) 5.10.206 для устройств Pixel 6, Pixel 6 Pro, Pixel 6a, Pixel 7, Pixel 7 Pro, Pixel 7a, Pixel Tablet, Pixel Fold, а также до версии 5.15.145 для устройств Pixel 8 и Pixel 8 Pro. Дополнительно подготовлены сборки с ядром 6.1.69.
  • Браузер Vanadium обновлён до кодовой базы Chromium 120.0.6099.210.0.

Источник: https://www.opennet.ru/opennews/art.shtml?num=60440 Источник.