TGViewer
Нарыл Нарыл @naryl_sec · 1.49K subscribers
Post #39 2.87K
hostPID: true и --pid=host. Часть 3

Часть 1
Часть 2

AppArmor

Еще один LSM, участвующий в защите от доступа к целевому процессу с уровнем ptrace access mode PTRACE_MODE_READ или PTRACE_MODE_ATTACH - AppArmor.

В конфигурации по умолчанию в containerd/docker применяется профиль AppArmor, полученный на основе шаблона. Профиль по умолчанию в containerd называется cri-containerd.apparmor.d, а в docker - docker-default.

Посмотреть имя текущего профиля AppArmor изнутри контейнера можно в файле /proc/self/attr/current

Разрешение для ptrace в шаблоне указано в последней строке:

# suppress ptrace denials when using 'docker ps' or using 'ps' inside a container
ptrace (trace,read,tracedby,readby) peer={{.Name}},


Данная строка означает что можно получать доступ trace (PTRACE_MODE_ATTACH) и read (PTRACE_MODE_READ) только в процессы, запущенные под одноименным профилем AppArmor. Аналогично с входящими запросами в наш процесс на отладку. В комментарии сказано зачем это послабление добавлено - чтобы можно было работать с процессами в рамках одного контейнера. Понятно, что внутри контейнера все процессы под одним профилем.

Но, очевидно, это послабление открывает доступ не только ко всем процессам в контейнере, но и ко всем процессам во всех контейнерах, крутящихся на той же ноде, они все по умолчанию запущены под одним и тем же профилем AppArmor.

Для того чтобы запустить контейнер с отключенным AppArmor нужно в docker добавить к команде run флаг --security-opt=apparmor:unconfined. В kubernetes нужно добавить аннотацию к поду container.apparmor.security.beta.kubernetes.io/<container_name>: unconfined

AppArmor'у плевать на CAP_SYS_PTRACE, поэтому если атакующий может запустить под с hostPID: true и CAP_SYS_PTRACE, но неможет отключить AppArmor - его область атаки - только процессы других контейнеров. Хостовые процессы, запущенные без AppArmor будут ему не доступны.
  • 🔥 5
  • 👍 3
More from @naryl_sec
  1. Sep 9, 2024Gitlab pre_build_script. Part 2 Так что же делать чтобы after_script не выполнялся после п…
  2. Aug 29, 2024Gitlab pre_build_script Иногда есть необходимость дополнительно защитить Gitlab Runner. На…
  3. Aug 19, 2024OFFZONE_CYBERED_SPECIAL - промокод на скидку на воркшопы OFFZONE (не только мой)
  4. Aug 19, 2024🔧 Воркшоп «Ломаем CI/CD 2.0» На воркшопе вы изучите работу с секретами в CI/CD и научитес…
  5. Aug 19, 2024Второй год подряд буду проводить воркшоп на Offzone.
  6. May 24, 2024Запись моего выступления на PHDays: https://phdays.com/forum/broadcast/?talk=645&tag=offen…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →