Обнаружена уязвимость ParseDroid, угрожающая Android-разработчикам

Проблема ParseDroid затрагивает библиотеку XML, которая в процессе парсинга не отключает отсылки к внешним источникам. Данная уязвимость была найдена в таких программных продуктах, как APKTool, IntelliJ IDEA, Eclipse и Android Studio.
ParseDroid

Группа 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 являются:

  1. Декомпиляция файла APK.
  2. Сборка файла 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 предназначен для работы с несколькими операционными системами, злоумышленник может выполнить вредоносный код в любой уязвимой системе.

Источник: блог Check Point Research

Ещё интересное для вас:
— Тест «Насколько хорошо вы разбираетесь в C#?»
— Блиц-тест «Настоящий ли ты фронтендер?»
— Меньше готовить, больше кодить: обзор питания с доставкой на дом.