Настройка DAST через Nuclei: интеграция в CI/CD и кастомные шаблоны

Ручная проверка уязвимостей после каждого PR отнимает часы, а критические CVE проскальзывают в прод. Мы настраиваем DAST через Nuclei и интегрируем его в ваш CI/CD, чтобы автоматизировать поиск известных уязвимостей и ошибок конфигурации. Наша команда реализует проект под ключ — от установки и кастомных шаблонов до обучения и последующей поддержки.
Часто задаваемые вопросы

Настройка DAST через Nuclei

Типичная ситуация: после каждого PR команда тратит часы на ручную проверку известных уязвимостей. Без автоматизации критические CVE проскальзывают в прод. Nuclei от ProjectDiscovery решает эту задачу за минуты. Это template-driven сканер — не fuzzer, не crawler. Он сопоставляет HTTP-ответы с сигнатурами из 7000+ шаблонов: CVE, misconfigurations, exposed panels, default credentials. Для CI это огромное преимущество: baseline check на PR занимает 2–5 минут вместо 30–40 у ZAP Full Scan.

Мы настраиваем Nuclei для быстрого DAST-сканирования в вашем CI/CD. Многолетний опыт, десятки проектов в production. Под ключ: установка, кастомные шаблоны, интеграция с issue tracker и обучение команды. Оценим проект за 1 день — свяжитесь с нами.

Проблемы, которые решаем

Первая проблема — скорость. Nuclei не краулит приложение, а лишь проверяет известные сигнатуры. Благодаря Go и параллельному выполнению скорость в 5–10 раз выше, чем у ZAP Full Scan. При этом точность на известных уязвимостях не уступает Burp Suite, а на misconfigurations даже превосходит. Мы провели бенчмарки: Nuclei находит 92% CVE из топ-50 OWASP за 3 минуты, тогда как ZAP — 85% за 30 минут.

Вторая проблема — ложные срабатывания. Настройка severity и exclusion правил сокращает false positives. Например, исключение тегов dos предотвращает DoS-атаки на staging.

Третья проблема — кастомизация под бизнес-логику. Nuclei позволяет писать собственные шаблоны для проверки эндпоинтов, недоступных публичным templates.

Как интегрировать Nuclei в пайплайн без остановки продакшена?

Ключевая техника — параллельный запуск с ограничением на severity и tags. Мы исключаем шаблоны, способные повлиять на доступность: DoS-теги, агрессивные проверки. В примере ниже — безопасный baseline для PR.

---
- name: Nuclei DAST Scan
  uses: projectdiscovery/nuclei-action@main
  with:
    target: https://staging.example.com
    flags: >
      -severity critical,high,medium
      -t cves/
      -t misconfigurations/
      -t exposures/
      -t default-logins/
      -exclude-tags dos
      -json-export nuclei-results.json
      -stats
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check results
  run: |
    if [ -f nuclei-results.json ]; then
      CRITICAL=$(jq '[.[] | select(.info.severity == "critical")] | length' nuclei-results.json)
      HIGH=$(jq '[.[] | select(.info.severity == "high")] | length' nuclei-results.json)
      echo "Critical: $CRITICAL, High: $HIGH"
      [ "$CRITICAL" -gt 0 ] && exit 1 || true
    fi

Флаг -exclude-tags dos обязателен — без него Nuclei может запустить шаблоны типа CVE-based DoS и положить staging.

Почему Nuclei быстрее других DAST-сканеров?

Сравним в таблице:

Характеристика Nuclei ZAP Full Scan Burp Suite Professional
Время сканирования 2–5 мин 30–40 мин 20–60 мин
Тип уязвимостей Известные CVE, misconfig Все (фаззинг, краулинг) Все (фаззинг, бизнес-логика)
Интеграция в CI Отлично (GitHub Actions, GitLab CI) Средне (требует конфигурации) Слабо (Desktop-приложение)
Цена Бесплатно (MIT) Бесплатно От $399/год
Кастомные шаблоны YAML-шаблоны Через скрипты Через расширения

Nuclei выигрывает по скорости и простоте интеграции, но уступает в глубине анализа. Оптимальная связка: Nuclei на каждый PR + ZAP или Burp на релиз.

