Салют ,
Данная лабораторная работа посвещена изучению аудита безопасности исходного кода приложения на статический анализ, включая првоерки зависимости. Мы рассмотрим как работать с 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. Разверните и подготовьте окружение для уязвимого приложения
- 2. Запустите уязвимое приложение
- 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
- 8. Проанализируйте все уязвимости и обьясните для SAST Checkov сработки статуса
Unknown. Классифицируйте их и укажите какие не должны быть в отчетах. Внесите исправления и запустите повторное сканирование и убедитесь, что они устранены. Приложите исправленный файл и отчет без уязвимостей. - 9. Опишите выведенные уязвимости для SAST Semgrep и принцип их работы. Поправьте скрипт
app.py. Запустите повторное сканирование и убедитесь, что они устранены. Приложите исправленный файлapp.pyи отчет без уязвимостей. - 10. Доработайте SCA уязвимости, что бы они только остались в фиинальной версии отчетов.
- 11. Проверьте себя по найденным сработкам анализаторов и так вы сможете помочь себе разобраться в ситуации, если возникнут сложности
- 12. Делайте все коммиты на соответствующих шагах, далее заливайте изменения в удаленный репозиторий.
- 13. Подготовьте отчет
gist. - 14. Почистите кеш от
venvи остановите уязвимое приложение
$ deactivate
$ rm -rf venv
$ docker-compose -f ххх down
$ docker-compose -f docker-compose.yml down
$ docker system prune -f
Links
- Docker
- Markdown
- Gist
- GitHub CLI
- OWASP Top Ten и Software Composition Analysis
- OWASP Dependency-Check
- Semgrep CLI – Local scans
- Semgrep CLI reference
- Checkov CLI Command Reference
- Checkov
- GitHub Docs
Copyright © 2025 Elijah S Shmakov

