Мир знает множество попыток создать защищенный смартфон. Это и Blackphone с функцией шифрования всех коммуникаций, и сомнительный BlackBerry Priv, и даже GATCA Elite, создатели которого вообще не стали ничего придумывать и выдали за эксклюзивные стандартные возможности Android. Совсем недавно о создании рабочего прототипа защищенного смартфона объявили разработчики Tor, а мимо такой новости точно нельзя проходить.

«Защищенный смартфон от разработчиков анонимизирующего ПО» — звучит странно, не правда ли? Но не спеши с выводами. В отличие от того же BlackBerry Priv, «Tor-смартфон» основан на открытом ПО от нескольких компаний и независимых разработчиков, сам смартфон — это Nexus 6P. Его даже не собираются продавать, а вместо этого поставляют специальную прошивку.

Прошивка, естественно, основана на Android, но не на том Android, который ты привык видеть в своем смартфоне, а на его модификации под названием CopperheadOS. Ее создали security-специалисты из канадской компании Copperhead. Больше они, в общем-то, ничем не известны, но, судя по тем функциям, которые уже внедрены в прошивку, эти ребята явно знают, что делают.

 

CopperheadOS

Главная особенность CopperheadOS — существенно расширенные средства предотвращения взлома. Прошивка включает в себя модернизированную реализацию аллокатора памяти (malloc) из OpenBSD (подробнее о нем можно прочитать здесь), который рандомизирует выделяемые приложению страницы и заполняет мусором возвращаемые страницы памяти. Это делает атаки класса use-after-free более сложными в реализации. OpenBSD malloc также размещает метки в конце выделяемых областей памяти, которые проверяются при ее освобождении. Это позволяет бороться с атаками типа heap overflow.

При сборке CopperheadOS используются средства компилятора для предотвращения срыва стека. В частности, механизмы _FORTIFY_SOURCE в GCC (Android < 7.0), -fsanitize=bounds, -fsanitize=object-size в Clang (Android 7.0), механизм -fsanitize=integer для защиты от целочисленного переполнения (integer overflow). Эти средства использует Google в AOSP, но разработчики CopperheadOS расширили их применение для гораздо большего количества функций стандартной библиотеки языка си (и, что немаловажно, закоммитили в апстрим).

Для защиты от модификации кода CopperheadOS использует механизм доверенной загрузки, впервые появившийся в Android 4.4, и, кроме того, не полагается на заблаговременно оптимизированный код приложений из каталога /data/dalvik-cache. Последний нужен для быстрого запуска приложений и генерируется во время первой загрузки смартфона (сообщение «Оптимизация приложений…»). Однако он же может быть использован для внедрения в систему зловредного кода: нет смысла подменять само приложение в разделе /system — механизм доверенной загрузки откажется загружать смартфон после модификации системного раздела, а вот оптимизированный код в /data/dalvik/cache ни у кого подозрений не вызовет.

Ядро CopperheadOS собрано с патчем PaX, включающим в себя несколько механизмов предотвращения атак:

  • PAX_RANDMMAP — более продвинутая, в сравнении с применяемой в стандартном ядре Android, реализация механизма рандомизации адресного пространства (ASLR), затрудняющая атаки, направленные на переполнение буфера и хипа;
  • PAX_PAGEEXEC — механизм защиты страниц данных от исполнения, который убивает приложение, как только оно попытается исполнить код в области данных (в ядре Android есть такой механизм, но он действует более мягко);
  • PAX_MPROTECT — препятствует модификации кода приложения во время исполнения;
  • PAX_MEMORY_SANITIZE — обнуляет страницу памяти при ее освобождении (только для пространства ядра);
  • PAX_REFCOUNT — система автоматического освобождения неиспользуемых объектов в памяти, позволяет предотвратить атаки типа use-after-free (только для пространства ядра);
  • PAX_USERCOPY — защита от переполнения буфера путем сверки размера объекта (только для пространства ядра);
  • PAX_KERNEXEC — защита страниц памяти от исполнения (только для пространства ядра).

В CopperheadOS более строгие правила SELinux — системы разграничения прав доступа к файлам, системным вызовам и железу. К примеру, здесь нельзя выполнить код из временных каталогов (подключенных с помощью псевдоФС tmpfs), нельзя получить доступ к важной системной информации и информации о других процессах с помощью чтения файлов каталога /proc.

CopperheadOS включает в себя множество других ограничений. По умолчанию стандартное приложение камеры не указывает в метаданных снимка местоположение съемки, а экран не показывает уведомления, которые могут раскрыть конфиденциальную информацию (Android и iOS разрешают показ таких уведомлений, с возможностью отключения). Работающие в фоне приложения не могут получить доступ к буферу обмена (что ломает работоспособность нескольких полезных приложений из маркета). MAC-адрес всех сетевых интерфейсов по умолчанию рандомизируется. Компонент WebView, отвечающий за отрисовку веб-страниц в сторонних приложениях (и многих браузерах), использует функцию isolatedProcess, позволяющую запереть каждый инстанс WebView в собственную песочницу.

Сам Chromium, на котором базируется WebView, включает в себя ряд ограничений и настроек, направленных на защиту от утечек данных: отключены коррекция ошибок в адресной строке, предзагрузка страниц, контекстный поиск, метрики и аудит гиперссылок. В качестве поисковой системы используется не отслеживающий пользователя DuckDuckGo.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


5 комментариев

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

Мобильные приложения ряда крупных банков уязвимы перед MitM-атаками

Исследователи из университета Бирмингема предупредили, что приложения многих крупных банко…