Несколько месяцев назад Олег Афонин из «Элкомсофта» написал большую статью о том, насколько хорошо защищены смартфоны на разных мобильных платформах. Особенно эпичной получилась заключительная часть про Android, где он разнес систему в пух и прах и назвал самой дырявой из всей большой тройки (iOS, Windows Phone/Mobile, Android).
Мы долго дискутировали на эту тему и в конце концов сошлись во мнении, что стоит добавить в статью мою врезку, с альтернативным взглядом на проблему. В двух словах суть врезки: Олег, как специалист по мобильной криминалистике, лучше других знает, что взломать среднестатистический смартфон на Android гораздо проще, чем iPhone. Я же попытался сказать, что проблема в большей степени не в самом Android, а в устройствах, на нем работающих. И многое зависит от того, какой конкретно смартфон ты используешь.
Как и Олег, я убежден, что iPhone гораздо безопаснее смартфонов на Android. Это очевидный факт, который проистекает из того, что Apple полностью контролирует экосистему своих устройств: свое железо, свой единственный App Store, быстрые апдейты напрямую от разработчиков iOS, в ОС никто не вносит правок, кроме самой Apple. Компания не только развивает iOS, но и управляет всем вокруг нее, включая сами устройства.
Однако если посмотреть немножко под другим углом и сравнить не устройства, не экосистему, не весь этот пласт сервисов и технологий, созданных вокруг iOS и Android, — если отбросить все это и сравнить Android и iOS как отдельно взятые ОС, то картина становится далеко не такой однозначной.
Для начала небольшая табличка:
- iPhone OS 1.0 — взломана спустя 11 дней;
- iPhone OS 2.0 — взломана спустя 35 дней;
- iPhone OS 3.0 — взломана спустя 2 дня;
- iOS 4.0 — взломана спустя 2 дня;
- iOS 5.0 — взломана спустя 1 день;
- iOS 6.0 — взломана в тот же день;
- iOS 7.0 — взломана спустя 95 дней;
- iOS 7.1 — взломана спустя 25 дней;
- iOS 8.0 — взломана спустя 35 дней;
- iOS 8.1.1 — взломана спустя 12 дней;
- iOS 9.0 — взломана спустя 28 дней;
- iOS 9.1 — взломана спустя 142 дня;
- iOS 10 — взломана спустя 106 дней.
Она показывает, сколько дней прошло между релизом новой версии iOS и первым джейлбрейком. В контексте обсуждения безопасности это очень важная таблица, потому что технически джейлбрейк — это не что иное, как получение прав root. А права root, в свою очередь, дают полный контроль над устройством, и получить их можно только одним путем — обойдя защитные механизмы ОС.
Ты можешь сказать, что Android тоже рутят все кому не лень, и будешь прав. Однако здесь есть множество нюансов, включая такие факторы, как частая возможность получить root «легально» (разблокировав загрузчик), существование огромного количества устройств на процессорах MTK, в которых загрузчик в принципе не заблокирован, а также дыры, которые не относятся напрямую к Android и появились благодаря криворукости компании-производителя.
В общем, сходную таблицу для Android составить практически невозможно, но мы можем сравнить iOS и Android, используя немного другие данные. Взгляни:
- Android — 1308 уязвимостей.
- iOS — 1275 уязвимостей.
Это количество всех когда-либо найденных уязвимостей в iOS и Android по данным cvedetails.com. Android занимает первое место, iOS немного отстает. Уже только этой информации достаточно, чтобы развеять миф о том, что Android — решето решетом, а iOS — неприступная крепость. Но мы пойдем немного дальше и взглянем на сами уязвимости.
На момент написания статьи последние три уязвимости Android были такими:
- The lockscreen on Elephone P9000 devices (running Android 6.0) allows physically proximate attackers to bypass a wrong-PIN lockout feature by pressing backspace after each PIN guess.
- In all Qualcomm products with Android releases from CAF using the Linux kernel, a race condition in a WLAN driver can lead to a Use After Free condition.
- In all Qualcomm products with Android releases from CAF using the Linux kernel, a race condition in a USB driver can lead to a Use After Free condition.
Один баг в реализации экрана блокировки в дешевом китайском куске пластика под названием Elephone P9000 и две уязвимости в фирменных драйверах Qualcomm, автор которых — сама Qualcomm и которые имеют такое же отношение к Android, какое драйвер для видеокарты Nvidia имеет к Windows.
Ок, вполне возможно, это случайность и просто стечение обстоятельств. Сделаем выборку из 100 последних уязвимостей:
- 29 — драйверы Qualcomm;
- 28 — уязвимости Android;
- 20 — ядро CAF, развиваемое Qualcomm;
- 9 — драйверы Mediatek;
- 7 — драйверы Broadcom;
- 4 — уязвимости в прошивках производителей;
- 3 — драйверы Nvidia.
Итого: почти половина уязвимостей найдена в драйверах (и фирменном ядре) Qualcomm, меньше трети — в коде самого Android. Та же выборка для iOS:
- 99 — уязвимости iOS;
- 1 — драйвер Qualcomm.
Ты, конечно же, можешь возразить, что мой анализ слишком примитивен, я взял весь срез уязвимостей, включив в него DoS, уязвимости с низким рейтингом и тому подобное. Но давай посмотрим правде в глаза. Я привел статистику на основе 100 уязвимостей, это 8% из всех зарегистрированных за все время существования ОС багов. Если это нерепрезентативная выборка, то я не знаю, какая будет репрезентативной.
А теперь взглянем на самые известные и страшные баги, о которых не так давно трубили на каждом углу. Вот неполный список для iOS:
- CVE-2009-2204 (до 3.0.1) — просмотр вредоносного сообщения SMS может привести к неожиданному сбою устройства или выполнению произвольного кода;
- CVE-2010-3832 (до 4.2) — удаленное исполнение кода в процессоре GSM-модема;
- CVE-2012-0672 (до 5.1.1) — удаленное исполнение кода с помощью специальным образом сформированной web-страницы;
- CVE-2016-4631 (до 9.3.3) — удаленное исполнение кода с помощью показа изображения в формате TIFF на веб-странице, в письме, сообщении и подобном;
- Trident (до 9.3.5) — пользователь кликает по ссылке, после чего троян делает джейлбрейк и размещается в системе;
- Broadpwn (до 10.3.3) — удаленное исполнение кода через отправку особым образом сформированных Wi-Fi-фреймов (этот же баг присутствует в смартфонах на Android).
Для Android можно привести такой же список, и более чем наполовину он будет состоять из найденных в 2015–2016 годах багов Stagefright. Разница только в том, что о багах iOS быстро забывают, они просто перестают быть актуальными из-за обновления всех устройств до новой версии ОС. А вот о багах Android помнят долго, ведь уязвимости даже двух- и трехлетней давности остаются актуальными для миллионов устройств.
Если говорить об уязвимостях, iOS определенно не самая защищенная ОС, а Android не самая дырявая. А вот среднестатистический смартфон на Android — это решето. Все эти модификации, добавленные производителем, баги в фирменных загрузчиках, вечные проблемы с обновлениями — все это сводит на нет старания Google сделать Android безопаснее.
Поэтому, если ты выбираешь смартфон на Android, следуй нескольким советам.
- Лучший выбор — это Nexus, Pixel и смартфоны Android One. Они работают под управлением «чистого» Android и получают оперативные обновления в течение трех лет (два года обычных обновлений и один год обновлений безопасности).
- Если лучший выбор невозможен, посмотри в сторону смартфона, для которого есть официальная поддержка LineageOS, в первую очередь это Samsung и OnePlus. Если производитель перестанет обновлять устройство, у тебя всегда будет возможность перейти на LineageOS и продолжать получать обновления.
- Не надейся, что твой китайский смартфон на процессоре MTK будет сложно взломать. Человек с самой начальной подготовкой сольет с него данные на счет раз.
Если же твой выбор — iPhone, то у тебя вообще никаких проблем. Сколько бы багов ни было найдено в iOS, Apple закроет их в течение двух недель.