P
Purple Team Diary's
@purple_team_diary419 подп.
861просмотров
26 июля 2025 г.
story📷 ФотоScore: 947
Я не root, но всё могу Cчитаете, что без privileged: true или runAsRoot: false вы уже в безопасности? Даже если контейнер работает от обычного пользователя, он всё ещё может обладать опасными привилегиями - благодаря так называемым default capabilities. В Linux права суперпользователя разбиты на отдельные возможности - capabilities. Это позволяет точечно выдавать привилегии, а не всё сразу. Однако по умолчанию Kubernetes предоставляет контейнерам целый набор таких возможностей - даже если не указали ничего явно. Если в securityContext ничего не указано, Pod получает следующий набор default capabilities: CAP_CHOWN - изменение владельца и группы файлов. CAP_DAC_OVERRIDE - игнорирование прав доступа к файлам (чтение, запись, выполнение). CAP_FOWNER - обход проверок при изменении метаданных файлов (например, chmod, utime). CAP_FSETID - управление битами setuid/setgid при изменении файлов. CAP_KILL — отправка сигналов любым процессам (включая SIGKILL). CAP_SETGID / CAP_SETUID - смена GID/UID процесса. CAP_SETPCAP - изменение собственных и чужих capabilities. CAP_SETFCAP - установка capabilities на исполняемые файлы. CAP_NET_BIND_SERVICE - привязка к портам ниже 1024. CAP_NET_RAW — использование RAW-сокетов (например, для ping или сниффинга). CAP_SYS_CHROOT - выполнение chroot. CAP_MKNOD - создание специальных файлов (устройства, FIFO и т.д.). CAP_AUDIT_WRITE - запись в системный аудит. Решение - отключаем все, что не используем: securityContext: capabilities: drop: - ALL Потом включаем то, что понадобится: add: - NET_BIND_SERVICE - CHOWN Для демонстрации, создаем под порождающий процесс с отключением всех capabilities: kubectl apply -f <(cat <<EOF apiVersion: v1 kind: Pod metadata: name: cap-secure-bind spec: containers: - name: python image: python:3.12-slim command: ["python3", "-m", "http.server", "80"] securityContext: runAsUser: 1000 runAsGroup: 1000 allowPrivilegeEscalation: true capabilities: drop: - ALL restartPolicy: Never EOF ) Даже с расширенными привилегиями под упал, так как мы отключили возможности, активированные по умолчанию, в том числе CAP_NET_BIND_SERVICE: kubectl logs cap-secure-bind >>> PermissionError: [Errno 13] Permission denied #DevSecOps
861
просмотров
2294
символов
Нет
эмодзи
Да
медиа

Другие посты @purple_team_diary

Все посты канала →
Я не root, но всё могу Cчитаете, что без privileged: true ил — @purple_team_diary | PostSniper