Следующая новость
Предыдущая новость

Забытые андроиды. Самые опасные уязвимости в старых версиях Android

07.02.2019 13:22
Забытые андроиды. Самые опасные уязвимости в старых версиях Android

Содержание статьи

  • Самая первая уязвимость Android
  • BlueBorne
  • Extra Field
  • Fake ID
  • Janus
  • ObjectInputStream Serialization
  • OpenSSLX509Certificate
  • PendingIntent
  • StageFright
  • StageFright 2.0
  • SIM Toolkit
  • ToastOverlay
  • Cloak and Dagger
  • Выводы

Как известно, операционные системы разрабатываются людьми. Кое-кто, впрочем, уверен, что Android создали рептилоиды, однако это не так: в мобильной платформе Google на сегодняшний день обнаружено множество ошибок, допустить которые могли только представители вида homo sapiens. Некоторые из этих багов представляют собой полноценные уязвимости и могут использоваться как для несанкционированного доступа к файловой системе смартфона, так и для распространения вредоносного ПО.

Если верить официальной статистике Google, на сегодняшний день среди версий Android наиболее распространена Nougat — редакция мобильной платформы за номером 7.0 и 7.1 установлена в совокупности на 28,2% устройств. Вторую позицию уверенно занимает Android 8.0 и 8.1 Oreo с показателем 21,5%. На третьем месте закрепилась шестая версия Marshmallow — она работает на 21,3% девайсов. Android 5.0 и 5.1 Lollipop установлены суммарно на 17,9% устройств, а замыкает группу лидеров Android 4.4 KitKat с показателем 7,6% пользователей.

Согласно информации с сайта cvedetails.com, на сегодняшний день в Android насчитывается 2146 уязвимостей, при этом число выявленных багов начало экспоненциально расти примерно с 2014 года.

Забытые андроиды. Самые опасные уязвимости в старых версиях Android

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

Самая первая уязвимость Android

Самая первая уязвимость Android была обнаружена еще в октябре 2008 года в прошивке коммуникатора HTC T-Mobile G1. При просмотре веб-страниц с определенным содержимым ошибка в ПО позволяла выполнить вредоносный код, отслеживающий использование клавиатуры гаджета. Теоретически таким образом можно было реализовать кейлоггер, фиксирующий нажатия кнопок, и собирать вводимую пользователем при веб-серфинге информацию. Эта уязвимость представляла опасность только для одной-единственной модели коммуникатора, но само ее наличие наглядно показало: Android — не настолько безопасная и защищенная система, как считалось ранее.

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

Самым «дырявым» оказалось четвертое поколение Android, начиная с версии 4.4 KitKat. С него, пожалуй, и начнем наш обзор уязвимостей, выявленных в разное время в этой платформе.

BlueBorne

CVE: CVE-2017-1000251, CVE-2017-1000250, CVE-2017-0781, CVE-2017-0782, CVE-2017-0785 и CVE-2017-0783
Уязвимые версии Android: 4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0
Для эксплуатации требуется: атакующий должен находиться на расстоянии не более десяти метров от уязвимого устройства, а на уязвимом устройстве должен быть включен Bluetooth
Возможный результат: выполнение произвольного кода с привилегиями ядра системы, утечка данных

Это не отдельная уязвимость, а целый набор ошибок в стеке Bluetooth современных операционных систем, среди которых числится и Android. Серьезные баги содержатся в коде системной функции l2cap_parse_conf_rsp ядра Linux, причем их можно обнаружить во всех версиях ядра, начиная с 3.3. Если в системе включена защита от переполнения стека CONFIG_CC_STACKPROTECTOR, их использование приводит к возникновению критической ошибки в работе ядра.

Уязвимость CVE-2017-1000251 выявлена в модуле ядра под названием L2CAP, который отвечает за работу стека протокола Bluetooth. Еще одна уязвимость в стеке этого протокола получила обозначение CVE-2017-0783. Если на атакуемом девайсе включена подсистема Bluetooth, с их помощью можно удаленно передать на него специальным образом сформированные пакеты информации. Такие пакеты могут содержать вредоносный код, который выполнится в Android с привилегиями ядра системы. При этом для реализации атаки не потребуется предварительно сопрягать устройства или включать на них режим обнаружения. Достаточно, чтобы атакующий находился на расстоянии не более десяти метров от уязвимого устройства.

Поскольку взаимодействующие с протоколом Bluetooth компоненты ОС по умолчанию имеют высокие системные привилегии, эксплуатация этих уязвимостей теоретически позволяет получить полный контроль над атакуемым смартфоном и планшетом, включая доступ к хранящимся на устройстве данным, подключенным сетям и файловой системе. Также с помощью BlueBorne технически можно реализовывать атаки типа man-in-the-middle.

К BlueBorne также относят уязвимость CVE-2017-1000250 в стеке BlueZ Linux-реализации протокола Service Discovery Protocol (SDP). Эксплуатация уязвимости CVE-2017-1000250 может привести к утечке данных. Уязвимости CVE-2017-0781, CVE-2017-0782 и CVE-2017-0785 относятся к самой ОС Android, при этом с помощью первых двух вредоносное приложение может получить в системе привилегии ядра, а последняя позволяет реализовать утечку данных.

Для устранения уязвимостей BlueBorne 9 сентября 2017 года компания Google выпустила обновление безопасности. Также они не страшны устройствам, на которых используется режим Bluetooth Low Energy.

Extra Field

CVE: нет
Уязвимые версии Android: 2.3, 4.0, 4.1, 4.2, 4.3, 4.4
Для эксплуатации требуется: модифицированное приложение
Возможный результат: выполнение произвольного кода

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

Внутри архива .APK располагается файл classes.dex, в котором содержится скомпилированный код приложения и набор служебных полей. Среди них есть:

  • поле, хранящее имя файла с расширением;
  • размер файла;
  • поле Extra Field, в котором записан сам исполняемый код;
  • таблица со списком используемых им классов.

Если в поле заголовка записать исходное значение без первых трех байт, значение длины поля Extra Field также изменится, благодаря чему появляется возможность дописать туда произвольный код, например перечислить классы, используемые троянской частью приложения. После этого можно добавить в архив, помимо оригинального classes.dex, его вредоносную копию, часть кода которой будет храниться в «расширенном» поле Extra Field оригинального classes.dex. При установке программы система прочитает содержимое видоизмененных полей, и, поскольку в них перечислены классы из модифицированного classes.dex, на устройство будет установлен именно этот файл.

Таким образом, уязвимость позволяет «подсадить» троянца в любое легитимное приложение с валидной цифровой подписью, разве что размер вредоносного модуля будет ограничен максимальным размером файла classes.dex в 65 533 байт. Уязвимость была обнаружена в начале июля 2013 года и была устранена в версиях Android, выпущенных позже этой даты.

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

Материалы из последних выпусков можно покупать отдельно только через два месяца после публикации. Чтобы продолжить чтение, необходимо купить подписку.

Подпишись на «Хакер» по выгодной цене!

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

1 год

7190 р.

Экономия 1400 рублей!

1 месяц

720 р.

25-30 статей в месяц

Уже подписан?

Источник

Последние новости