Современные Android-устройства достаточно безопасны и вот почему

Автор оригинала: PalOne
  • Перевод


Говоря о преимуществах платформы Android, большинство пользователей обычно называют настраиваемость, разнообразие устройств и гибкие цены. И почему-то о безопасности речи нет. Видимо, большинство просто не считает Android безопасным. Самая большая причина может быть в том, что Google Play Store — это открытая площадка: залить туда вредоносное ПО гораздо проще, чем в Apple AppStore. И это действительно случалось. Неоднократно.

Это реальная проблема. Но она связана с недостаточно жёсткой политикой Google на платформе. Хотя, похоже, это постепенно меняется. В любом случае, нужно всегда помнить о том, какому программному обеспечению следует доверять, а какому — нет. На любой платформе.

Недавно я искал новый телефон и заодно решил выяснить, каков сейчас уровень защищённости платформы Android и какой телефон наиболее безопасен. Выяснилось, что у Android неплохая модель безопасности.

Прежде всего, производитель устройства должен убедиться, что его телефон с Android OS соответствует Документу определения совместимости Android (CDD). Если устройство не соответствует требованиям к аппаратному обеспечению, оно не сможет работать с этой ОС. Если поставщик меняет систему Android и этим нарушает CDD, то такую систему больше нельзя называть «Android». Поэтому, если вы покупаете устройство и явно указано, что оно работает под управлением Android, это означает, что совместимость с CDD гарантирована.

CDD гарантирует безопасность


В CDD для Android 10 есть целый раздел, посвящённый безопасности. Этот документ огромен и ссылается на множество других огромных документов. Я постараюсь сформулировать предельно коротко.

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

Песочница должна быть организована правильно. Подробности описаны в этом документе. По сути, каждое приложение имеет уникальный идентификатор пользователя UNIX и каталоги, которые принадлежат этому и только этому пользователю. Поскольку у Android нет пользователя root, другие приложения не могут получить доступ к данным, которые хранятся в этих каталогах. Следовательно, введение root в систему нарушит модель безопасности. Вот почему мы никогда не увидим Android-телефон, который по умолчанию рутирован. Помимо всего этого, существуют также политики SELinux для принудительного контроля доступа.

Таким образом, обязательные средства управления доступом (Mandatory Access Control — MAC) SELinux должны обеспечить изолированную среду для приложений ядра. Обязательные политики контроля доступа разрешают устанавливать и применять ограничения. Они не могут быть изменены или перезаписаны каким-либо пользователем и, следовательно, это практически не под силу вредоносному ПО.

Шифрование


CDD также требует, чтобы разделы /data и /sdcard встроенного хранилища были зашифрованы «из коробки». Раздел /data содержит персональные данные для каждого приложения. Раздел /sdcard — хранилище общего назначения: там, например, хранятся ваши фотографии и документы.

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

Верифицированная загрузка


В первую очередь, такая загрузка также должна работать правильно:

  • Весь исполняемый код должен быть получен из надёжного источника (обычно это производители устройств), а не от злоумышленника. На каждом этапе загрузки проверяется целостность и подлинность компонента, прежде чем передать ему выполнение.
  • В дополнение к тому, что устройства работают под управлением безопасной версии Android, проверяется корректность версии ОС. Защита от отката помогает предотвратить сохранение возможного эксплойта, поскольку устройства обновляются только до более новых версий Android.

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

Более того, верифицированная загрузка гарантирует, что нежелательный код не будет выполняться во время или непосредственно после загрузки. Это усложняет жизнь любому типу вредоносного ПО. После перезагрузки мы автоматически удаляем это ПО, если оно вдруг попало в систему. Например, такие джейлбрейк-эксплойты, как checkra1n, не сохраняются после перезагрузки. Напомню, что iOS тоже использует верифицированную загрузку.

Управление доступом к данным


Для шифрования нужны ключи, которые должны где-то храниться. Для защиты ключей Android может использовать технологии Keymaster и Strongbox, даже в случае компрометации ядра или аппаратных эксплойтов (например, Meltdown and Spectre).

Samsung KNOX, например, идёт ещё дальше: после перепрошивки загрузчика, ядра или Recovery на пользовательское, а также при получении на устройстве root-прав будет активирован электронный предохранитель. После его активации пользователь больше не сможет оплачивать покупки через сервис мобильных платежей Samsung Pay, а устройство потеряет доступ к данным из защищённых каталогов.

Хватит платить за ошибки памяти


Недавнее исследование Microsoft показало, что около 70% всех уязвимостей в продуктах Microsoft связаны с уязвимостью в памяти. Исследование Google показало то же самое для Chrome. Так что, безусловно, есть основания полагать, что это актуально и для Android.

И специалисты компании Google решили исправить эту проблему. В Android 11 они использовали новый распределитель памяти, несколько более безопасных способов инициализации ядра и пространства пользователя, а также методы выявления ошибок памяти в режиме реального времени.

Ошибки памяти безусловно не исчезнут полностью, но наверняка теперь их будет гораздо меньше.