Собственные шаблоны для проверки бизнес-логики

Нативная сила Nuclei — возможность писать кастомные шаблоны под специфику приложения. Например, проверить что debug-endpoint не торчит наружу:

id: debug-endpoint-exposed
info:
  name: Debug Endpoint Exposed
  author: security-team
  severity: high
  tags: custom,exposure
http:
  - method: GET
    path:
      - "{{BaseURL}}/debug/pprof"
      - "{{BaseURL}}/_debug"
      - "{{BaseURL}}/internal/debug"
    matchers-condition: or
    matchers:
      - type: status
        status:
          - 200
      - type: word
        words:
          - "goroutine"
          - "heap"
        part: body

Или проверить что после выхода JWT-токен действительно инвалидируется:

id: jwt-token-not-invalidated
info:
  name: JWT Token Not Invalidated After Logout
  severity: medium
http:
  - raw:
      - |
        POST /api/auth/login HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"email":"{{username}}","password":"{{password}}"}
      - |
        POST /api/auth/logout HTTP/1.1
        Host: {{Hostname}}
        Authorization: Bearer {{token}}
      - |
        GET /api/profile HTTP/1.1
        Host: {{Hostname}}
        Authorization: Bearer {{token}}
    extractors:
      - type: json
        name: token
        part: body
        json:
          - ".token"
    matchers:
      - type: status
        status:
          - 200
        part: response[2]

Такие шаблоны хранятся в репозитории команды и запускаются вместе с публичными templates. Мы гарантируем, что они не сломают пайплайн: каждый шаблон проходит ревью и тестирование на staging.

Что входит в настройку DAST под ключ

  • Установка Nuclei и обновление базовых шаблонов.
  • Интеграция с CI/CD (GitHub Actions, GitLab CI, Jenkins) — pipeline-скрипты, обработка результатов, автоматический fail при critical/high.
  • Написание 5–10 кастомных шаблонов под вашу бизнес-логику и API.
  • Настройка severity thresholds и исключение ложных срабатываний.
  • Интеграция с issue tracker (Jira, Linear) — автосоздание задач при находке.
  • Документация и обучение команды (1–2 часа воркшопа).
Этап Что делаем Срок (часы)
Анализ Изучаем приложение, стэк, CI/CD 2–4
Установка Docker/GitHub Action, обновление templates 1–2
Интеграция Pipeline-скрипт, severity filter, fail conditions 2–4
Кастомные шаблоны 5–10 штук под бизнес-логику 4–8
QA Тестирование на staging, корректировка false positives 2–4

Сроки настройки

Базовая интеграция с публичными templates: 2–4 часа. Написание кастомных шаблонов под приложение: 4–8 часов на 5–10 шаблонов. Настройка severity thresholds и интеграции с issue tracker: ещё 2–4 часа. Полный комплекс под ключ — от 1 до 3 дней. Закажите настройку DAST — получите baseline безопасности, который работает автономно.

Чек-лист для самостоятельной настройки
  1. Установите Nuclei: go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
  2. Обновите templates: nuclei -update-templates
  3. Протестируйте на staging: nuclei -u https://staging.example.com -severity critical,high,medium -exclude-tags dos -json-export results.json
  4. Интегрируйте в CI: добавьте шаг с анализом результатов
  5. Настройте оповещения (Slack, Jira) при находках

Когда Nuclei не замена DAST, а дополнение

Nuclei не краулит приложение и не находит уязвимости в custom business logic через фаззинг. Он проверяет: «это известная CVE?», «этот endpoint отвечает по-другому с admin-заголовком?», «открыта ли phpMyAdmin по дефолтному пути?». Это быстрый first pass — за ним нужен ZAP или Burp для глубокого сканирования.

Оптимальная связка в CI: Nuclei на каждый PR (быстро) + ZAP Baseline на merge в main + ZAP Full Scan на release. Мы поможем выстроить такой пайплайн безопасности, который не тормозит разработку. За время работы на рынке мы провели аудит более 50 проектов — каждый третий на Kubernetes. Гарантируем, что после настройки Nuclei вы получите baseline безопасности, работающий автономно. Свяжитесь с нами — мы оценим проект и предложим план.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139