Бельгийская фирма GuardSquare опубликовала отчет об уязвимости (CVE-2017-13156) обнаруженной в Android по прозвищу Janus. Уязвимость позволяет злоумышленникам изменять код приложения, не затрагивая подписи.
При разработке приложения Android требует специалистов подписывать свой продукт. Во время обновления система сравнивает подпись файла APK с уже существующей версией и в случае совпадения — приложение скомпилируется в файл DEX для работы на устройстве.
Корень проблемы состоит в том, что уязвимость связана с возможностью добавления дополнительных байтов в файлы APK и DEX.
Файл APK представляет собой zip-архив, который позволяет содержать какие-то произвольные байты в начале перед zip-записями. Во время подписи JAR игнорирует любые дополнительные байты, кроме zip-записей, необходимых для проверки подписи приложения. В свою очередь, файл DEX содержит произвольные байты в конце.
Таким образом, Janus объединяет немодифицированный файл APK с модифицированным исполняемым файлом DEX, который не влияет на подпись приложения. В таком случае, система Android позволит установить, а затем запустить код из заголовка DEX. Злоумышленники при этом получают возможность управлять разрешениями и подменять приложение во время следующего обновления.
Janus сможет навредить только тем приложениям, которые подписаны способом на основе JAR (Android 5.0 и выше). Начиная с версии Android 7.0 Nougat метод подписи JAR был заменён на APK Signature Scheme v2, который предоставляет защиту последующим версиям.


ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