Обнаружена уязвимость ParseDroid, угрожающая Android-разработчикам
Новости
Проблема ParseDroid затрагивает библиотеку XML, которая в процессе парсинга не отключает отсылки к внешним источникам. Данная уязвимость была найдена в таких программных продуктах, как APKTool, IntelliJ IDEA, Eclipse и Android Studio.
931 открытий941 показов
Группа Check Point выявила несколько слабых мест в наиболее распространенных IDE для Android-разработки: Android Studio, IntelliJ IDEA и Eclipse. Кроме того, уязвимость затронула основные инструменты для реверс-инжиниринга Android-приложений, такие как APKTool и Cuckoo-Droid. Причем проблема касается как десктопных, так и облачных версий ПО. Список уязвимостей получил кодовое название ParseDroid.
Одним из вариантов атаки ParseDroid может быть эксплуатация классической XXE-уязвимости (XML External Entity) при использовании инструмента APKTool. Это становится возможным из-за того, что XML-парсер APKTool не отключает ссылки на внешние источники. В результате это обеспечивает доступ к файловой системе жертвы и злоумышленник может украсть любой файл или удаленно запустить исполнение вредоносного кода.
Другой способ получить доступ к файловой системе ОС жертвы состоит в создании зараженной AAR (Android Archive Library), содержащей XXE, и выкладывании ее в открытый доступ. После того, как зараженная AAR будет загружена, злоумышленник получит доступ к компьютеру жертвы.
Указанное ПО используется практически каждой организацией, которая занимается разработкой на Java для Android, поэтому в зону риска попало множество компаний. В начале этого года WikiLeaks выложила в открытый доступ серию документов под кодовым названием Vault 7. В опубликованных данных сообщалось, что ЦРУ и АНБ эксплуатируют уязвимости в продуктах производителей ПО по всему миру. Также большой резонанс получили сообщения, что ЦРУ через через CCleaner и Notepad++ распространяло вредоносные программы с целью получения информации о пользователях и организациях.
Check Point еще в мае 2017 года сообщила об угрозе разработчикам APKTool и другим компаниям, выпускающим IDE. Google и JetBrains проверили информацию и подтвердили проблемы безопасности. Эти компании уже выпустили исправления для своих систем.
Технические детали — от XXE уязвимости к RCE
APKTool — популярный инструмент для для реверс-инжиниринга Android-приложений.
Двумя основными возможностями APKTool являются:
- Декомпиляция файла APK.
- Сборка файла APK.
CheckPoint обнаружили, что APKTool уязвим в обеих функциях.
В APKTool идентифицирована уязвимость XML External Entity (XXE), так как XML-парсер APKTool не отключает ссылки на внешние источники.
Эта функция называется loadDocument
, и она используется в обеих основных функциях APKTool — «Build» и «Decompile».
Таким образом, вся файловая система ОС пользователя APKTool становится открыта. В результате этого злоумышленники могут извлечь любой файл с компьютера жертвы, используя вредоносную версию файла AndroidManifest.xml, а затем передать его на удаленный сервер злоумышленника. И этот сценарий атаки является лишь одним из возможных способов атаки XXE.
Уязвимости в инструментах разработчика
Как было сказано ранее, в ходе анализа выяснилось, что такие IDE, как Intellij, Eclipse и Android Studio, имеют данную проблему безопасности.
Чтобы продемонстрировать эту уязвимость, команда Check Point загрузила библиотеку вредоносных проектов на GitHub и клонировала ее в проект Android Studio.
Пример вредоносного GitHub проекта с XXE:
Клон в Android Studio:
Результат: атака достигла цели, защищенный файл был украден и отправлен на сервер злоумышленника без ведома пользователя.
Кроме того, был обнаружен еще один сценарий, с помощью которого можно атаковать огромное количество разработчиков Android. Метод заключается во внедрении вредоносной AAR (Android Archive Library), содержащей XXE в репозитории.
Например, можно загрузить зараженную AAR в общедоступный репозиторий, откуда его скачает жертва. Это позволяет злоумышленнику украсть конфиденциальные файлы, такие как файлы конфигурации, исходный код, электронную собственность фирмы и многое другое из файловой системы ОС.
В примере от Check Point была использована загрузка вредоносного AAR в локальный репозиторий:
Добавление AAR в Android Studio Project:
Результат: атака была выполнена успешно, защищенные файлы были украдены и переданы на сервер злоумышленника, без ведома пользователя:
Кроме того, в APKTool была обнаружена еще одна уязвимость, которая позволяет выполнять команды операционной системы на компьютере жертвы. Для расширенного использования APKTool существует файл конфигурации с именем «APKTOOL.YML». Этот файл содержит раздел под названием «unknownFiles», который позволяет пользователям включать нестандартное расположение файлов, которое будет правильно размещено в процессе ребилда APK. Выбранные файлы сохраняются в файловой системе в папке «Unknown».
Допустимая файловая структура APKTOOL.YML выглядит следующим образом:
Если изменить путь раздела «unknownFiles» внутри файла «APKTOOL.YML», то можно подбросить любые файлы в файловую систему (атака Path Traversal). Это связано с тем, что APKTool не проверяет пути неизвестных файлов, которые извлекаются из архива APK.
Вброс произвольных файлов в любое место файловой системы приводит к полному удаленному исполнению кода (RCE). Это означает, что любой пользователь APKTool или служба, которая будет пытаться декодировать вредоносный APK, уязвима для RCE.
Check Point создала веб-приложение, подобное официальному онлайн-декодеру APK для симуляции возможной атаки:
APKTool извлекает вредоносный файл в папку wwwroot сервера (в данном случае была использована веб-оболочка PHP):
Результат сборки: APK с вредоносным файлом по неправильному пути:
Загрузка APK на демонстрационный сайт позволяет злоумышленнику выполнять команды ОС на сервере веб-приложений. Таким образом, эта атака может быть проведена в отношении любой онлайн или оффлайн службы, которая декодирует APK с помощью APKTool.
Это один из многих возможных методов атаки для выполнения RCE.
Все описанные выше методы атак являются кросс-платформенными и универсальными. Поскольку APKTool предназначен для работы с несколькими операционными системами, злоумышленник может выполнить вредоносный код в любой уязвимой системе.
931 открытий941 показов