Додаток, що налагоджується

При створенні програми відладчик - найкращий друг розробника, він дозволяє рядковим чином перевіряти код програми під час його виконання, що допомагає виявляти основні причини помилок і виправляти їх. Однак надсилання вашої програми з увімкненим прапором налагодження становить загрозу безпеці для вашої програми; це може дозволити зловмиснику отримати доступ до конфіденційної інформації, контролювати потік програми та отримати виконання коду в контексті налагодженої програми.

Дозволити резервне копіювання

Дозвіл резервного копіювання програми може також призвести до ситуацій, у яких зловмисник, який має доступ до пристрою, може впровадити код. Як тільки зловмисник може отримати резервну копію програми, заголовок резервної копії відокремлюється від вмісту (коду та ресурсів), вміст потім модифікується шляхом введення коду або зміни значень ресурсів, потім додається змінений вміст до незміненого заголовка і вставте назад у пристрій.

Висновок

Згідно з OWASP Mobile Top 10, неправильне використання платформи є основним ризиком, що впливає на мобільні програми у світі. Це має сенс у тому сенсі, що розробники переважно зацікавлені в тому, щоб змусити програму працювати, і іноді неправильно використовують функції платформи або упускають спеціальні засоби управління безпекою, які можуть легко знизити ці ризики. Таким чином, поінформованість розробників безпеки є одним з найбільш ефективних компонентів у створенні захищеного програмного забезпечення.

Через неправильне використання платформи можуть виникнути такі вектори вразливостей:

- Poor Web Services Hardening

- Insecure web server configurations

- Injection (SQL, XSS, Command) на веб-послугах і мобільних мережах.

- Authentication flaws - Session Management flaws

- Access control vulnerabilities

- Local and Remote File Includes

Як захиститися:

У цій категорії важко дати правильну пораду, тому що дуже багато є векторів від цієї категорії вразливості, але овасп тут рекомендує ось таке:

Безпечні методи кодування та налаштування повинні використовуватися на стороні сервера мобільної програми. За інформацією про вразливість звертайтеся до проектів OWASP Web Top Ten або Cloud Top Ten.

M1-Improper platform usage

Це перша вразливість зі списку OWASP TOP 10, що ховаються у мобільних додатках. Статейка присвячена першій категорії списку, M1-Improper platform usage, на нашому (Неправильне використання платформи).

Неправильне використання платформи в основному охоплює зловживання функціями платформи або невикористання засобів управління безпекою платформи, наданих та задокументованих платформою та її спільнотою. Наприклад, у додатках на Android завжди є файл AndroidManifest.xml, який є хорошим носієм інформації про конфігурацію програми і про те, як додаток повинен поводитися. Цей файл дійсно потрібний для перевірки помилок конфігурації. Тут ми будемо використовувати проект InsecureBankv2 - це спеціальний вразливий додаток Android, призначений для практики на безпеку, щоб дізнатися про вразливість в Android. Спочатку ми завантажуємо проект InsecureBankv2, але перш ніж запустити емулятор і встановити програму, давайте зосередимося на доступі до файлу AndroidManifest.xml і подивимося, що у нас є. Для цього ми використовуватимемо apktool, інструмент, призначений для зворотного проектування Android apks. У інструмента є кілька опцій, але ми зосередимося на опції декодування, яка витягує і декодує ресурси apk, інструмент створює файл AndroidManifest.xml, що читається, і код smali для вихідного коду програми :

У попередній команді ми встановили опцію -d для декода програми та опцію -o, щоб вказати каталог, до якого ми хочемо надіслати результати. Тепер перейдемо в папку та побачимо, що інструмент згенерував AndroidManifest.xml, а також папки resources та smali, а зараз ми зосередимося на маніфесті. До речі ці всі дії з декодування та вилучення першоджерел коду програми, відносяться до дев'ятої категорії вразливості OWASP TOP 10 mobile та має назву M9 Reverse Engineering

Відкривши AndroidManifest.xml, почнемо досліджувати його вміст, у цьому випадку ми будемо використовувати текстовий редактор nano в такий спосіб. За допомогою команди nano AndroidManifest.xml ми відкриємо цей файл:

Небезпечні компоненти

Одна з перших речей, яку ви повинні перевірити в цьому конфігураційному файлі - це вміст всередині тега , тут ви знайдете компоненти, визначені для цього додатка, компоненти - це дії, приймачі широкомовлення, постачальники контенту або сервіси, кожен з яких зі своїми власними функціональними можливостями та характеристиками. Загалом, якщо ви бачите кілька компонентів із встановленим прапором true, це, швидше за все, є ознакою неправильної конфігурації та неправильного використання платформи.

Кожен компонент повинен бути розглянутий та проаналізований, щоб зрозуміти, для чого він використовується та якою інформацією вони можуть ділитися з іншими компонентами. Одним з дуже корисних інструментів, який допоможе у цьому питанні, є середовище drozer, яке дозволяє вам шукати вразливості в системі безпеки на базі Android. Ви можете знайти приклад роботи з ним у моїй статті за четвертою вразливістю, в якій ми шукали обхід авторизації.

За допомогою інструмента Jadx, ми можемо дізнатися вихідний код нашої програми apk. Цей метод декомпілювання теж відноситься до реверс інженерії, тобто до 9-ої категорії оваспа. У цьому прикладі будемо користуватися програмою DIVA. Виконавши команду:

d2j-dex2jar classes.dex

Ми отримаємо вид коду цього додатка в первинному вигляді, а потім, щоб відкрити цей файл у редакторі для аналізу, виконаємо таку команду:

jd-gui classes-dex2jar.jar

А тепер давайте розглянемо один із випадків даної категорії вразливості під назвою Insecure Logging.

Цей вектор атаки можна зробити, якщо розробник використовував функцію Logcat, в режимі дебаг, для тестування роботи програми. Для нагнітання ситуації візьмемо приклад функціонал введення даних кредитної картки. Потім забув прибрати з коду її, задеплоївши на продакшен білд разом із отриманням логів цієї функції. У результаті який би не був пристойний програміст, у нього буде доступ до карткових даних ваших користувачів, так як він бачитиме в логах ці дані, а уявіть, якщо до цих логів буде доступ не тільки у цього програміста... Подивимося приклад на відео нижче...

А вся проблема такої вразливості криється, у цьому...