Виявлена вразливість ParseDroid, загрозлива для Android-розробки


Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.

Група 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

Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *