Перейти к содержанию


Салют 👋,
Данная лабораторная работа посвещена изучению аудита безопасности исходного кода приложения на статический анализ, включая првоерки зависимости. Мы рассмотрим как работать с Semgrep, Checkov, Dependency Check и правилами для них. Аналогично познакомися с maven. Мы разберем как проверить конфигурации безопасности и выявить их не корректность, как произвести чекап.

Для сдачи данной работы также будет требоваться ответить на дополнительыне вопросы по описанным темам.


Структура репозитория лабораторной работы

lab07
├── cheat_check_yuorself.sh
├── docker-compose.yml
├── sast
   ├── checkov-config.yaml
   └── semgrep-rules.yml
├── sca
   ├── dependency-check.sh
   ├── generate_unified_report.sh
   └── pom.xml
└── vulnerable-app
    ├── app.py
    ├── config.yaml
    ├── Dockerfile
    └── requirements.txt

Материал

  • SAST Static Application Security Testing — это статический анализ исходного кода, шаблонов и конфигураций на наличие уязвимостей без выполнения приложения, где:
  • Проверяются исходники, конфиги, Dockerfile, IaC‑файлы, шаблоны, но код не запускается
  • Инструменты SAST ищут небезопасные конструкции SQL‑инъекции, XSS, небезопасное использование криптографии, жёстко заданные секреты и т.п., сравнивая код с набором правил и паттернов
  • Подходит на ранних стадиях разработки: ошибки находят до деплоя, прямо на этапе коммита или CI
  • SCA Software Composition Analysis — анализ сторонних библиотек, зависимостей и компонентов, которые приложение использует, где:
  • Целью является поиск уязвимостей и проблем в сторонних пакетах
  • Инструменты строят «список компонентов» SBOM, сопоставляют версии библиотек с базами уязвимостей NVD, GitHub Advisories и др., а также показывают, какие зависимости нужно обновить
  • Semgrep используется для анализа исходного кода и конфигураций по набору правил, где:
  • Работает по принципу «структурного grep»: ищет не просто строки, а языковые конструкции if, функции, вызовы библиотек, поэтому хорошо подходит для поиска уязвимых паттернов в Python, Java, JavaScript и т.д.
  • Поддерживает готовые правила, в том числе по OWASP Top 10, и кастомные, которые можно описать в YAML
  • Checkov ориентирован на инфраструктуру как код (IaC) и Docker, где:
  • Анализирует Terraform, CloudFormation, Kubernetes‑манифесты, Dockerfile и другие инфраструктурные файлы на ошибки конфигурации, которые могут привести к уязвимостям, как открытые порты, небезопасные политики, отключённая проверка сертификатов и т.п.
  • Подходит для автоматической проверки Docker/IaC в пайплайнах, чтобы не пропускать небезопасные настройки в образах и инфраструктуре
  • OWASP Dependency‑Check для поиска уязвимостей в зависимостях проекта, где
  • Анализирует используемые библиотеки Maven‑зависимости, JAR‑файлы, Python‑пакеты и др., сопоставляет их с базами уязвимостей и выдаёт список известных проблем для конкретных версий по CVE

Задание

  • 1. Разверните и подготовьте окружение для уязвимого приложения
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install -r vulnerable-app/requirements.txt
  • 2. Запустите уязвимое приложение
$ docker-compose -f docker-compose.yml up -d --build # http://localhost:8080
  • 3. Запустите SAST Semgrep и проанализируйте выведенный лог в консоли и опишите логику правил для semgrep-rules.yml исходя из паттернов, которые используются. Отчет будет в директории SAST
$ semgrep --config sast/semgrep-rules.yml \
  --json \
  --output sast/semgrep-report.json \
  vulnerable-app/
  • 4. Запустите SAST Checkov по Dockerfile, compose и проанализируйте выведенный лог в консоли и опишите логику правил для checkov-config.yaml по Docker. Отчет будет в директории SAST
$ checkov \
  --framework dockerfile \
  --file vulnerable-app/Dockerfile docker-compose.yml \
  --output json \
  --output-file-path sast/checkov-report.json \
  --soft-fail
  • 5. Подготовка зависимостей Java и Maven‑скан для проведения SCA. Отчеты будут в директории SCA. Будет ошибка, которую надо поправить, что бы уязвимости определялись или добавить дополнительные уязвимости для их вывода в отчете
$ cd sca
$ ./dependency-check.sh --update # обновление и поставка базы NVD API
$ mvn dependency:resolve
$ mvn dependency:copy-dependencies -DoutputDirectory=./lib # зависимости из $ pom.xml как jar в ./lib
$ mvn org.owasp:dependency-check-maven:check || true # Maven-плагин OWASP
  • 6. Запустите SCA CLI OWASP Dependency-Check для уязвимого приложения. Отчеты будут в директории SCA. Опишите как работает сканирование SCA для pom.xml и app.py
  • 7. Соберите единый отчет из всех сканирований в виде html, csv, json
$ bash sca/generate_unified_report.sh
  • 8. Проанализируйте все уязвимости и обьясните для SAST Checkov сработки статуса Unknown. Классифицируйте их и укажите какие не должны быть в отчетах. Внесите исправления и запустите повторное сканирование и убедитесь, что они устранены. Приложите исправленный файл и отчет без уязвимостей.
  • 9. Опишите выведенные уязвимости для SAST Semgrep и принцип их работы. Поправьте скрипт app.py. Запустите повторное сканирование и убедитесь, что они устранены. Приложите исправленный файл app.py и отчет без уязвимостей.
  • 10. Доработайте SCA уязвимости, что бы они только остались в фиинальной версии отчетов.
  • 11. Проверьте себя по найденным сработкам анализаторов и так вы сможете помочь себе разобраться в ситуации, если возникнут сложности
$ bash cheat_check_yuorself.sh
  • 12. Делайте все коммиты на соответствующих шагах, далее заливайте изменения в удаленный репозиторий.
  • 13. Подготовьте отчет gist.
  • 14. Почистите кеш от venv и остановите уязвимое приложение
$ deactivate
$ rm -rf venv
$ docker-compose -f ххх down
$ docker-compose -f docker-compose.yml down
$ docker system prune -f

Copyright © 2025 Elijah S Shmakov

Logo


Логотип