Janus Exploit позволява на нападателите да променят приложения, без да засягат подписите

click fraud protection

Уязвимостта на Janus позволява на атакуващите да променят приложения, без да засягат подписите им. Открит е от GuardSquare и е коригиран от Google.

Android е инсталиран на огромен брой устройства и това го прави мишена за злонамерени нападатели. Уязвимости в мобилната операционна система на Google продължават да се откриват всеки месец, но добрата новина е, че Google обикновено се старае да ги коригира в редовни корекции за сигурност, които след това се предлагат на OEM производителите, които след това го изпращат до устройства.

Наскоро изследователи по сигурността откриха уязвимост което подмами потребителите да позволят на нападателите да запишат екрана на устройството им. Този конкретен експлойт беше коригиран в Android Oreo, но анализаторите при GuardSquare наскоро съобщиха за друга сериозна уязвимост, която засяга приложения за Android, подписани от по-стари схеми за подписване.

GuardSquareВ доклада се посочва, че Янусуязвимост (CVE-2017-13156) в Android позволява на атакуващите да променят кода в приложенията, без да засягат техните подписи. Докладът продължава да казва, че коренът на уязвимостта е, че един файл може да бъде валиден APK файл и валиден DEX файл едновременно.

Janus се възползва от факта, че допълнителните байтове остават незабелязани в APK файлове и DEX файлове. The GuardSquare докладът обяснява, че APK файлът е ZIP архив, който може да съдържа произволни байтове в началото, преди и между своите ZIP записи. Схемата за подпис на JAR взема предвид само ZIP записите, като игнорира всички допълнителни байтове при изчисляване или проверка на подписа на приложението.

По-нататък се обяснява, че DEX файл, от друга страна, може да съдържа произволни байтове в края - след редовните секции на низове, класове, дефиниции на методи и т.н. Следователно един файл може да бъде валиден APK файл и валиден DEX файл едновременно.

GuardSquare също така споменава, че ключов елемент от уязвимостта е "безобидна" функция на виртуалната машина Dalvik/ART. В доклада се посочва, че на теория средата за изпълнение на Android зарежда APK файла, извлича неговия DEX файл и след това изпълнява неговия код. На практика обаче виртуалната машина (VM) може да зарежда и изпълнява както APK файлове, така и DEX файлове. Проблемът е, че когато виртуалната машина получи APK файл, тя все още разглежда магическите байтове в заглавката, за да реши кой тип файл е: DEX или APK. При намиране на DEX заглавка, той зарежда файла като DEX файл. Ако не намери заглавка, зарежда файла като APK файл, съдържащ zip запис с DEX файл. По този начин той може да интерпретира погрешно двойни DEX/APK файлове.

GuardSquare казва, че атакуващият може да използва тази функция за двойственост на виртуалната машина, за да добави злонамерен DEX файл към нормален APK файл, без да засяга неговия подпис. Средата за изпълнение на Android ще приеме APK файла като валидна актуализация на легитимна по-ранна версия на приложението, но Dalvik VM ще зареди кода от DEX файла, който е бил инжектиран със зловреден код.

Обикновено, когато потребител инсталира актуализирана версия на приложение, подписът на приложението се проверява от средата за изпълнение на Android, за да се гарантира, че съответства на по-старата версия. Когато проверката е положителна, актуализираното приложение получава разрешенията, които са били предоставени на оригиналното приложение. По този начин атакуващите могат да използват уязвимостта на Janus, за да заобиколят процеса на проверка на подписа и да получат непотвърден код, инсталиран на устройствата на нищо неподозиращи потребители.

Още по-лошото е, че този непроверен код може да получи достъп до мощни разрешения. Това поражда някои сериозни възможности. GuardSquare заявява:

„Атакуващият може да замени доверено приложение с високи привилегии (системно приложение, например) с модифицирана актуализация, за да злоупотреби с неговите разрешения. В зависимост от целевото приложение, това може да позволи на хакера да получи достъп до чувствителна информация, съхранена на устройството, или дори да поеме напълно устройството. Алтернативно, атакуващият може да предаде модифициран клонинг на чувствително приложение като легитимна актуализация [която] може да изглежда и да се държи като оригиналното приложение, но да инжектира злонамерено поведение.

Компанията добави, че към момента не са виждали никакви приложения, експлоатиращи Janus в природата. Другата добра новина е, че уязвимостта изисква от потребителя да инсталира злонамерена актуализация от източник извън Google Play Store. Следователно потребителите, които ограничават инсталирането на приложения до Play Store, са защитени.

Уязвимостта на Janus засяга устройства с Android 5.0+. Засегнати са приложения, които са подписани със схема за подпис на APK v1. APK файловете, подписани със схема за подпис v2, са защитени срещу уязвимостта. Това изисква APK файловете да се изпълняват на устройства, поддържащи най-новата схема за подпис (Android 7.0 и по-нови). Схема v2 е защитена, защото за разлика от схема v1, тя взема предвид всички байтове в APK файла.

„По-старите версии на приложения и по-новите приложения, работещи на по-стари устройства, остават податливи. Разработчиците трябва поне винаги да прилагат схема за подпис v2," GuardSquare държави.

GuardSquare съобщи за този проблем на Google на 31 юли 2017 г. и получи потвърждение на същия ден. В доклада на компанията се казва, че Google пусна корекция на своите партньори през ноември и публикува грешката (CVE-2017-13156) в Android Security Bulletin на 4 декември 2017 г. Уязвимостта има е коригиран в корекцията за сигурност на Android от декември 2017 г. Отделно, приложенията на F-Droid от официалното им хранилище са потвърдени като безопасни. И накрая, беше потвърдено, че уязвимостта е коригирана APK Mirror.


Източник: GuardSquare