Відео: Настя и сборник весёлых историй (Листопад 2024)
Цифровий підпис не зламаний
Вся суть цифрового підписання документа або файлу полягає в тому, щоб довести, що файл не був змінений. У процесі використовується форма криптографії з відкритим ключем. Ви цифрово підписуєте файл, шифруючи його своїм приватним ключем. Те, що зашифрований файл можна розшифрувати за допомогою вашого відкритого ключа, є доказом того, що не було підробок. Якби BlueBox знайшов спосіб змінити файл, не змінюючи його цифровий підпис, це було б приголомшливим ударом по всій криптовалюті. Але вони цього не зробили.
BlueBox повідомить про всі деталі своїх досліджень на конференції Black Hat через кілька тижнів. Однак дослідник ViaForensics Пау Оліва Фора опублікував доказ коду концепції, що ілюструє підхід.
По правді кажучи, це дуже і дуже просто. Файли APK запакуються за допомогою версії широко розповсюдженого алгоритму архівації ZIP. Більшість реалізацій ZIP не дозволять двох одноіменних файлів в одному архіві, але сам алгоритм не забороняє цю можливість. Перевіряючи цифровий підпис програми, ОС Android переглядає перший файл, що відповідає, але коли він фактично виконує і запускає файл, він захоплює останній . Щоб троянізувати додаток, тоді все, що вам потрібно зробити, - це ввести в нього свій шкідливий код, використовуючи ім’я, яке вже існує в додатку. Демонстрація Фори - це лише кілька десятків рядків коду Java.
Ще одна структурна атака
Китайський дослідник, що веде блог як Android Security Squad, виявив демонстрацію інтригуючою та пішов шукати інші способи підривати процес перевірки. Читання перекладу, перекладеного Google, є дещо складним, але, схоже, атака покладається на концепцію комп'ютерних наук 101 рівня.
Комп'ютерні програми зберігають підрахунок номерів у фіксованих розмірах біт. Наприклад, за допомогою восьми біт ви можете представляти числа від 0 до 255. Якщо потрібно представити негативні числа, давньою умовою є те, що крайній лівий біт вказує на від'ємне число. Тоді, маючи вісім біт, ви також можете представляти числа від -128 до 127. Двійкове число 11111111 являє собою або 255, або -1, залежно від того, призначене воно як безпідписане чи підписане число.
Android Security Squad порівнював формат заголовка файлів APK і знаходив поле даних, яке вважається позитивним зміщенням, але воно зберігається як підписане ціле число. Примушування цього поля до певного негативного значення призводить до того, що завантажувач APK виконує зловмисний код, а не вже перевірений цифровим підписом код. Гаразд, це трохи складніше, але приблизно так воно працює.
Дотримуйтесь Google Play
Жоден із цих хаків насправді не підриває механізм цифрового підпису Android. Швидше, вони обидва користуються перевагами в структурі APK, щоб зробити цифровий підпис нерелевантним. Крім того, жоден з них не дасть змозі програму-троянізові проникнути за межі аналізу Google. Google спеціально оновив Google Play, щоб відфільтрувати троянізовані програми за допомогою атаки "головного ключа"; навіть без цього кроку стандартна безпека майже напевно заблокує будь-який тип троянізованого додатка.
Урок зрозумілий. Завжди отримуйте свої програми з законних джерел, завжди переконайтеся, що ім’я розробника є дійсним, і налаштовуйте телефон так, щоб він не дозволяв встановлювати програми з "невідомих джерел". Зверніть увагу на те, які дозволи вимагає програма, і будьте готові перервати установку підозрілої на вигляд. Якщо ваш оператор пропонує оновлення Android, завжди встановлюйте його. Це просто здоровий глузд!