---
# System prepended metadata

title: Пособие для самостоятельного изучения по теме "Kubernetes Security"

---

# Пособие для самостоятельного изучения по теме "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