Налаштування 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 безпеки, який працює автономно.
Чек-лист для самостійного налаштування
- Встановіть Nuclei:
go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest - Оновіть templates:
nuclei -update-templates - Протестуйте на staging:
nuclei -u https://staging.example.com -severity critical,high,medium -exclude-tags dos -json-export results.json - Інтегруйте в CI: додайте крок з аналізом результатів
- Налаштуйте оповіщення (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 безпеки, який працює автономно. Зв'яжіться з нами — оцінимо проєкт і запропонуємо план.







