Много предупреждений Dependabot? Проследите путь к уязвимой функции

Dev
Просмотры 2

Одинаковый пакет не означает одинаковую срочность. Один сервис вызывает уязвимую функцию при обработке запроса, другой устанавливает пакет, но функцию не использует. Открытая предварительная версия анализа достижимости Dependabot от 28 октября 2026 года показывает эту разницу.

От пакета к пути вызовов

Dependabot находит уязвимые версии зависимостей. Новый анализ ищет путь от кода репозитория к затронутой функции. Управляемый GitHub процесс Actions строит граф с помощью CodeQL и сопоставляет его с подготовленными данными рекомендаций безопасности.

В нашем вымышленном коде API заказов вызывает package.parseUnsafe через вспомогательную функцию. Другая точка входа использует только package.formatLabel и не достигает цели в этом графе. Это не реальная уязвимость и не результат анализатора GitHub: пример объясняет недостаточность списка пакетов.

Собственный вымышленный пример JavaScript: заказы ведут к parseUnsafe, метки — к formatLabel. Не реальная уязвимость и не официальный экран.
Собственный вымышленный пример JavaScript: заказы ведут к parseUnsafe, метки — к formatLabel. Не реальная уязвимость и не официальный экран.

Четыре разных вердикта

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

Potentially reachable означает, что вызов нельзя исключить; приоритет должен быть сопоставим с Reachable. Unreachable — анализ завершён без найденного пути. Reachability unavailable — вердикт получить не удалось. Это разные состояния, и ни одно не закрывает и не отклоняет предупреждения автоматически.

Изменение кода не меняет вердикт сразу

Включение запускает первое сканирование. Затем оно повторяется каждые 24 часа, пока есть открытые предупреждения. Push не запускает немедленное сканирование; в предварительной версии запуск по запросу недоступен.

После удаления вызова сегодня старый Reachable может остаться до следующего анализа. После добавления временно может отображаться прежний Unreachable. Второй рисунок — настоящий вывод обхода нашего вымышленного графа на Python. Для реального исправления сопоставляйте время завершённого анализа с проверенным кодом.

Настоящий вывод Python для вымышленного графа: найденный и отсутствующий путь. Не измерение вердиктов GitHub или возможности эксплуатации.
Настоящий вывод Python для вымышленного графа: найденный и отсутствующий путь. Не измерение вердиктов GitHub или возможности эксплуатации.

Поддерживаемые репозитории

Предварительная версия доступна в GitHub Enterprise Cloud, включая резидентность данных. Нужны JavaScript или TypeScript, lockfile npm, Yarn либо pnpm и включённые Dependabot alerts. Лицензия GitHub Code Security не требуется. Сканирование бесплатное и не расходует оплачиваемые минуты Actions; собственные runners не поддерживаются.

По умолчанию функция выключена. Включите её в Settings > Advanced Security или собственной конфигурации безопасности. Большие монорепозитории могут упереться в лимит трёх часов или ресурсов. Важны также серьёзность, EPSS и доступность в рабочей среде. Польза — более обоснованный порядок работы с открытыми предупреждениями.

Источники и дополнительное чтение

GitHub Changelog · 2026-10-28

GitHub Docs · Reachability analysis