Среди более чем 40 уязвимостей, пропатченных Google на прошлой неделе, исправлена ошибка, которая позволяла злоумышленникам внедрить вредоносный код в приложение для Android, не затронув сертификат, удостоверяющий его подпись.

Уязвимость, получившую название Janus, обнаружил этим летом Эрик Лафортюн (Eric Lafortune), технический директор компании GuardSquare. Он сообщил Google об ошибке (CVE-2017-13156) в июле. Компания выпустила патч для этой уязвимости в рамках декабрьского бюллетеня безопасности Android. Публичное сообщение об ошибке появилось в четверг.

В рамках своего исследования Лафортюн создал средство экспериментальной атаки, также под названием Janus, которое позволяет злоумышленнику внедрять в файл APK вредоносный DEX (Dalvik Executable). Исполняемый файл DEX — это рабочий код Android-приложения, упакованного в APK.

“Злоумышленник может внедрить вредоносный код в пользующееся доверием приложение. Любой пользователь, скачавший и установивший его, подвергается заражению” — утверждает Лафортюн.

Один из сценариев атаки предполагает скачивание из стороннего магазина приложений файла APK, который якобы представляет собой доверенное банковское приложение, клиент социальной сети или системную утилиту.

“Целью Janus может стать любое приложение для Android — от банковского приложения до игры и карт Google Maps. После его установки злоумышленник получает те же привилегии в системе, что и целевое приложение. То есть он может похитить учетные данные для банковских операций, прочесть сообщения пользователя или внедрить на устройство новые вирусы”, — говорит Лафортюн.

Уязвимость присутствует на устройствах под управлением ОС Android более ранних версий, чем Nougat (7.0), а также на любых устройствах Android, поддерживающих схему подписей APK версии 1 (v1). Уязвимость не затрагивает устройства Android с обновленной схемой подписей APK версии 2 (v2), которая появилась в июле 2016 года.

Производитель описывает подпись APK как “схему подписи файла целиком, которая ускоряет верификацию и повышает гарантии целостности благодаря обнаружению любых изменений защищенных частей APK”.

В комментарии Threatpost Лафортюн сообщил, что Janus позволяет злоумышленнику создать APK-файл, который при расчете или проверке подписи приложения игнорирует любые дополнительные байты.

“С одной стороны, APK-файл представляет собой ZIP-архив, в начале которого, до записей ZIP, могут содержаться произвольные байты, — поясняет исследователь. — С другой стороны, DEX-файл может содержать произвольные байты в конце, после обычных секций строк, классов, определений методов и т. п. Таким образом, один и тот же файл может одновременно являться действительным APK-файлом и действительным DEX-файлом”.

Лафортюн отмечает, что такая возможность для Janus существует, потому что прежняя схема подписей JAR учитывает только записи ZIP-архива: “Она игнорирует любые дополнительные байты при вычислении и проверке подписи приложения”.

Поскольку данная уязвимость не затрагивает приложения, подписанные по схеме подписи APK версии 2 (v2), Лафортюн рекомендует разработчикам всегда применять именно эту версию, чтобы предотвратить незаконное изменение их приложений.

Категории: Уязвимости