Результаты обнаружения зависимостей, сообщаемые GitHub могут отличаться от результатов, возвращаемых другими средствами. Для этого есть хорошие причины, и полезно понять, как GitHub определяет зависимости для вашего проекта.
Отсутствующие или необнаруженные зависимости
GitHub генерирует и отображает данные зависимостей иначе, чем другие инструменты. Это означает, что вы почти наверняка увидите отличные от ожидаемых результаты, если ранее использовали другое средство для выявления зависимостей. Рассмотрим следующее:
* GitHub Advisory Database является одним из источников данных, используемых GitHub для выявления уязвимых зависимостей и вредоносного ПО. Это бесплатная, кураторская база данных советов по безопасности для распространённых экосистем пакетов на GitHub. Он включает как данные, переданные напрямую GitHub из GitHub Security Advisories, так и официальные ленты и источники сообщества. Эти данные проверяются и курируются GitHub , чтобы гарантировать, что ложная или неприменимая информация не будет распространена сообществу разработчиков. Дополнительные сведения см. в разделе Просмотр рекомендаций по безопасности в базе данных рекомендаций по GitHub.
- Граф зависимостей анализирует все известные файлы манифеста пакета в репозитории пользователя. Например, при использовании npm он будет анализировать файл package-lock.json. Он создает граф всех зависимостей внутри репозитория и общедоступных зависимых объектов. Это действие выполняется при включении графа зависимостей и при отправке любым пользователем изменений в ветвь по умолчанию, содержащих фиксации с изменениями манифеста в поддерживаемом формате. Дополнительные сведения см. в разделе [AUTOTITLE и Сведения о графе зависимостей](/code-security/supply-chain-security/understanding-your-software-supply-chain/troubleshooting-the-dependency-graph).
-
Dependabot Сканирует любой push к стандартной ветке, содержащей файл манифеста. При добавлении новой рекомендации выполняется проверка всех существующих репозиториев и создается оповещение для каждого затронутого репозитория. Dependabot alerts агрегируются на уровне репозитория, а не создают одно оповещение на каждое уведомление. Дополнительные сведения см. в разделе [AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts). -
Dependabot security updates срабатывают, когда вы получаете уведомление о уязвимой зависимости в вашем репозитории. По возможности Dependabot создайте pull request в вашем репозитории, чтобы повысить уязвимую зависимость до минимально возможной защищённой версии, необходимой для её предотвращения. Дополнительные сведения см. в разделе [AUTOTITLE и [AUTOTITLE](/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates)](/code-security/dependabot/troubleshooting-dependabot/troubleshooting-dependabot-errors). Dependabot Не сканирует репозитории по расписанию, а сканирует что-то по расписанию. Например, сканирование запускается, когда добавляется новая зависимость (GitHub проверяет это при каждом push), или когда в базу данных добавляется новое уведомление, синхронизирующееся с GitHub. Дополнительные сведения см. в разделе [AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts#detection-of-insecure-dependencies).
Область покрытия оповещений
Dependabot alerts Советую вам о зависимостях, которые следует обновлять, включая транзитивные зависимости, где версию можно определить по манифесте или файлу блокировки.
Dependabot security updates Предлагают только изменение там, где Dependabot можно напрямую «исправить» зависимость, то есть когда это:
-
прямые зависимости явным образом определены в файле манифеста или блокировки;
-
Транзитивные зависимости, объявленные в файле блокировки
**Проверьте:** относится ли необнаруженная уязвимость к компоненту, который не указан в манифесте или файле блокировки репозитория?
Неподдерживаемые экосистемы
Dependabot alerts поддерживаются для набора экосистем, где мы можем предоставлять высококачественные, применимые данные. Курированные советы в GitHub Advisory Database, графе зависимостей, и Dependabot alerts предоставляются для нескольких экосистем, включая Maven от Java, npm и Yarn от JavaScript, NuGet от .NET, pip от Python, RubyGems от Ruby и Composer от PHP. Для обзора экосистем пакетов, которые мы поддерживаем Dependabot alerts, см. [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems).
Стоит отметить, что рекомендации по безопасности могут существовать для других экосистем. Сведения в непроверенных рекомендациях по безопасности предоставляются ответственными за конкретные репозитории лицами. Эти данные не курируются .GitHub Дополнительные сведения см. в разделе Просмотр рекомендаций по безопасности в базе данных рекомендаций по GitHub.
**Проверьте:** относится ли необнаруженная уязвимость к неподдерживаемой экосистеме?
Исторические уязвимости
Он был запущен в ноябре 2019 года и первоначально заполнен с включением рекомендаций по рискам GitHub Advisory Database безопасности в поддерживаемых экосистемах, начиная с 2017 года. В процессе добавления CVE в базу данных мы отдаем приоритет курированию новых CVE и тех CVE, которые влияют на новые версии программного обеспечения.
Некоторая информация о старых уязвимостях доступна, особенно там, где эти CVE особенно широко распространены, однако некоторые старые уязвимости не включены в GitHub Advisory Database. Если есть определённая старая уязвимость, которую нужно включить в базу данных, свяжитесь ваш администратор сайтас .
**Проверьте**: имеет ли необнаруженная уязвимость дату публикации ранее 2017 года в национальной базе данных уязвимостей?
Область консультативной базы данных
Некоторые сторонние средства используют некурированные данные CVE, которые не проверяются и не фильтруются человеком. Это означает, что CVE могут содержать неверные теги, неправильный уровень серьезности или другие проблемы с качеством, которые повышают частоту, шумность оповещений и снижают их полезность.
Поскольку Dependabot используются отобранные данные в GitHub Advisory Database, объём оповещений может быть ниже, но те оповещения, которые вы получаете, будут точными и актуальными.
Опции игнорирования зависимостей
Вы можете настроить Dependabot так, чтобы игнорировать конкретные зависимости в конфигурационном файле, что предотвратит обновления безопасности и версии для этих зависимостей. Если вы хотите использовать только обновления для системы безопасности, необходимо переопределить поведение по умолчанию с помощью файла конфигурации. Дополнительные сведения см. в разделе Настройка обновлений для системы безопасности Dependabot , чтобы предотвратить активацию обновлений версий. Сведения об игнорировании зависимостей см. в разделе "Игнорируние определенных зависимостей".
Ограничения монорепо для GitHub Actions версий
Если в вашем репозитории несколько GitHub Actions тегов (например, в монорепо), используемый вами формат тегов влияет на то, как Dependabot он обнаруживает и обновляет версии действий.
-
`-`* Dependabot может группировать несколько действий под одной записью зависимостей или не обнаруживать новые версии корректно. Это происходит потому, Dependabot что для различия действий используется слэш-парсинг тегов.
-
`/`* Dependabot правильно обнаруживает и обновляет каждое действие независимо, так как слэш создаёт иерархическую структуру тегов, соответствующую Dependabotлогике разбора .
**Рекомендация.** Для monorepos с несколькими действиями используйте формат косой `name/version` черты для тегов действий. Это обеспечивает Dependabot правильный разбор иерархии тегов и независимое обновление действий. -
Пример:
# Recommended: namespaced with slash uses: my-org/monorepo/my-action@my-action/v0.1.0 # Not recommended: dash uses: my-org/monorepo@my-action-v0.1.0
Дополнительные материалы
-
[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts) -
[AUTOTITLE](/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts) -
[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository) -
[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/troubleshooting-the-dependency-graph) -
[AUTOTITLE](/code-security/dependabot/troubleshooting-dependabot/troubleshooting-dependabot-errors)