We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

К списку статей

Автоматическое тестирование безопасности веб‑приложений: OWASP ZAP, Bandit и PHPStan в CI‑pipeline с GitLab CI

Безопасность веб-приложений – критически важный аспект современной разработки. В условиях ужесточения требований законодательства РФ (ФЗ-152 "О персональных данных", требования регуляторов в финансовой сфере и др.) автоматизация тестирования безопасности становится не просто желательной, а необходимой практикой. В этой статье мы рассмотрим интеграцию инструментов статического и динамического анализа безопасности (SAST и DAST) – OWASP ZAP, Bandit и PHPStan – в CI/CD pipeline с использованием GitLab CI. Цель – выявление уязвимостей на ранних этапах разработки, снижение рисков и обеспечение соответствия требованиям.

Обзор инструментов

  • OWASP ZAP (Zed Attack Proxy): DAST-инструмент, предназначенный для поиска уязвимостей в работающих веб-приложениях. Выполняет активное и пассивное сканирование, выявляет широкий спектр уязвимостей (XSS, SQL Injection, CSRF и т.д.).
  • Bandit: SAST-инструмент, разработанный для анализа Python-кода на предмет потенциальных уязвимостей безопасности. Ищет общие ошибки, такие как использование небезопасных функций, уязвимости в зависимостях и т.д.
  • PHPStan: SAST-инструмент для статического анализа PHP-кода. Помогает выявлять ошибки, повышать качество кода и находить потенциальные уязвимости, такие как использование устаревших функций, ошибки типизации и т.д.

Интеграция с GitLab CI

GitLab CI предоставляет мощные возможности для автоматизации процессов разработки, включая тестирование безопасности. Мы создадим файл .gitlab-ci.yml, который будет определять этапы pipeline, необходимые для запуска наших инструментов.

stages:
  - bandit
  - phpstan
  - zap

bandit:
  image: python:3.9
  stage: bandit
  script:
    - pip install bandit
    - bandit -r .

phpstan:
  image: php:8.1-cli
  stage: phpstan
  script:
    - composer install --no-interaction --no-progress --no-scripts
    - ./vendor/bin/phpstan analyse .

zap:
  image: owasp/zap2docker-stable
  stage: zap
  variables:
    ZAP_TARGET: $CI_PROJECT_URL
  script:
    - zap-baseline.py -t $ZAP_TARGET -g gen.conf
    - zap-full-scan.py -t $ZAP_TARGET -r report.html
  artifacts:
    paths:
      - report.html

Разберем конфигурацию:

  • stages: Определяет этапы pipeline.
  • bandit: Запускает Bandit для анализа Python-кода. Используется Docker-образ с Python, устанавливается Bandit через pip и запускается сканирование текущей директории.
  • phpstan: Запускает PHPStan для анализа PHP-кода. Используется Docker-образ с PHP, устанавливаются зависимости через Composer и выполняется анализ текущей директории.
  • zap: Запускает OWASP ZAP для сканирования веб-приложения. Используется Docker-образ ZAP, сканирование выполняется по URL проекта, а результаты сохраняются в HTML-отчет. zap-baseline.py используется для создания базовой линии сканирования, а zap-full-scan.py - для полного сканирования.
  • artifacts: Определяет артефакты, которые будут сохранены после выполнения этапа (в данном случае, HTML-отчет ZAP).

Анализ результатов и реагирование на уязвимости

После выполнения pipeline необходимо анализировать результаты работы инструментов. Bandit и PHPStan выдают текстовые отчеты с описанием найденных уязвимостей и рекомендациями по их устранению. OWASP ZAP предоставляет HTML-отчет с подробным описанием уязвимостей, их уровнем риска и рекомендациями по исправлению. Важно понимать, что автоматизированные инструменты не всегда могут выявить все уязвимости, поэтому рекомендуется проводить ручное тестирование безопасности.

Соответствие законодательству РФ

Интеграция инструментов безопасности в CI/CD pipeline помогает обеспечить соответствие требованиям законодательства РФ в части защиты персональных данных и информационной безопасности. Автоматическое выявление уязвимостей на ранних этапах разработки позволяет снизить риски утечки данных и других инцидентов безопасности. Также, наличие отчетов о тестировании безопасности может потребоваться при прохождении аудитов и проверок.

Заключение

Автоматическое тестирование безопасности веб-приложений с использованием OWASP ZAP, Bandit и PHPStan в CI/CD pipeline с GitLab CI – это эффективный способ повышения безопасности разрабатываемых приложений и обеспечения соответствия требованиям законодательства РФ. Регулярное выполнение этих тестов позволяет выявлять и устранять уязвимости на ранних этапах разработки, снижая риски и повышая надежность ваших веб-приложений.

РыбинскЛАБ предоставляет полный спектр услуг по разработке безопасных веб-приложений, включая анализ рисков, тестирование на проникновение, разработку безопасного кода и интеграцию инструментов безопасности в CI/CD pipeline. Мы поможем вам обеспечить безопасность ваших приложений и соответствие требованиям законодательства РФ. Обратитесь к нам для получения консультации и оценки стоимости разработки!

Материал подготовлен и отредактирован для практического применения. Перед внедрением в продакшен проверьте код и команды на своём окружении.

Поделиться материалом

Нужна сложная backend-разработка?

Проектирование архитектуры, PHP/Python backend, интеграции API, боты, автоматизация и оптимизация существующих систем.

Обсудить проект
Поддержать проект