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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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

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 для автоматических и регулярных проверок, чтобы своевременно узнавать о том, что в какой-то библиотеке была обнаружена уязвимость и необходимо ее устранить.

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

  • Главная страница OWASP Dependency Check

  • Документация Dependency Check Gradle плагина на Github

Источник: https://habr.com/ru/post/693890/


Интересные статьи

Интересные статьи

Создание приложений с функциями воспроизведения мультимедиа связана с рядом трудностей, которые усложняют разработку. Однако в этом году появилась возможность использовать Jetpack Media3 — решение, ко...
Статья о том, как упорядочить найм1. Информируем о вакансии2. Ведём до найма3. Автоматизируем скучное4. Оформляем и выводим на работу5. Отчитываемся по итогам6. Помогаем с адаптацией...
Тема COVID-19 сейчас звучит из каждого утюга, и каждый, кто был военным аналитиком в январе, экономистом в нефтяной отрасли в феврале, сейчас внезапно превратился в вирусолога. Тем не менее из ин...
Сегодня мы представляем вам первую часть перевода этого большого материала. Он посвящён детальному разбору новых возможностей React, которые появились в этой библиотеке начиная с версии 16. Автор...
Пользовательская рабочая станция — самое уязвимое место инфраструктуры по части информационной безопасности. Пользователям может прийти на рабочую почту письмо вроде бы из безопасного источника, ...