Категория OWASP: MASVS-CODE: Качество кода
Обзор
Использование небезопасных API или библиотек значительно снижает уровень безопасности приложения. Нарушение безопасности в любой из этих зависимостей позволит злоумышленнику использовать ряд векторов для проведения широкого набора атак, таких как «человек посередине» (MitM) и удаленное выполнение кода (RCE).
Угроза реализации небезопасных зависимостей возникает, когда разработчики не интегрируют оценки безопасности и тестирование уязвимостей в жизненный цикл разработки программного обеспечения (SDLC) или, в некоторых случаях, не реализуют политику автоматического обновления для зависимостей приложений.
Эксплуатация зависимостей обычно начинается с анализа двоичного файла приложения (.apk) для поиска уязвимых библиотек. На этом этапе проводится разведка открытого исходного кода (OSINT) для выявления ранее обнаруженных потенциально опасных уязвимостей. Злоумышленники могут затем использовать публично раскрытую информацию об уязвимостях, такую как распространенные уязвимости и риски (CVE), для выполнения дальнейших атак.
Влияние
Успешная эксплуатация небезопасных зависимостей может привести к широкому набору атак, таких как удаленное выполнение кода (RCE), SQL-инъекции (SQLi) или межсайтовый скриптинг (XSS). Таким образом, общее воздействие напрямую связано с типом уязвимости, которую представляет стороннее программное обеспечение и которой могут воспользоваться злоумышленники. Возможными последствиями успешной эксплуатации уязвимых зависимостей являются утечки данных или недоступность сервиса, что может привести к существенному воздействию на репутацию и экономический оборот.
Смягчения
Глубокоэшелонированная защита
Обратите внимание, что перечисленные ниже меры по снижению риска должны быть реализованы в совокупности, чтобы обеспечить более высокий уровень безопасности и уменьшить поверхность атаки приложения. Точный подход всегда следует оценивать в каждом конкретном случае.
Оценка уязвимости зависимостей
Внедряйте проверку зависимостей в начале жизненного цикла разработки для обнаружения уязвимостей в стороннем коде. На этом этапе проверяется, безопасен ли код, созданный не собственными силами, перед развертыванием в производственных средах. Проверка может быть дополнена внедрением инструментов статического тестирования безопасности приложений (SAST) и динамического тестирования безопасности приложений (DAST) в рамках жизненного цикла разработки программного обеспечения для улучшения состояния безопасности приложения.
Постоянно обновлять зависимости
Всегда будьте осторожны и постоянно обновляйте любые зависимости, встроенные в код. Для этой цели рекомендуется реализовать автоматические обновления, которые передаются в рабочую среду каждый раз, когда сторонний компонент выпускает новое исправление безопасности.
Провести тестирование на проникновение приложения
Регулярно проводите тесты на проникновение. Целью подобных тестов является обнаружение любой известной уязвимости, которая может повлиять на проприетарный код и/или сторонние зависимости. Кроме того, оценки безопасности часто выявляют неизвестные уязвимости (нулевые дни). Тесты на проникновение полезны для разработчиков, поскольку они предоставляют им снимок текущего состояния безопасности приложения и помогают им определить приоритетность проблем безопасности, которые необходимо устранить.