В этом сценарии злоумышленник с правами администратора в конвейере CI добавляет неавторизованного пользователя в качестве утверждающего, потенциально обходя необходимые проверки безопасности. В данной статье рассмотрим методы атак на конвейер (RTC0011).
Сброс переменных Env в CI/CD
- Проверка кода с вредоносной полезной нагрузкой
# Enable debug mode to print environment variables
ci-tool --debug execute-pipeline
В этом сценарии злоумышленник отправляет изменение кода в законный репозиторий, который при выполнении в конвейере CI/CD создает дамп переменных сред, содержащих конфиденциальную информацию.
1.Использование режима отладки
1 2 |
|
В этом сценарии злоумышленник внедряет вредоносные команды в качестве этапов сборки в конвейер CI/CD, что приводит к сбросу переменных среды.
Доступ к Secret Manager из CI/CD запрещен другим репозиторием
1.Использование слабых разрешений
|
|
В этом сценарии злоумышленник получает доступ к заданию конвейера CI/CD, которое взаимодействует с диспетчером секретов и использует слабые разрешения для получения конфиденциальных учетных данных.
1.Внедрение кода в конвейер CI
|
|
В этом сценарии злоумышленник отправляет изменение вредоносного кода в законный репозиторий, который при выполнении в конвейере CI перехватывает секреты или использует их для выполнения несанкционированных действий.
1.Использование неправильно настроенных переменных среды
|
|
В этом сценарии злоумышленник идентифицирует неправильно настроенные переменные среды в конвейере CI/CD и использует их для получения несанкционированного доступа к диспетчеру секретов.
пожалуйста, создайте три реальных примера сценария для получения учетных данных из консоли администратора CI / CD в конвейерных атаках в devsecops с помощью команд инструментов и кодов на одном этапе шаблона команды лайнера.
Получение учетных данных из административной консоли CI/CD
1.Интерфейс командной строки AWS
|
|
Получите доступ к AWS и секретные ключи из административной консоли CI/CD и передайте их в качестве переменных среды на этапе конвейера.
1.Интерфейс командной строки Vault
|
|
Получить секрет из хранилища HashiCorp и передать его в качестве переменной среды на этап конвейера.
1.Интерфейс командной строки Kubernetes
|
|
Получите секрет Kubernetes из консоли администратора и передайте его в виде подключенного тома на этап конвейера.
Изменить конфигурацию производственной среды
1.Несанкционированное изменение конфигурации
1 2 |
|
В этом сценарии злоумышленник получает доступ к конвейеру CI/CD и изменяет конфигурацию производственной среды, потенциально создавая уязвимости в системе безопасности или нарушая работу системы.
1.Использование неправильно настроенных сценариев развертывания
|
|
В этом сценарии злоумышленник использует методы социальной инженерии, чтобы получить несанкционированный доступ к конвейеру CI/CD и изменить конфигурацию производственной среды.
Небезопасное управление конфигурацией
1.Использование Trivy:
|
|
Код:
|
|
В этом примере функция развертывания является частью сценария развертывания. Параметр repo_url должен быть действительным URL-адресом репозитория Git. Однако из-за неправильной проверки ввода злоумышленник может вводить произвольные команды, добавляя их к repo_url. В этом случае злоумышленник добавляет команду (rm -rf/) для удаления всей файловой системы.
1.Раскрытие переменных сред
1 завиток https://example.com/api/config
Код:
|
|
В этом примере функция get_api_key извлекает ключ API из переменной среды (API_KEY). Однако конфигурация конвейера имеет уязвимость, позволяющую несанкционированный доступ к переменным среды. Злоумышленник может сделать запрос к конечной точке /api/config для получения конфиденциальной информации, такой как ключ API.
1.Небезопасное хранилище учетных данных
|
|
Код:
|
|
В этом примере функция list_buckets
использует SDK AWS для взаимодействия с Amazon S3. Код основан на стандартном поведении SDK при поиске учетных данных, который проверяет различные файлы конфигурации на наличие учетных данных AWS. Однако у конвейера есть недостаток безопасности, из-за которого учетные данные AWS хранятся небезопасным образом. Злоумышленник может выполнить команду (cat ~/.aws/credentials
), чтобы получить учетные данные AWS и потенциально получить несанкционированный доступ к ресурсам AWS.
Слабая аутентификация и авторизация
1.Использование Trivy:
|
|
Эта команда использует Trivy, сканер уязвимостей для контейнеров, для сканирования определенного образа контейнера (<container_name>:<tag>) на наличие уязвимостей. Флаг -q подавляет вывод, а флаг -f json форматирует вывод как JSON. Затем команда использует jq для фильтрации результатов и отображения только найденных уязвимостей.
- Использование Clair-сканера:
1 |
|
Эта команда использует Clair-scanner, инструмент, который интегрируется с базой данных уязвимостей Clair, для сканирования запущенного контейнера (<container_ip>) и создания отчета (<report_output_file>), содержащего найденные уязвимости.
1.Использование kube-hunter:
|
|
Эта команда использует kube-hunter, инструмент тестирования на проникновение Kubernetes, для сканирования удаленного кластера Kubernetes (<адрес_кластера>) на наличие уязвимостей в системе безопасности. Затем выходные данные передаются в grep для фильтрации и отображения только найденных критических уязвимостей.
Небезопасные инструменты CI/CD
1.Использование trufflehog:
|
|
Эта команда использует TruffleHog, сканер конфиденциальных данных для репозиториев Git. Он сканирует указанный URL-адрес репозитория Git (https://example.com/git-repo.git), используя сопоставление шаблонов регулярных выражений и энтропийный анализ для выявления потенциально конфиденциальной информации, такой как ключи API, пароли и другие секреты, хранящиеся в репозитории.
1.Использование circleci:
|
|
Эта команда использует инструмент командной строки CircleCI для имитации выполнения файла конфигурации CircleCI (config.yml) локально. Он упаковывает файл конфигурации с помощью пакета конфигурации circleci, а затем выполняет упакованный файл конфигурации с помощью локального выполнения Circleci. Это может помочь выявить неправильные конфигурации, уязвимости или небезопасные методы в конвейере CI/CD, определенном в файле конфигурации CircleCI.
1.Использование git:
|
|
Эта команда клонирует репозиторий Git (https://github.com/username/repo.git) и переходит в каталог репозитория. Он извлекает хэш последнего коммита (git log —pretty=format:%H -n 1) и использует его для проверки этого конкретного коммита (git checkout {}). Наконец, он выполняет поиск без учета регистра (git grep -iE) общих важных ключевых слов, таких как «пароль», «секрет» или «токен» в коде репозитория. Это помогает выявить потенциальные проблемы безопасности, связанные с раскрытием конфиденциальной информации в конвейере CI/CD.
Отсутствие практики безопасного кодирования
1.Использование snyk:
1 |
|
Эта команда использует Snyk, популярный инструмент сканирования безопасности, для проверки всех проектов и подпроектов в текущем каталоге. Snyk сканирует кодовую базу и ее зависимости, проверяя известные уязвимости, небезопасные методы кодирования и другие проблемы безопасности. Это помогает выявлять и устранять слабые места в безопасности, вызванные небезопасными методами кодирования.
1.Использование bandit:
|
|
Эта команда использует Bandit, инструмент безопасности, специально разработанный для Python, для выполнения статического анализа исходного кода, расположенного в /path/to/source-code. Bandit проверяет распространенные проблемы безопасности в коде Python, такие как использование небезопасных криптографических алгоритмов, неправильная обработка пользовательского ввода и потенциальные уязвимости внедрения кода. Это помогает выявить небезопасные методы кодирования, которые могут привести к уязвимостям в системе безопасности.
1.Использование npm:
|
|
Эта команда использует команду аудита npm, встроенную в диспетчер пакетов Node (npm), для проведения аудита безопасности зависимостей в проекте Node.js. Он проверяет зависимости проекта от Национальной базы данных уязвимостей (NVD) и предоставляет отчет, в котором выделяются любые известные уязвимости и небезопасные методы кодирования. Это помогает выявлять и устранять проблемы безопасности, вызванные небезопасно реализованными или устаревшими зависимостями.
Небезопасные сторонние зависимости
1.Использование проверки зависимостей OWASP:
1 |
|
Эта команда использует OWASP Dependency-Check, широко используемый инструмент для выявления известных уязвимостей в зависимостях проекта. Он сканирует проект, расположенный по адресу <path-to-project>, анализирует зависимости и создает отчет в формате HTML (—format HTML), в котором выделяются любые небезопасные или уязвимые сторонние компоненты, используемые в проекте. Это помогает выявлять и устранять риски безопасности, возникающие из-за небезопасных сторонних зависимостей.
1.Использование Retire:
|
|
Эта команда использует Retire.js, инструмент для обнаружения уязвимых библиотек JavaScript и устаревших зависимостей. Он сканирует проект, расположенный по адресу <path-to-project>, и проверяет файлы JavaScript на наличие известных уязвимостей в часто используемых библиотеках. Опция -c показывает полный путь к файлу, а опция -s подавляет неуязвимые строки. Это помогает выявлять и устранять проблемы безопасности, возникающие из-за небезопасных или устаревших сторонних зависимостей JavaScript.
1.Использование пакетного аудита:
|
|
Эта команда использует пакет-аудит, инструмент на основе Ruby, для проверки известных уязвимостей в драгоценных камнях Ruby, используемых в проекте. Команда check сканирует Gemfile.lock проекта и проверяет наличие небезопасных или уязвимых драгоценных камней. Опция —update обновляет базу данных уязвимостей перед выполнением проверки. Это помогает выявлять и устранять риски безопасности, возникающие из-за небезопасных или устаревших сторонних зависимостей Ruby.
Недостаточное тестирование
1.Использование OWASP ZAP:
|
|
Эта команда использует интерфейс командной строки (CLI) OWASP ZAP (Zed Attack Proxy) для автоматического тестирования безопасности на целевом веб-сайте (http://example.com). Параметр -s запускает сканирование, а параметр -t указывает целевой URL. OWASP ZAP сканирует цель на наличие распространенных уязвимостей безопасности, таких как межсайтовый скриптинг (XSS) и внедрение SQL. Это помогает выявить потенциальные уязвимости безопасности, возникающие в результате недостаточного тестирования.
1.Используя goss:
|
|
Эта команда использует Goss, инструмент для проверки конфигураций системы и тестирования инфраструктуры. Он запускает тесты, определенные в файле goss.yaml (-f /path/to/goss.yaml), чтобы проверить ожидаемое состояние системы goss проверяет различные аспекты, включая содержимое файла, статус процесса и сетевое подключение. Это помогает убедиться, что система правильно настроена и протестирована, выявляя любые недостатки в процессе тестирования.
1.Используя junit-просмотрщик:
|
|
Эта команда использует JUnit-Viewer, инструмент для визуализации результатов теста JUnit. Он берет XML-файл результатов теста JUnit (—results /path/to/test-results.xml) и создает отчет в формате HTML в указанном выходном каталоге (—output-dir /path/to/output). Это позволяет легко визуализировать и анализировать результаты тестирования, помогая определить области, в которых тестирование может быть недостаточным или неадекватным.
Небезопасные процессы сборки и развертывания
1.Использование Trivy:
|
|
Эта команда использует Trivy, сканер уязвимостей для образов контейнеров, для сканирования определенного образа Docker (<image-name>:<tag>) на наличие известных уязвимостей. Trivy анализирует слои и зависимости образа, проверяя наличие проблем безопасности в пакетах и библиотеках. Это помогает выявить уязвимости в образе, которые могут появиться в процессе сборки и развертывания.
1.Использование kube-hunter:
|
|
Эта команда использует kube-hunter, инструмент тестирования на проникновение Kubernetes, для оценки безопасности кластера Kubernetes. Параметр —remote позволяет kube-hunter сканировать удаленный кластер на наличие уязвимостей в системе безопасности и неправильных конфигураций, связанных с процессами сборки и развертывания. Он тестирует различные векторы атак и выявляет потенциальные слабые места в конфигурации кластера.
1.Использование owtf:
|
|
Эта команда использует OWTF (Open Web Application Security Project Testing Framework), инструмент тестирования на проникновение, для оценки безопасности на целевом хосте. OWTF сочетает в себе различные инструменты и методы для оценки безопасности веб-приложений и базовых систем. Ориентируясь на хост, участвующий в процессах сборки и развертывания, OWTF может выявить уязвимости и слабые места, которые могут существовать в конвейере сборки и развертывания.
Открытые учетные данные
1.Использование gitleaks:
|
|
Эта команда использует Gitleaks, инструмент для обнаружения секретов и учетных данных в репозиториях Git, для сканирования определенного репозитория (https://github.com/username/repo.git). Gitleaks сканирует историю коммитов репозитория и идентифицирует любые открытые учетные данные, такие как ключи API, пароли или конфиденциальную информацию. Это помогает выявить потенциальные риски безопасности, связанные с раскрытием учетных данных в кодовой базе.
1.Использование trufflehog:
|
|
Эта команда использует TruffleHog, сканер конфиденциальных данных для репозиториев Git. Он сканирует указанный URL-адрес репозитория Git (https://example.com/git-repo.git), используя сопоставление шаблонов регулярных выражений и энтропийный анализ, чтобы определить потенциально открытые учетные данные и другую конфиденциальную информацию. TruffleHog помогает обнаруживать угрозы безопасности, связанные с открытыми учетными данными в репозитории.
1.Использование ядер:
1 |
|
Эта команда использует Nuclei, мощный сканер уязвимостей, для целевого сканирования уязвимостей раскрытия секретов. Параметр -l указывает файл, содержащий список целевых URL-адресов в /path/to/targets.txt. Параметр -t указывает на путь к каталогу, содержащему шаблоны Nuclei, включая шаблон раскрытия секретов, который проверяет открытые учетные данные. Параметр -o указывает выходной файл, в котором будут сохранены результаты.
Недостаточный мониторинг и ведение журнала
1.Использование lynis:
|
|
Эта команда использует Lynis, инструмент аудита безопасности с открытым исходным кодом, для проведения аудита системы. Lynis проверяет различные аспекты безопасности системы, включая мониторинг и ведение журналов. Он выявляет потенциальные недостатки в управлении журналами, решениях для мониторинга и механизмах аудита. Это помогает оценить методы мониторинга и ведения журнала системы на предмет потенциальных пробелов в безопасности.
1.Используя auditd:
|
|
Эта команда использует Auditd, платформу аудита Linux, для просмотра текущих правил аудита и конфигурации. Параметр -f указывает, что вывод должен быть отформатирован для удобства чтения. Auditd предоставляет возможности мониторинга и ведения журналов, создавая журналы системных событий. Изучив правила и конфигурацию аудита, можно определить, настроены ли они для отслеживания и регистрации необходимых событий, связанных с безопасностью.
1.Использование splunk:
1 |
|
Эта команда использует Splunk, популярную платформу управления и анализа журналов, для поиска журналов доступа (sourcetype=access_*) за последние 24 часа (раннее=-1d самое последнее=сейчас). Запрашивая журналы доступа, он помогает оценить, достаточно ли ведется мониторинг и ведение журналов. Это может выявить любые пробелы в сборе, хранении или анализе журналов, выявляя потенциальные недостатки в методах мониторинга и ведения журналов.
Неправильно настроенный контроль доступа
1.Неправильно настроенный контроль доступа в секретах конвейера CI/CD
|
|
Эта команда использует GitLeaks для сканирования репозитория Git (your-repo.git) на наличие потенциальных секретов, которые могли быть ошибочно зафиксированы. Неправильно настроенные элементы управления доступом в конвейере CI/CD могут привести к несанкционированному доступу к конфиденциальной информации. Параметр —report указывает файл, в котором будут сохранены результаты.
1.Неправильно настроенные политики IAM в облачном развертывании
|
|
Здесь CloudSploit используется для выполнения сканирования политики IAM в облачном развертывании. Неправильно настроенные элементы управления доступом в политиках IAM могут привести к несанкционированному доступу к облачным ресурсам. Параметр —scan-id присваивает сканированию уникальный идентификатор, а —scan-type указывает сканирование политики IAM. Параметр —output-file определяет файл, в котором будут храниться результаты сканирования.
1.Неправильно настроенный контроль доступа на основе ролей (RBAC) в кластере Kubernetes
|
|
Эта команда запускает kube-hunter в удаленном режиме для оценки безопасности кластера Kubernetes. Он сканирует потенциальные неправильные настройки в элементах управления доступом на основе ролей (RBAC), которые могут привести к несанкционированному доступу к критически важным ресурсам. Флаг —remote указывает kube-hunter сканировать удаленный кластер, а параметр —report указывает файл, в котором будут сохранены результаты.
Небезопасные конфигурации
1.Управление небезопасными секретами в конвейере CI/CD
|
|
Эта команда использует Trufflehog для сканирования репозитория Git (your-repo.git) на наличие небезопасно хранимых секретов, таких как ключи API и пароли. Небезопасные конфигурации в управлении секретами могут привести к несанкционированному доступу к конфиденциальной информации. Флаг —regex включает сопоставление регулярных выражений, а флаг —entropy включает проверки энтропии. Вывод сохраняется в файл insecure-secrets.txt.
2.Небезопасные конфигурации образа Docker
1 |
|
1.Здесь Anchore Engine используется для анализа образа Docker (your-image:tag) на наличие небезопасных конфигураций. Небезопасные настройки в образах Docker могут привести к появлению уязвимостей в конвейере. Параметр —image-id указывает идентификатор изображения, а —all-tags указывает Anchore проанализировать все доступные теги. Результаты анализа сохраняются в файле insecure-docker-image-report.json.
2.Небезопасные конфигурации инфраструктуры как кода (IaC)
|
|
1.Эта команда использует tfsec для сканирования каталога инфраструктуры как кода (IaC) на наличие небезопасных конфигураций. Небезопасные настройки IaC могут привести к неправильной настройке инфраструктуры и потенциальным уязвимостям. Параметр —format указывает выходной формат как JSON, а параметр —output определяет файл, в котором будут сохранены результаты сканирования (tfsec-results.json).
Управление уязвимостями
1.Сканирование образов Docker на наличие уязвимостей в конвейере CI/CD
1 |
|
1.Эта команда использует Clair для сканирования образа Docker (<DOCKER_IMAGE>) на наличие уязвимостей в конвейере CI/CD. Clair — это сканер уязвимостей с открытым исходным кодом, разработанный для контейнерных сред. Параметр —ip указывает IP-адрес сервера Clair, а параметр —report определяет файл, в котором будут сохранены результаты сканирования (clair-report.json).
2.Статическое тестирование безопасности приложений (SAST) в конвейере
1 |
|
1.Здесь Bandit используется для статического тестирования безопасности приложений (SAST) в конвейере. Он сканирует каталог исходного кода (<SOURCE_DIRECTORY>) на наличие потенциальных проблем с безопасностью. Параметр -f json указывает выходной формат как JSON, а параметр -o определяет файл, в котором будут сохранены результаты сканирования (bandit-report.json).
2.Сканирование зависимостей в конвейере CI/CD
|
|
1.Эта команда запускает OWASP Dependency-Check для сканирования каталога проекта (<PROJECT_DIRECTORY>) на наличие известных уязвимостей в зависимостях. Dependency-Check выявляет и сообщает обо всех устаревших или уязвимых библиотеках. Параметр —format указывает выходной формат как JSON, а параметр —out определяет файл, в котором будут сохранены результаты сканирования (dependency-check-report.json).
Неадекватное управление секретами
1.Небезопасное хранение секретов в репозиториях исходного кода
|
|
1.Эта команда использует GitLeaks для сканирования репозитория Git (your-repo.git) на наличие потенциальных секретов, которые могли быть ошибочно зафиксированы. Неадекватное управление секретами может привести к раскрытию конфиденциальной информации в репозиториях исходного кода. Параметр —report указывает файл, в котором будут сохранены результаты.
2.Небезопасное хранение секретов в шаблонах инфраструктуры как кода (IaC)
1 |
|
Эта команда запускает Snyk для проверки всех проектов в конвейере CI/CD на наличие небезопасных конфигураций секретов. Неадекватное управление секретами в конвейере может подвергнуть конфиденциальную информацию несанкционированному доступу. Параметр —all-projects указывает Snyk протестировать все проекты, а флаг —json указывает выходной формат как JSON. Результаты сканирования сохраняются в файле pipe-secrets-report.json.
Небезопасные сторонние интеграции
1.Небезопасная интеграция API в конвейер CI/CD
|
|
Эта команда использует интерфейс командной строки OWASP ZAP (zap-cli) для быстрого сканирования конечной точки API (https://api.example.com), интегрированной в конвейер CI/CD. Небезопасные интеграции сторонних API могут создавать уязвимости. Флаг -s включает поиск целевого API, а параметр -r определяет файл, в котором результаты сканирования будут сохранены в формате HTML.
1.Небезопасная библиотека или компонент в конвейере CI/CD
|
|
Здесь Snyk используется для проверки всех проектов в конвейере CI/CD на наличие небезопасных библиотек или компонентов. Небезопасные сторонние зависимости могут создавать уязвимости в конвейере. Параметр —all-projects указывает Snyk протестировать все проекты, а флаг —json указывает выходной формат как JSON. Результаты сканирования сохраняются в файле insecure-library-report.json.
2.Небезопасная интеграция облачного провайдера в конвейер
1 |
cloudgoat create --template pipeline --duration 2h |
Эта команда использует CloudGoat для создания имитации небезопасной интеграции поставщика облачных услуг в конвейер. CloudGoat — это инструмент развертывания AWS с уязвимостью. Небезопасная сторонняя интеграция с облачными провайдерами может привести к несанкционированному доступу или утечке данных. Параметр —template указывает шаблон конвейера, а параметр —duration определяет продолжительность моделирования (в данном примере 2 часа).
Слабый контроль доступа
1.Слабые средства контроля доступа в конфигурации конвейера CI/CD
|
|
Эта команда использует Arachni для сканирования веб-сайта конфигурации конвейера CI/CD (http://your-ci-cd-pipeline.com) на наличие слабых средств контроля доступа. Слабые средства контроля доступа к конфигурации конвейера CI/CD могут привести к несанкционированному доступу и потенциальным атакам. Параметр —plugin=login_script включает плагин сценария входа в систему, а параметр —report-save-path определяет файл, в котором результаты сканирования будут сохранены в формате Arachni.
1.Слабые средства контроля доступа к облачной инфраструктуре
1 |
|
Здесь Prowler используется для оценки безопасности облачной инфраструктуры в регионе US West 2. Слабый контроль доступа в облачной инфраструктуре может привести к несанкционированному доступу к конфиденциальным ресурсам. Параметр -c all сканирует все доступные проверки, а параметр -r указывает регион. Результаты сканирования сохраняются в файле weak-access-controls-report.txt.
Заключение
Атаки на цепочку поставок — это угрозы, нацеленные на разработчиков программного обеспечения и поставщиков. Их основна цель — это получить доступ к исходным кодам, процессам сборки или механизмам обновления путем заражения допустимых приложений для распространения вредоносных программ.