Уразливість Janus дозволяє зловмисникам змінювати програми, не впливаючи на їхні підписи. Це було виявлено GuardSquare і виправлено Google.
Android встановлено на величезній кількості пристроїв, що робить його мішенню для зловмисників. Щомісяця продовжують виявляти вразливості в мобільній операційній системі Google, але хороша новина полягає в тому, що Google зазвичай старанно виправляє їх у регулярних виправленнях безпеки, які потім пропонуються виробникам комплектного обладнання, які потім надсилають їх до пристроїв.
Нещодавно дослідники безпеки виявили вразливість який обманом змусив користувачів дозволити зловмисникам записувати екран їх пристрою. Цей конкретний експлойт було виправлено в Android Oreo, але аналітики Вартова площа нещодавно повідомили про іншу серйозну вразливість, яка впливає на програми Android, підписані старішими схемами підпису.
Вартова площаУ звіті зазначено, що Янусвразливість (CVE-2017-13156) в Android дозволяє зловмисникам змінювати код у програмах, не впливаючи на їхні підписи. У звіті йдеться про те, що корінь уразливості полягає в тому, що файл може бути дійсним файлом APK і дійсним файлом DEX одночасно.
Janus використовує той факт, що додаткові байти залишаються непоміченими у файлах APK і DEX. The Вартова площа У звіті пояснюється, що файл APK — це ZIP-архів, який може містити довільні байти на початку, до та між записами ZIP. Схема підпису JAR враховує лише записи ZIP, ігноруючи додаткові байти під час обчислення або перевірки підпису програми.
Далі пояснюється, що файл DEX, з іншого боку, може містити довільні байти в кінці - після звичайних розділів рядків, класів, визначень методів тощо. Таким чином, файл може бути дійсним файлом APK і дійсним файлом DEX одночасно.
Вартова площа також згадується, що ключовим елементом уразливості є «нешкідлива» функція віртуальної машини Dalvik/ART. У звіті йдеться, що теоретично середовище виконання Android завантажує файл APK, розпаковує його файл DEX, а потім запускає його код. Однак на практиці віртуальна машина (VM) може завантажувати та виконувати як файли APK, так і файли DEX. Проблема полягає в тому, що коли віртуальна машина отримує файл APK, вона все ще дивиться на магічні байти в заголовку, щоб визначити, який це файл: DEX чи APK. Знайшовши заголовок DEX, він завантажує файл як файл DEX. Якщо він не знаходить заголовок, він завантажує файл як файл APK, що містить запис zip із файлом DEX. Таким чином, він може неправильно інтерпретувати подвійні файли DEX/APK.
Вартова площа каже, що зловмисник може використати цю функцію подвійності віртуальної машини, щоб додати шкідливий файл DEX до звичайного файлу APK, не впливаючи на його підпис. Середовище виконання Android прийме файл APK як дійсне оновлення легітимної попередньої версії додатка, але віртуальна машина Dalvik завантажить код із файлу DEX, який містить шкідливий код.
Зазвичай, коли користувач встановлює оновлену версію програми, середовище виконання Android перевіряє підпис програми, щоб переконатися, що вона відповідає старішій версії. Коли перевірка позитивна, оновлена програма отримує дозволи, які були надані оригінальній програмі. Таким чином зловмисники можуть використовувати вразливість Janus, щоб обійти процес перевірки підпису та отримати неперевірений код, встановлений на пристроях користувачів, які нічого не підозрюють.
Ще гірше те, що цей неперевірений код може отримати доступ до потужних дозволів. Це створює деякі серйозні можливості. Вартова площа стверджує:
«Зловмисник може замінити надійну програму з високими привілеями (наприклад, системну програму) модифікованим оновленням, щоб зловживати його дозволами. Залежно від цільової програми це може дозволити хакеру отримати доступ до конфіденційної інформації, що зберігається на пристрої, або навіть повністю заволодіти пристроєм. Крім того, зловмисник може передати модифікований клон конфіденційної програми як легітимне оновлення, [яке] може виглядати та поводитися як оригінальна програма, але впроваджувати зловмисну поведінку».
У компанії додали, що на даний момент вони не бачили жодних програм, які б використовували Janus у дикій природі. Інша хороша новина полягає в тому, що вразливість вимагає від користувача встановлення шкідливого оновлення з джерела за межами Google Play Store. Таким чином, користувачі, які обмежують встановлення програм Play Store, захищені.
Уразливість Janus впливає на пристрої з ОС Android 5.0+. Це впливає на програми, які були підписані за допомогою схеми підпису APK v1. Файли APK, підписані схемою підпису v2, захищені від уразливості. Для цього потрібно, щоб файли APK працювали на пристроях, які підтримують останню схему підпису (Android 7.0 і новіші версії). Схема v2 захищена, оскільки на відміну від схеми v1, вона враховує всі байти у файлі APK.
«Старіші версії програм і новіші програми, що працюють на старих пристроях, залишаються вразливими. Розробники повинні принаймні завжди застосовувати схему підпису версії 2", Вартова площа держави.
Вартова площа повідомили про цю проблему в Google 31 липня 2017 року та отримали підтвердження того ж дня. У звіті компанії йдеться, що Google випустив патч для своїх партнерів у листопаді та опублікував помилку (CVE-2017-13156) у бюлетені безпеки Android 4 грудня 2017 року. Вразливість є було виправлено в патчі безпеки Android від грудня 2017 року. Окремо було підтверджено, що програми F-Droid з їхнього офіційного репозиторію безпечні. Нарешті, було підтверджено, що вразливість виправлено APKMirror.
Джерело: GuardSquare