Вершина айсберга…


Всё вышеперечисленное — это лишь вершина айсберга. Есть ещё много интересных подробностей, которые можно узнать о безопасности систем на базе Android. Например, про тот же Samsung KNOX можно написать отдельную большую статью.

Так что, вопреки распространённому мнению, современные Android-устройства довольно безопасны.



На правах рекламы


Безопасные виртуальные серверы с защитой от DDoS-атак и мощным железом. Всё это про наши эпичные серверы. Максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.

VDSina.ru — хостинг серверов
Серверы в Москве и Амстердаме

Комментарии 29

    0

    Чем же Рут в Андроиде опасен? Прав Рута не будет у каждого приложения. Да и вообще по такой логике Линукс не безопасен, ведь там тоже есть Рут

      +2
      В Linux наличие прав суперпользователя не лишает вас возможности использовать безопасную загрузку. В Android получение этих прав в подавляющем большинстве случаев требует разблокированный загрузчик, что создаёт дополнительные возможности для атаки при наличии у злоумышленника физического доступа к устройству (банально протроянить системный раздел, который в Android не шифруется). С заблокированным загрузчиком такой сценарий не прокатит — он откажется загружать

      Реальность такой атаки на конкретного человека — другой вопрос.
        +2
        дополнительные возможности для атаки при наличии у злоумышленника физического доступа
        вот только в 99,9% это не злоумышленник, а юзер, купивший устройство за свои деньги. А злоумышленник, да при физическом доступе, подпаяется в конце концов куда-нить и всё сдампит с потрохами, от физического доступа защита — сейф.
          +1
          Если у пользователя включено шифрование данных и защита при загрузке (запрос пароля), то всё, что сдампит злоумышленник — зашифрованные данные, которые он может пытаться расшифровать до тепловой смерти Вселенной.
            –1

            Термо-ректальный криптоанализ никто не отменял это раз. Брутфорсе тоже — это два. И третье — физический доступ имеет только сам пользователь, да и пароли обычно стоят тривиальные ...

              0
              Как раз брутфорс очень затруднён. Если скачать зашифрованный раздел из флеш-памяти устройства, то не получится перебирать пароли без состояния Keymaster/Strongbox, которое должно быть неизвлекаемым. А перебирать полное пространство ключей будет слишком дорого.
          0
          банально протроянить системный раздел, который в Android не шифруется

          он не шифруется, но он защищен dm-verity. Окей, на разлоченном устройстве перепаковываем boot image, и отключаем проверку в fstab. И… все равно не можем полноценно писать в system потому что ФС дедуплицирована, и измененный блок оказывается сразу во многих файлах. Посмотрите на Magisk, как он организует персистентность. Совсем не записью в /system, в него уже много лет никьо не пишет.

            0
            Вы правы, но это уже нюансы, можно и в /boot встроиться, как тот же Magisk. Суть в том, что открывается возможность подсунуть недоверенный исполняемый код.

            А с Linux на традиционном десктопе такой не провернёшь — SecureBoot защищает.
              0
              А с Linux на традиционном десктопе такой не провернёшь — SecureBoot защищает.
              вы правда используете у себя на десктопе SecureBoot с Linux, и шифруете все диски целиком?
                +4

                на рабочем ПК — да

                  0
                  Всё, что вы перечислили, кроме Linux (но в ближайшие годы и это будет исправлено — сегодня появилась надежда, что ПО, которое пока намертво привязывает меня к Windows, сможет работать в Linux).

                  А так, да: SecureBoot и оба накопителя зашифрованы BitLocker, необходимая для расшифровки информация частично хранится в модуле TPM, частично в моей памяти.
                  +1

                  Часть телефонов(например последние пиксили) позволяют использовать свой ключ для подписи(записав его в vbmeta и залочив загрузчик). В терминологии гугла это yellow уровень безопасности.
                  https://source.android.com/security/verifiedboot/boot-flow

                    +1
                    Дело в том что ключей таких не один. И используются они для разных целей.
                    Одних только secure boot PK_HASH в современных Qualcomm аж три штуки. А приём с vbmeta влияет только на «хвост» доверенной загрузки, начиная с ядра андроида. (т.е. для частей, которые и так считаются недоверенными). Например подписать так XBL не получится, даже несекурную его часть.
                    +2
                    >> А с Linux на традиционном десктопе такой не провернёшь — SecureBoot защищает.

                    SecureBoot активирован на всех телефонах давным давно.
                    Читаем внимательно «Окей, на разлоченном устройстве» — pазлочка здесь отключение SecureBoot для ядра ОС. Подчеркну, что весь остальной SecureBoot остаётся активным. И отключить его невозможно.

                    Кроме того хочу заметить, что в отличие от десктопа, на телефонах High Level OS/Rich OS (HLOS) aka Android имеет самые лоховские привилегии. И в модели безопасности считается априори недоверенной. Она всецелом опирается на уже существующие сервисы. Которые могут, например, самостоятельно раутить видеотрафик от камеры или же рисовать на экране, в отрыве от Linux ядра, и оно туда доступ иметь не будет.

                    До загрузки HLOS запускается целая кипа других компонентов (TrustZone, SecureMonitor, Hypervisor, RPM и т.д.). Причём даже UEFI загрузчик концептуально разделён на 2 части, одна из которых считается недоверенной (та, которая грузит HLOS).

                    Некоторые компоненты запускаются из HLOS но с проверкой firmware через SecureMode, через их собственный PBL на собственном процессоре, с аппартной изоляцией памяти от основного процессора. Например модем (в нём вся беспроводная связь сегодня, включая WiFi и BT). Отключить проверку таких компонент не получится. А для самых критических не поможет даже замена процессора/прошивание своего вендорского ключа. К ним не имеет доступ даже производитель телефонов.
                +1
                Он опасен для производителей- с рутом пользователь может удалять навязчивые сервисы, улучшая производительность девайса и освобождая память.
                  0
                  лубянка негодуЭ
                0
                В любом случае, нужно всегда помнить о том, какому программному обеспечению следует доверять, а какому — нет. На любой платформе.

                Спорный вопрос, ведь устанавливая платные приложения, рассчитываешь на то, что они уже безопасны для устройства.
                  +5

                  800 посаженных на прошлой неделе мафиози лайкнули ваш пост.

                    +2
                    Согласен. Я даже своему, собственноручно написанному, софту не не вполне доверяю
                    +1
                    Но она связана с недостаточно жёсткой политикой Google на платформе.

                    Как по мне политика наоборот чрезмерно жесткая. Что у гугла что у яблока. Хорошо пока у андроида сохраняется возможность ПО не из магазинов ставить.
                      0
                      Для яблока есть Enterprise билды, которые так же можно ставить «откуда угодно» и если пользователь согласен доверять этому разработчику.
                      +3

                      "электронный предохранитель" aka e-fuse, fprom естт не только у самсунга. у qualcomm они пережигаютмя с незапамятных времён при анлоке (2013 или даже раньше). Просто эта информация использовалась только как дигностическая, в сервиснвх центрах. Ну и заодно при первом анлоке стирались DRM ключи, понижая уповень widevine. С новыми версиями Google safety net приложения смогут получать неподделываемую информацию о состоянии устройства (разблокировано сейчас, было ли разблокировно хоть однажды). Неизвестно еще к чему это приведет. Рут однозначно перестанет быть скрываемым. Но вот если условный макдональдс откадется принимать заказ с такого устойства — эо будет весело.

                        0

                        Верифицировання загрузка


                        Опечатка

                          0
                          Спасибо!
                          –1
                          Больше всего добивает практика вендоров прошить неудаляемые аппликации, типа фейсбука итд.
                          Вот зачем мне нужен рут, а то у жены папка «неудаляемое *****» висит
                            +3

                            Убрать этот мусор можно и без рута — через pm uninstall -k --user 0, что локально деинсталлирует любые приложения (даже системные).

                            +2
                            Всё описанное в статье — это как раз пример небезопасности. Это сложность. Это катастрофическая сложность во имя ничего. Те, кто писали игры на восьмиразрядных микроконтроллерах PIC для VGA мониторов меня поймут.

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

                            А ещё для того, чтобы Гугл безнаказанно качал терабайты данных из пользователей, а сторонние приложения в правах были бы ограничены.

                            Если бы цель была — именно безопасность пользователей — всё было бы просто. Именно просто, с большой буквы. На столько просто, чтобы проверить всё мог один человек за не боле чем год. И доступ был бы, с небольшими ограничениями чуть ли не везде.

                            Вообще идеал — это ОС весом в пятьсот — семьсот килобайт максимум, обеспечивающая именно функции ОС, базовые — память, потоки, базовое взаимодействие с устройствами, файловая система. И всё это открытое. А то, что называется «Андройдом» крутиться как приложение.

                            И никаких board support package, всё простое и открытое. Да, процессор без этих сложных конвейеров с предсказаниями, да, с производительностью в три раза ниже за ту же энергию, но простой, понятный, и открытый.

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

                            Хотите реальный тест? Есть устройство. Первая атака. Нужно провести атаку с полным извлечением данных за десять минут доступа к устройству плюс время на перекачивание данных. Вторая атака. Нужно удалённо захватить полное управление устройством, в том числе писать и читать везде. За любую из этих атак — награда — от десяти миллиардов долларов и выше. (Да, я написал именно про десять миллиардов долларов). Если Гугл например не готов предложить такие деньги за атаку — вся эта якобы безопасность ничего, абсолютно ничего не стоит. Это всё — лишь пустой трёп внутри и около гугла.
                              0
                              >И никаких board support package, всё простое и открытое. Да, процессор без этих сложных конвейеров с предсказаниями, да, с производительностью в три раза ниже за ту же энергию, но простой, понятный, и открытый.

                              Да если современное железо упростить скорость и энергоэффективность только лучше станет
                              0
                              гладко было на бумаге да запутались в овраге.

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

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

                              Самое читаемое