Уязвимость Janus позволяет злоумышленникам модифицировать приложения, не затрагивая их подписи. Он был обнаружен GuardSquare и исправлен Google.
Android установлен на огромном количестве устройств, что делает его мишенью для злоумышленников. Уязвимости в мобильной операционной системе Google продолжают обнаруживаться каждый месяц, но хорошая новость заключается в том, что Google обычно старательно исправляет их с помощью регулярных обновлений безопасности, которые затем предлагаются OEM-производителям, которые затем отправляют их устройства.
Недавно исследователи безопасности обнаружили уязвимость который обманом заставил пользователей позволить злоумышленникам записывать экран их устройства.. Этот конкретный эксплойт был исправлен в Android Oreo, но аналитики GuardSquare недавно сообщили об еще одной серьезной уязвимости, которая затрагивает приложения Android, подписанные более старыми схемами подписи.
GuardSquareв докладе говорится, что Янусуязвимость (CVE-2017-13156) в Android позволяет злоумышленникам изменять код в приложениях, не затрагивая их подписи. В отчете далее говорится, что корень уязвимости заключается в том, что файл может быть действительным файлом APK и действительным файлом DEX одновременно.
Janus использует тот факт, что лишние байты остаются незамеченными в файлах APK и DEX. GuardSquare В отчете поясняется, что APK-файл представляет собой ZIP-архив, который может содержать произвольные байты в начале, до и между записями ZIP. Схема подписи JAR учитывает только записи ZIP, игнорируя любые дополнительные байты при вычислении или проверке подписи приложения.
Далее объясняется, что файл DEX, с другой стороны, может содержать произвольные байты в конце - после обычных разделов строк, классов, определений методов и т. д. Таким образом, файл может быть действительным файлом APK и действительным файлом DEX одновременно.
GuardSquare также упоминает, что ключевым элементом уязвимости является «безобидная» функция виртуальной машины Dalvik/ART. В отчете говорится, что теоретически среда выполнения Android загружает файл APK, извлекает его файл DEX и затем запускает его код. Однако на практике виртуальная машина (ВМ) может загружать и выполнять как файлы APK, так и файлы DEX. Проблема в том, что когда виртуальная машина получает APK-файл, она все равно смотрит на магические байты в заголовке, чтобы решить, какой это тип файла: DEX или APK. При обнаружении заголовка DEX он загружает файл как файл DEX. Если заголовок не найден, файл загружается как APK-файл, содержащий zip-запись с файлом DEX. Таким образом, он может неправильно интерпретировать двойные файлы DEX/APK.
GuardSquare говорит, что злоумышленник может использовать эту функцию двойственности виртуальной машины, чтобы добавить вредоносный файл DEX в обычный файл APK, не затрагивая его подпись. Среда выполнения Android примет APK-файл как допустимое обновление легитимной более ранней версии приложения, но виртуальная машина Dalvik загрузит код из файла 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 4 декабря 2017 года. Уязвимость имеет исправлено в патче безопасности Android от декабря 2017 г.. Кроме того, была подтверждена безопасность приложений F-Droid из их официального репозитория. Наконец, было подтверждено, что уязвимость исправлена. APKЗеркало.
Источник: GuardSquare