СТАТИЧНИЙ АНАЛІЗ ЗАСТУСУНКУ В ОПЕРАЦІЙНІЙ СИСТЕМІ ANDROID
11.05.2022 01:45
[1. Інформаційні системи і технології]
Автор: Кравчук Олександр Віталійович, студент магістратури, кафедра СПіСКС НТУУ, «Київський політехнічний інститут імені Ігоря Сікорського»
Статичний аналіз є загальноприйнятою технікою аналізу програм, що широко використовується в галузі безпеки програмного забезпечення. Статичний аналіз програми, як правило, є основою автоматизованого інструменту, який бере в якості вхідних даних вихідний код програми, досліджує цей код, не виконуючи його, і презентує результати, перевіряючи структуру коду, послідовності операторів і те, як значення змінних обробляються під час викликів різних функцій [1].
Першим кроком статичного аналізу є підготовка даних. Застосунок для операційної системи Android складається з маніфесту, вихідного коду та файлів ресурсів. Все вище перелічене представляється скомпільованим APK файлом застосунку. Для видобування необхідних даних використовується процес зворотної інженерії, який дає змогу отримати код і двійковий файл маніфесту заданого APK файлу та додатково вивчає структуру і сутність програми [2].
Наразі існує багато підходів до статичного аналізу, котрі були запропоновані для вирішення конкретних задач, таких як: оцінка безпеки застосунків Android, виявлення клонів додатків, автоматизація генерації тестових випадків та виявлення нефункціональних проблем, пов’язаних з продуктивністю чи енергією.
Типовий процес статичного аналізу виконується шляхом проходження двох етапів: аналізу файлу маніфесту та сканування вихідного коду.
Аналіз файлів маніфесту. Маніфест — це файл формату XML, який описує всю інформацію про компоненти програми. Даний етап аналізу має на меті сканування вищезгаданого файлу на наявність вразливих атрибутів. У наведеному нижче списку показано основні атрибути та ситуації, при яких вони знаходяться в небезпеці:
– Атрибут резервного копіювання. Вважається вразливим, якщо його значення встановлено. Резервне копіювання виконується шляхом копіювання даних програми (наприклад, бази даних та файлів) на SD-карту. Інформація про програму на картці SD менш захищена, ніж у пам’яті мобільного телефону. Ступінь вразливості даного атрибуту оцінюється як низький, оскільки створена резервна копія може не містити конфіденційну інформацію.
– Атрибут налагодження. Вважається вразливим, якщо його значення встановлено. Режим налагодження використовується для того, щоб мати можливість реєструвати важливі події та дані. Ступінь вразливості ввімкнення режиму налагодження оцінюється як високий, оскільки під час роботи програми в режимі налагодження може бути виявлено багато конфіденційної інформації.
– Експортовані компоненти (активності та сервіси) вважаються вразливими за самим фактом їх існування, так як їх зміст не контролюється. Ступінь уразливості експортованих компонентів оцінюється як низький, оскільки вхідні точки можуть бути захищені, а компоненти можуть бути експортовані навмисно [3].
Сканування вихідного коду. Попередньо підготовлений код програми представляється в певних абстрактних моделях (наприклад, графік викликів, графік потоку керування або діаграма класів/послідовностей UML) на основі цілей аналізу. Ці абстрактні моделі фактично забезпечують спрощений інтерфейс для підтримки клієнтського аналізу верхнього рівня.
Найпростіша форма аналізу може здійснювати пошук конкретних маркерів у коді; наприклад, оскільки доступ до конфіденційної функціональності в Android здійснюється через виклики API фреймворку, можна шукати в коді програми інструкції виклику набору відомих методів фреймворку. Однак, даний підхід не враховує код, який підключається до програми з інших бібліотек, але фактично не є частиною виконання програми, що може призвести до помилкового результату аналізу.
У зв’язку з цим існують покращені методи статичного аналізу коду, а саме:
– аналіз потоку управління [4];
– аналіз потоків даних [5];
– точковий аналіз [1];
– алгоритми Call-Graph (CG).
Для прикладу, аналіз потоку управління усуває проблему незадіяного коду. Даний метод вимагає визначення точки входу, з якої слід розпочати аналіз потоку. Всі типи подій Android (життєвий цикл, одержувач, зворотний виклик, інтерфейс користувача) вважаються точками входу, якщо вони зареєстровані у програмі в будь-який момент її виконання. На основі визначених точок входу генерується внутрішньопроцедурний графік потоку управління, котрий містить лише код, що використовується у програмі. Даний підхід значно збільшує швидкість та якість проведення статичного аналізу застосунку [6].
Дослідження щодо статичного аналізу програм Android швидко розвиваються, створюючи все більш просунуті підходи для статичного виявлення проблем безпеки в коді програми.
За допомогою статичного аналізу можна виявити багато вразливостей, таких як: витік приватних даних, несанкціонований доступ до захищених або приватних ресурсів, ін’єкція зловмисного коду. Статичний аналіз також використовується для виявлення неправомірного використання дозволів, надмірного споживання енергії, виявлення клонів застосунків і створення тестів. Нарешті, він вимагає менше апаратних ресурсів у порівнянні з динамічним аналізом. Все вище перелічене робить даний підхід важливим інструментом у сфері захисту інформації.
Література
1. Li Lia, Tegawende F. Bissyand, Mike Papadakisa, Siegfried Rasthoferb, Alexandre Bartela, Damien Octeauc, Jacques Kleina, Yves Le Traon, Static Analysis of Android Apps: A Systematic Literature. “Information and Software Technology”, 2017, 88, pp. 67-95
2. Aafer Y, Du W, Yin H. DroidAPIMiner: mining API-Level Features for Robust Malware Detection in Android. In: Security and privacy in communication networks. Sydney, NSW, Australia: SecureComm, 2013, pp. 86–103
3. Amr Amin, Amgad Eldessouki, Menna Tullah Magdy, Nouran Abdeen, Hanan Hindy, Islam Hegazy AndroShield: Automated Android Applications Vulnerability Detection, a Hybrid Static and Dynamic Analysis Approach. “Information” (Switzerland), 2019, pp. 2-3
4. Wang, X.; Zhu, S.; Zhou, D.; Yang, Y. Droid-AntiRM: Taming Control Flow Anti-analysis to Support Automated Dynamic Analysis of Android Malware. In Proceedings of the 33rd Annual Computer Security Applications Conference, Orlando, FL, USA, 2017; pp. 350–361.
5. Wei, F.; Roy, S.; Ou, X. Amandroid: A precise and general inter-component data flow analysis framework for security vetting of Android apps. ACM Trans. Priv. Secur. (TOPS) 2018, 21, p.14.
6. Michelle Yan Yi Wong Targeted security analysis of android applications with hybrid program analysis. University of Toronto, 2021, pp. 9-10.
__________________
Науковий керівник: Терейковський Ігор Анатолійович, доктор технічних наук, професор кафедри системного програмування і спеціалізованих комп’ютерних систем факультету прикладної математики Національного технічного університету України «КПІ ім. І.Сікорського»