Что такое OWASP ZAP и как он используется в DevOps для безопасности?

«Что такое OWASP ZAP и как он используется в DevOps для безопасности?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

OWASP ZAP (Zed Attack Proxy) — это инструмент с открытым исходным кодом для автоматизированного тестирования безопасности веб-приложений (DAST — Dynamic Application Security Testing). В DevOps его интегрируют в CI/CD-пайплайны для "сдвига безопасности влево" (Shift Left Security), позволяя находить уязвимости на ранних этапах разработки.

Как ZAP используется в DevOps-процессе:

  1. Автоматическое сканирование в CI/CD: ZAP запускается как этап сборки (например, в Jenkins, GitLab CI, GitHub Actions) для тестирования staging- или test-окружения.
  2. API-сканирование: ZAP может тестировать REST API и GraphQL endpoints, что критично для современных микросервисных архитектур.
  3. Интеграция с пайплайнами: Результаты сканирования (в форматах XML, JSON, HTML) публикуются в артефактах сборки или отправляются в системы мониторинга (например, Jira, Security Hub).

Типичные обнаруживаемые уязвимости: SQL-инъекции, XSS (межсайтовый скриптинг), CSRF (межсайтовая подделка запроса), небезопасные десериализации, проблемы с заголовками безопасности.

Пример запуска автоматического сканирования в Docker-контейнере (для CI/CD):

# Запуск ZAP в режиме daemon с API
sudo docker run -u zap -p 8080:8080 -i 
  owasp/zap2docker-stable zap.sh -daemon 
  -host 0.0.0.0 -port 8080 
  -config api.disablekey=true 
  -config scanner.attackOnStart=true 
  -config view.mode=attack 
  -config connection.dnsTtlSuccessfulQueries=-1 
  -config api.addrs.addr.name=.* 
  -config api.addrs.addr.regex=true

# Запуск активного сканирования через API (из другого шага пайплайна или скрипта)
curl "http://localhost:8080/JSON/ascan/action/scan/?url=https://your-test-app.com&recurse=true&inScopeOnly=true"

# Генерация отчета после завершения сканирования
curl "http://localhost:8080/OTHER/core/other/htmlreport/" -o zap-report.html

Важно: В production-пайплайнах сканирование ZAP часто настраивают как "неблокирующий" этап: критичные уязвимости (High/Critical) могут прерывать сборку, а medium/low — только отправлять оповещения.