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

Что еще почитать:

Уязвимость ParseDroid ставит под угрозу разработку Android-приложений

История версий ОС Android

6 ошибок, которые помешают вашему мобильному приложению «взлететь»