На прошлой неделе компания Google исправила более 45 различных проблем в Android в рамках «вторника обновлений». Как выяснилось теперь, среди этих багов была уязвимость CVE-2017-13156, обнаруженная специалистами компании GuardSquare. Получившая название Janus проблема актуальна для Android 5.0 и старше; она позволяет внедрять в приложения вредоносный код, не затронув сертификат, удостоверяющий его подпись.
Аналитики GuardSquare рассказывают, что для проверки целостности файлов Android довольно бегло проверяет байты в некоторых местах. Расположение этих байтов отличается для файлов APK и DEX, и специалисты обнаружили, что могут внедрить файл DEX внутрь APK, и при этом операционная система будет уверена, что по-прежнему работает с оригинальной версией APK. Дело в том, что такая инъекция никак не повлияет на те самые байты, по которым Android судит о целостности файлов, то есть сигнатура файла после инъекции DEX не изменится.
Исследователи пишут, что в реальности этот баг может представлять огромный интерес для злоумышленников. Ведь внедрить вредоносный файл DEX в код приложения можно, например, под видом обновления, и система не заметит ничего странного. Также для распространения вредоносных приложений или обновлений могут использоваться сторонние каталоги приложений и сайты, социальная инженерия, спам и даже man-in-the-middle атаки (если целевое приложение обновляется через HTTP).
Хуже того, видоизмененное приложение унаследует все привилегии оригинала, и пользователь не заметит ничего странного, ведь после внедрения DEX-файла приложение продолжит работать, как прежде, и удостоверяющий подпись сертификат будет в полном порядке.
Janus представляет угрозу только для APK, подписанных по методу v1, который использовался вплоть до релиза Android Nougat (7.0). После выхода этой версии ОС перешла на обновленную схему подписей v2, на которую исследователи GuardSquare настоятельно рекомендовали переходить и разработчикам