


28 октября GitHub открыл предварительную версию анализа достижимости уязвимостей для Dependabot. Он ищет пути вызовов от кода приложения к уязвимым функциям зависимостей JavaScript и TypeScript. На Mentoring.digital объясняем, как использовать новый сигнал при разборе предупреждений.
CodeQL строит граф вызовов приложения и зависимостей. В карточке предупреждения появляются результат и подтверждающие сведения. Reachable означает найденный путь к уязвимой функции. Potentially reachable означает неопределённость, и GitHub советует рассматривать такой случай как достижимый.
Unreachable означает, что завершённый анализ не нашёл путь; приоритет такого предупреждения может быть ниже. Reachability unavailable сообщает, что анализ недоступен, поэтому нужен обычный разбор. Ни один вердикт сам по себе не закрывает предупреждение.
На этапе preview поддерживаются GitHub Enterprise Cloud, включая размещение данных по регионам, и репозитории JavaScript/TypeScript с lockfile npm, Yarn или pnpm. Анализ бесплатен в рамках preview, не требует лицензии Advanced Security и оплаты использованных им минут Actions. Он выключен по умолчанию; для отображения результатов нужны включённые Dependabot alerts.
Это условия предварительной версии. Не следует переносить их на любой тариф, язык или будущий платный режим. Перед пробным включением проверьте ограничения именно своего репозитория и зафиксируйте дату наблюдения.
Представьте учебную ситуацию: в двух проектах обнаружена одна уязвимая библиотека. В одном проекте анализ нашёл путь к проблемной функции, а во втором не смог завершить проверку. Второй результат не даёт основания объявить проект безопасным. Для него по-прежнему нужно исследовать контекст использования зависимости.
Редакция рекомендует сохранять вердикт вместе с доказательствами, условиями запуска приложения и решением ответственного разработчика. Сопоставляйте его с серьёзностью проблемы, доступностью затронутого участка кода и возможностью обновления. Любое исключение должно иметь понятную причину и срок повторной проверки.
Если разбор упирается в цепочку асинхронных вызовов, импортов и зависимостей, её можно изучить с наставником по JavaScript. Такой разбор помогает понять код, но не является автоматическим заключением о безопасности всей системы.