# Пособие для самостоятельного изучения по теме "Kubernetes Security" ::: danger Безопасность напрямую зависит от того как работает рантайм - система, которая запускает контейнеры или ОС на которой она запускается. Для получения примеров атак можно обратиться к Mitre ATT&CK [тут](https://attack.mitre.org/matrices/enterprise/containers/). ::: Для практического задания будем использовать вот [этот](https://github.com/madhuakula/kubernetes-goat.git) проект. Чтобы его развернуть необходимо выполнить следующие команды: 1. Клонировать репозиторий ``` git clone https://github.com/madhuakula/kubernetes-goat.git ``` 2. Перейти в корневую директорию проекта и выполнить команду: ``` bash setup-kubernetes-goat.sh ``` 3. Запустить команду: ``` minikube service kubernetes-goat-home-service --url ``` Теперь уязвимый кластер доступен по адресу http://127.0.0.1:1234 ::: danger Так как Kubernetes отправляет на ноду долго запрос, возможно придется ждать порядка 5ти минут, чтобы приложение стало доступно по адресу выше. ::: ## Практика Уязвимый кластер дает возможность протестировать уязвимую версию по следующим атакам: ### Раскрытие конфигурационных данных системы контроля версий Атакующий может проводить атаки на сревисы, которые работают внутри кластера путем перебора существующих и несуществующих файлов и директорий. :::info В этом сценарии используется уязвимость приложения, которое расположено в контейнере кластера. ::: Если обратиться по адресу http://127.0.0.1:1230/.git/config, то можно заметить, что доступна скрытая директория .git, при автоматическом деплое эту директорию могут скопировать на сервер автоматически. Далее директорию можно скачать с помощью wget -r команды или испоьзовать инструменты из [этого](https://github.com/internetwache/GitTools) репозитория. Полученные данные далее можно изучать локально с. помощью обычного git. ### RCE в контейнере Сценарий доступен на порту http://127.0.0.1:1231/ Уязвимость представляет собой одну из проблем связанных с инйекциями команд. Параметры передаваемые приложению не проходят необходимых проверок и из-за этого атакующий может выполнять команды в контейнере. Пример данных для запроса - 127.0.0.1;whoami Остальные сценарии тестирования предлагается пройти самостоятельно используя материалы, которые приведены ниже. Так же необходимо предложить исправление настроек kubernetes, где это возможно, чтобы пропала возможность атаковать инфраструктуру: - Получать доступ к API серверу без предоставления аутентификационных данных - Убегать из контейнера ## Полезные ресурсы - https://dodcio.defense.gov/Portals/0/Documents/Library/DevSecOpsReferenceDesign.pdf - https://github.com/kubernetes-sigs/security-profiles-operator - https://www.container-security.site/general_information/container_cve_list.html - https://0xn3va.gitbook.io/cheat-sheets/container/escaping - https://blog.quarkslab.com/kdigger-a-context-discovery-tool-for-kubernetes.html - https://github.com/inguardians/peirates - https://res.cloudinary.com/snyk/image/upload/v1551798390/Docker_Image_Security_Best_Practices_.pdf