Dependency Scanning — npm audit

Dependency Scanning — автоматическая проверка зависимостей проекта на известные уязвимости (CVE) с помощью баз данных типа NVD и GitHub Advisory Database. npm audit — встроенный инструмент Node.js для этого.

Зачем нужно

Большинство реальных взломов происходит не через написанный разработчиком код, а через уязвимые npm-пакеты. Регулярное сканирование позволяет обнаруживать проблемы до продакшна и автоматизировать их устранение в CI/CD.

Где используется

  • CI/CD пайплайны: блокировка деплоя при критических уязвимостях
  • Pre-commit хуки для проверки новых зависимостей
  • Регулярные еженедельные проверки производственных проектов
  • Сканирование Docker-образов через Trivy/Snyk

Основной контент

Базовое использование npm audit

# Проверить все зависимости
npm audit

# Только производственные (без devDependencies)
npm audit --omit=dev

# Вывод в JSON для парсинга в CI
npm audit --json

# Автоматически исправить безопасные обновления
npm audit fix

# Принудительно обновить даже при breaking changes (осторожно!)
npm audit fix --force

Пример вывода npm audit

# npm audit report
lodash  <4.17.21
Severity: high
Prototype Pollution - https://github.com/advisories/GHSA-p6mc-m468-83gw
fix available via `npm audit fix`

4 vulnerabilities (1 moderate, 2 high, 1 critical)

Интеграция в CI (GitHub Actions)

- name: Security audit
  run: npm audit --audit-level=high
  # Завалит пайплайн при уязвимостях уровня high и выше

Альтернативы: Snyk и osv-scanner

# Snyk — более детальные отчёты
npm install -g snyk
snyk test

# osv-scanner от Google
osv-scanner --lockfile=package-lock.json()

.npmrc — настройка уровня строгости

# Завалить npm install при критических уязвимостях
audit-level=critical

Частые ошибки

  • Игнорирование вывода npm audit как "шума" — даже moderate уязвимости могут быть критичны в контексте приложения
  • Использование npm audit fix --force без тестирования — breaking changes могут сломать функциональность
  • Сканирование только devDependencies — они не попадают в продакшн, важнее проверять production deps
  • Отсутствие блокировки CI при high/critical — уязвимости уходят в продакшн незамеченными

Связанные темы

Ресурсы