Что такое OWASP?
Open Web Application Security Project (OWASP) – это открытое онлайн-сообщество, которое разрабатывает и распространяет бесплатные общедоступные материалы: статьи, методологии, документацию, инструменты и технологии, касающиеся безопасности веб-приложений.
Компоненты с открытым исходным кодом стали неотъемлемой частью разработки программного обеспечения. По данным OSSRA за 2024 год, 96% разработчиков полагаются на компоненты с открытым исходным кодом. Все более широкое использование open-source компонентов требует от разработчиков более проактивного подхода к управлению безопасностью открытого исходного кода.
Что такое OWASP Dependency-Check?
OWASP Dependency-Check – это инструмент анализа программных компонентов (SCA), предназначенный для обнаружения известных уязвимостей в зависимостях проекта. Он сканирует файлы проекта, в частности файлы манифеста и пакетов, такие как pom.xml, package.json или requirements.txt, и сопоставляет найденные зависимости с публично задокументированными уязвимостями из таких источников, как Национальная база данных уязвимостей (NVD).
Благодаря автоматизации обнаружения уязвимостей на ранних этапах разработки, Dependency-Check помогает командам устранять потенциальные угрозы безопасности до их попадания в продакшн. Он поддерживает широкий спектр языков программирования и экосистем, включая Java, .NET, Python, Ruby и JavaScript. Инструмент доступен в виде отдельного CLI, плагина Maven, плагина Gradle, задачи Ant, плагина Jenkins и т. д., что позволяет легко интегрировать его в конвейеры сборки.
Скачать OWASP Dependency-Check можно здесь
Как работает OWASP Dependency-Check
OWASP Dependency-Check осуществляет анализ зависимостей путём изучения конфигурационных файлов, входящих в структуру программного проекта. Он извлекает идентификационную информацию, такую как названия и версии библиотек, а затем пытается сопоставить эти данные с базами данных уязвимостей, включая NVD и другие общедоступные источники.
Процесс обычно состоит из следующих этапов:
- Идентификация: Инструмент сканирует артефакты проекта, чтобы создать список всех сторонних библиотек и фреймворков, которые используются.
- Анализ: осуществляется путем вычисления криптографических хешей (например, SHA-1), которые затем сравниваются с известными компонентами для более точной идентификации версий.
- Сопоставление уязвимостей: после обнаружения зависимостей Dependency-Check сверяет их с внутренней базой данных известных уязвимостей.
- Отчетность: Результаты собираются в подробные отчеты, в которых указываются уязвимые компоненты, уровни серьезности и ссылки на предупреждения или исправления.
Основные возможности OWASP Dependency-Check
Языки программирования и интеграции
OWASP Dependency-Check сейчас поддерживает пять различных языков программирования. Java и .NET поддерживаются полностью, а дополнительная экспериментальная поддержка предоставляется для Ruby, Node.js и Python.
Dependency-Check даёт разработчикам возможность отслеживать open-source компоненты на ранних этапах девелопмента благодаря интеграции с интерфейсом командной строки. Это обеспечивает беспрепятственную интеграцию с другими инструментами, системами сборки и API, помогая разработчикам выявлять уязвимости безопасности на как можно более ранней стадии процесса CI/CD, не задерживая разработку.
Инструмент OWASP также поддерживает плагин для Jenkins и может приостанавливать сборку, чтобы гарантировать, что в продакшн попадает только проверенный open-source код без известных уязвимостей.
База данных уязвимостей и обновления
Многочисленные исследования показали, что время на эксплуатацию (time to exploit, TTE) уязвимостей после сообщения о них стремительно сокращается. Согласно исследованию Google 138 эксплуатируемых уязвимостей в 2023 году, время на эксплуатацию (TTE) составило всего 5 дней по сравнению с 32 днями в 2021 и 2022 годах. Это делает способность быстро обнаруживать и исправлять уязвимости гораздо более важной.
На текущий момент OWASP Dependency-Check охватывает исключительно уязвимости, опубликованные в базе данных NVD. Хотя это авторитетная и популярная база данных уязвимостей, процесс оценки и проверки уязвимостей занимает некоторое время. Это означает, что уязвимость может некоторое время существовать самостоятельно, прежде чем она будет добавлена в NVD.
Хотя информация об уязвимостях в коммерческом ПО обычно регулярно поступает в NVD, процесс исследования и обнародования уязвимостей в сообществах open-source является менее централизованным. Это означает, что некоторые уязвимости в open-source коде могут быть доступны через публичные баг-трекеры, security-рейды или форумы, но отсутствовать в NVD.
Другим фактором является то, что, как и обычно для бесплатных инструментов, база данных уязвимостей для OWASP Dependency-Check хранится локально. Это требует от пользователей частого обновления локальной базы данных. Это отличается от баз данных, хранящихся в облаке, которые могут обновляться автоматически. Это опять же означает, что существует риск пропустить уязвимости, когда локальная машина не обновляется.
Сканирование уязвимостей
Сканирование – это процесс запуска инструмента на пользовательском коде для обнаружения любого уязвимого open-source компонента. Обычно это делается путем сравнения пользовательского кода с известными уязвимостями открытого исходного кода в базе данных уязвимостей.
OWASP Dependency-Check использует различные методы анализа для генерации перечня записей Common Platform Enumeration (CPE). CPE – это структурированная схема именования, которая содержит метод проверки имен на соответствие системе.
Анализатор проверяет комбинацию groupId, artifactId и version (иногда называемую GAV) в файле объектной модели проекта Maven (файл POM.XML). Это может привести к неправильной идентификации компонентов и высокому уровню ложных срабатываний и ложных отрицаний, в отличие от вычисления SHA-1 файла, которое намного точнее, поскольку каждый компонент получает уникальный идентификатор.
Отчетность чрезвычайно важна при управлении уязвимостями, поскольку она дает всем командам безопасности и разработчикам действенные идеи, а также предоставляет заинтересованным сторонам необходимые им показатели. OWASP Dependency-Check способен удовлетворить такие потребности, формируя отчеты и позволяя их экспорт в различных форматах: XML, CSV, JSON и HTML.
OWASP Dependency-Check: плюсы и минусы
Безопасность open-source остается критически важной для разработчиков, и OWASP Dependency-Check предлагает простой и эффективный способ проверки зависимостей в коде.
Преимущества OWASP Dependency-Check
- Бесплатно для разработчиков: Разработчикам не нужно ждать, пока их менеджеры одобрят и приобретут бесплатный инструмент OWASP. Нет необходимости в длительном процессе POC. Они могут просто загрузить его для себя.
- Легкий и простой в загрузке, установке и запуске: Пользователям не нужно тратить время на длительный процесс развертывания, выясняя все нюансы, которые могут возникнуть при переходе на новый инструмент разработки. Установка и настройка Dependency-Check не представляет сложности, при условии, что пользователь регулярно обновляет свою локальную базу данных.
- Различные варианты отчетов и экспорта: Полезно для пользователей, которые хотят пристально следить за оповещениями об уязвимостях в открытом исходном коде и оставаться в курсе событий. Возможность легко экспортировать отчеты также позволяет командам собирать метрики и получать обзор своих возможностей управления уязвимостями в открытом исходном коде с течением времени.
Недостатки OWASP Dependency-Check
OWASP Dependency-Check является мощным инструментом, который помогает командам разработчиков начать работу над обеспечением безопасности open-source компонентов. Однако он не предоставляет всех возможностей, которые может предоставить инструмент анализа программных компонентов.
- Не позволяет использовать автоматические правила или рабочие процессы для устранения уязвимостей. Следовательно, когда пользователи получают отчет с перечнем всех уязвимостей безопасности открытого кода, они должны сами определить, как их устранить, и запланировать устранение уязвимостей или исправление уязвимостей в своем и без того плотном графике.
- Формат отчета не настраивается: Хотя разработчики могут использовать OWASP Dependency-Check для создания отчетов в различных форматах, содержимое отчета не очень модульное. Пользователи не могут создавать специальные отчеты для получения высокоуровневых данных, таких как анализ количества уведомлений по времени или в соответствии с другими специфическими параметрами.
- Нет дешбордов: У пользователей нет ресурса в инструменте, куда они могут зайти и увидеть обзор состояния безопасности открытого исходного кода, уведомления об уязвимостях, временные рамки и т. д. Это данные, которые им придется собирать и организовывать вручную.
OWASP Dependency-Check: работает ли этот инструмент?
Короткий ответ на этот вопрос – да. OWASP Dependency-Check является отличным бесплатным инструментом для разработчиков, который предоставляет им некоторые исходные данные, необходимые для управления уязвимостями open-source.
Однако возможности сканирования инструмента, тот факт, что он хранится локально, и количество ложных срабатываний, которые дает его сканирование, затрудняют его использование организациями, нуждающимися в комплексном решении для управления безопасностью открытого исходного кода.
Как и все бесплатные инструменты, OWASP Dependency-Check имеет свои преимущества и ограничения. Разработчики, которые не используют никаких технологий для защиты своего открытого кода, могут загрузить его и испытать. Организации, которые ищут более автоматизированные средства контроля и функции, соответствующие их конкретным потребностям, могут решить поискать решение в другом месте.







