Критичность: НИЗКИЙ
Способ обнаружения: SAST, APK

Описание

Алгоритм, использованный для подписи APK файла считается небезопасным.

Алгоритмы подписи (MD2withRSA, MD5withRSA, SHA1withRSA, SHA1withDSA, SHA1withECDSA), основанные на хеш-функциях MD2, MD5, SHA1 и другие устаревших алгоритмах, обладают известными уязвимостями и подвержены коллизиям. Основная опасность слабого ключа заключается в том, что злоумышленник может взломать его, чтобы создать поддельные подписи APK. Затем эти вредоносные APK, подписанные вашим ключом, могут быть установлены в качестве обновлений для приложения. Существуют и ряд других атак с использованием скомпроментированного ключа, которые зависят от использования ключа в приложении.

Так же, некоторые магазины приложений, например от Huawei, не рекомендуют подписывать приложения при помощи данных алгоритмов. И более того, не принимают такие приложения для загрузки.

Рекомендации

Для исправления данной уязвимости необходимо подписывать приложение с использованием современных алгоритмов, к примеру таких как SHA256withRSA или SHA512withRSA. Обратите внимание на то что ранние версии Android могут не поддерживать алгоритмы выше SHA1. Данная проблема и процесс замены подписи подробно описан в данной статье.

 Пример генерации с использованием SHA512withRSA
keytool -genkey -v -keystore test.keystore -alias testkey -keyalg RSA -keysize 4096 -sigalg SHA512withRSA -dname "cn=Test,ou=Test,c=CA" -validity 10000
 Пример подписи с использованием сгенерированного ключа
jarsigner -verbose -sigalg SHA512withRSA -digestalg SHA512 -keystore test.keystore test.apk testkey
Предыдущая Небезопасные настройки в AndroidManifest.xml
Следующая Недостаточная длина ключа подписи
Содержание: