Как стать автором
Обновить

Можно ли доверять библиотекам, которые использует ваше приложение?

Время на прочтение2 мин
Количество просмотров2.8K

Если вы знакомы с современными техниками написания высококачественного кода, тогда, пожалуй, вам не стоит волноваться об уязвимостях кода, который вы написали. Однако, обычно приложения используют сторонние библиотеки (зависимости) - можно ли доверять им?

Пожалуй, нет. В мире насчитывается огромное количество разных библиотек и мы не можем быть уверены, что все они безопасны и что в них нет уязвимостей. Но возникает вопрос, как тогда удостовериться, что мы не добавим в наш проект уязвимостей вместе с добавлением новой библиотеки?

OWASP Dependency-Check на выручку

Существует очень легкий и удобный способ убедиться, что новая библиотека не добавит уязвимостей в ваш проект - OWASP Dependency-Check. Это инструмент анализа состава программного обеспечения (SCA), который занимается обнаружением публично раскрытых уязвимостей, содержащихся в зависимостях проекта.

Шаг 1 - Добавьте dependency check gradle плагин

Добавьте зависимость в ваш корневой build.gradle файл:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.owasp:dependency-check-gradle:7.2.0'
    }
}

Затем добавьте dependency check gradle плагин в app/build.gradle:

apply plugin: 'org.owasp.dependencycheck'

Шаг 2 - Запустите gradle-команду для проверки зависимостей

Начните проверку библиотек, используя следующую gradle команду:

./gradlew dependencyCheckAnalyze

При первом запуске потребуется некоторое время для загрузки файлов и выполнения проверки зависимостей. В результате проверки будет сгенерирован html-отчет:

При обнаружении уязвимостей, первым делом попробуйте проверить последнюю версию библиотеки - уязвимость может быть уже исправлена. Например, последние версии библиотеки Gson не содержат уязвимостей:

Таким образом, просто обновите версию библиотеки до последней и проблема будет устранена.

Шаг 3 - Настройте CI для автоматической проверки

Очень удобно настроить CI автоматически запускать проверку зависимостей и завершать сборку приложения с ошибкой, если уязвимости были обнаружены. Если вы используете Github Actions, добавьте следующий шаг для проверки зависимостей:

- name: Run dependency check
  run: ./gradlew dependencyCheckAnalyze

А чтобы завершить сборку приложения с ошибкой при обнаружении библиотек с уязвимостями, добавьте следующую инструкцию в app/build.gradle:

dependencyCheck {
    failBuildOnCVSS = 0
}

Выводы

Плагин проверки зависимостей - очень легкий и удобный способ увеличить надежность вашего приложения. И я был удивлен, насколько редко он используется. Я рекомендую добавить его в стек используемых средств на ваших проектах, а также настроить CI для автоматических и регулярных проверок, чтобы своевременно узнавать о том, что в какой-то библиотеке была обнаружена уязвимость и необходимо ее устранить.

Полезные ссылки

Теги:
Хабы:
Всего голосов 4: ↑1 и ↓3-2
Комментарии5

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн