Мир сегодня с "Юрий Подоляка"
Мир сегодня с "Юрий Подоляка"
Труха⚡️Україна
Труха⚡️Україна
Николаевский Ванёк
Николаевский Ванёк
Труха⚡️Україна
Труха⚡️Україна
Николаевский Ванёк
Николаевский Ванёк
Лёха в Short’ах Long’ует
Лёха в Short’ах Long’ует
k8s (in)security avatar
k8s (in)security
k8s (in)security avatar
k8s (in)security
Замечательная статья "Runtime Security and the Role of eBPF/BPF-LSM", которая достаточно понятно объясняет как работает настоящий prevention (предотвращение) в Linux с помощью eBPF.

В качестве подопытных рассматриваются Falco, Tetragon и KubeArmor - все с разными подходами к реализации. Первые два не дают никакого предотвращения, а только реагирование. Falco из user space отправляет kill сигнал, а tetragon из kernel space отправляет bpf_send_signal(). Это характерно не только им, но и всем реализациям, которые опираются не на Linux Security Modules (LSM). И если вам рассказывают/заявляют обратное, то вам попросту врут.

У нас в Luntry есть функциональность для обнаружения, реагирование со сбором артефактов, предотвращения на базе AppArmor (он опирается на LSM) и уже на подходе собственная реализация предотвращения на базе eBPF-LSM.

Более детально мы сравнивали различные security runtime-решения в вебинаре "Runtime Security: на вкус и цвет все фломастеры разные".
20.01.202504:47
Начнем эту неделю со статьи "Reproducing CVE-2024-9042: Command Injection in Windows Kubernetes Nodes" про CVE-2024-9042, которая описывается вендором: Command Injection affecting Windows nodes via nodes/*/logs/query API. Ключевые моменты:

- Только Windows
- Должен быть включен NodeLogQuery feature gate (по умолчанию сейчас выключен и эту ручку упоминали тут)
- pattern параметр этой фичи напрямую передается в Powershell без фильтрации
- command injection любым пользователем и service account с правами GET на nodes/logs
- Позволяет выполнять команды на всех Windows нодах от NTAuthority\system

Вот как-то само собой так получается, что когда мы рассказываем [1,2] про Kubernetes в Windows мире, это обязательно про какие-то баги. И при этом эти баги не проходные, а которые действительно могут быть очень полезны атакующему.

P.S. Кто-нибудь Kubernetes кластера на Windows держит или игрался с ними?
Простая и понятная визуализация на тему как выбрать соответствующий Distroless образ от Google для вашего приложения.

О том что distroless бывают разные мы писали тут. И не забываем что там не все идеально - об этом писали тут ;)

Ну и вообще не только Google такое делает. И вообще можно это делать своими руками.
Начнем новую неделю с замечательного туториала "How to Build Smaller Container Images: Docker Multi-Stage Builds". Основная задача материала научить делать маленькие/тонкие и более безопасные образы для приложений. Одним из основных посылов является: "build and runtime images should also be completely separate!". Из статьи вы узнаете:

1) Как делать не надо.
2) Что такое Multi-Stage сборки
3) Примеры Multi-Stage сборки для Node.js, Go, Rust, Java, PHP
23.01.202505:04
Неприятная история случилась с Kong Ingress Controller в конце прошлого года – в прод попал образ, содержащий в себе майнер XMRig. Таймлайн происходящего был таков:

1) 28 августа 2024 года разработчики из Kong исправляют свои пайплайны меняя pull_request на pull_request_target
2) 25 ноября 2024 года они получают анонимный отчет от исследователя безопасности о том, что их репозиторий подвержен атаке Pwn request. После этого мейнтейнеры провели ротацию всех секретов в репозитории и вернули триггерное событие обратно на pull_request. Но только для главной ветки. Так что старые неиспользуемые ветки продолжили использовать pull_request_target, а значит были уязвимы.
3) Спустя почти два месяца, а именно 23 декабря 2024 года атакующие начали разведку – они получили доступ к секретам, в том числе к персональному токену доступа GitHub, проэксплуатировав уязвимость в одном из репозиториев.
4) Примерно через 22 часа – 24 декабря злоумышленники перешли на основной репозиторий с полученным на предудыщем шаге access token. Они запушили образ docker.io/kong/kubernetes-ingress-controller на Dockerhub с тегом 3.4.
5) 29 декабря 2024 года 4 пользователя отметили в issue на GitHub, что запуск Kong Ingress Controller приводит к аномально высокой нагрузке на ЦП.
6) 2 января 2025 мейнтейнеры подтвердили, что образ был скомпрометирован, а вунтри него содержался XMRig.

Более подробно о всей ситуации можно почитать в блоге KIC тут. Также было опубликовано YARA правило для обнаружения таких нагрузок.
17.01.202505:04
Вышло очередное новое видео из серии Kubernetes Security Fundamentals от Rory McCune. Это видео про Authentication, а вернее о том как работает аутентификация учетных записей сервисов в Kubernetes. Видео доступно по ссылке тут.
Сегодня вновь затронем тему eBPF, а точнее observability зашифрованного трафика с помощью этой технологии – статья "What Insights Can eBPF Provide into Real-Time SSL/TLS Encrypted Traffic and How?" как раз об этом.

Автор рассматривает две функции – SSL_write() для записи данный (используется для перехвата данных, записанных клиентом, но еще не зашифрованных) и SSL_read() для чтения данных из SSL соединения. Эта функция позволяет перехватить расшифрованные данные, а также разобрать код ответа.

Самое интересное, что даже не нужны сертификаты TLS/SSL для расшифровки или шифрования трафика. Это позволяет наблюдать за протоколом приложения как до шифрования, так и после расшифровки.

Если говорить про перформанс, то такой способ даёт оверхед, хоть и всего 0.2 мкс. Кроме того, средняя нагрузка на процессор, создаваемая каждым хуком, выглядит следующим образом: 0,1% для uprobe/SSL_write*, 0,007% для uprobe/SSL_read* и 0,3% для uretprobe/SSL_read. Замеры проводились на 1000 запросах для каждого HTTP метода.
02.11.202405:01
Rory McCune, чьи исследования мы не раз упомянали на канале, начал новую серию статей – на этот раз, посвященную Kubernetes network security.

Первая статья из цикла – The Many IP Addresses of Kubernetes. В ней автор объясняет сложность сетевых IP-адресов в Kubernetes, где используются три основные IP-диапазона: адреса для Nodes, overlay сети для Pods и сети для Service. Также на примере разбирается как Kubernetes связывает IP на уровне ОС с помощью iptables, управляемых kube-proxy.
22.01.202505:00
На Хабре вышла наша статья "Безопасность Kubernetes-кластеров: вредные советы или bullshit bingo", которая по сути является текстовым представлением нашего выступления с DevOpsConf 2024. В общем, для тех кому ближе текст, а не видео. И как всегда задавайте любые вопросы в комментариях!
Сегодня мы вам рекомендуем изучить статью "Building Container Images FROM Scratch: 6 Pitfalls That Are Often Overlooked" (Иван продолжай в том же духе ;)). Название говорит само за себя. Все с наглядными примерами проблем и их решениями.
08.11.202405:00
Продолжая тематику Kubernetes Network Security, Rory McCune представил новую заметку в своем блоге – Exploring A Basic Kubernetes Network Plugin.

Статья объясняет, как в Kubernetes кластере Pods получают IP-адреса через сетевые плагины, соответствующие спецификации CNI. В примере используется kind с плагином kindnetd.

Конфигурация сети хранится в файле 10-kindnet.conflist, где указаны IP-диапазоны для каждого узла. Для маршрутизации трафика между подами на разных узлах kindnetd создает записи в таблице маршрутизации. В завершение автор отмечает, что работа с сетью в Kubernetes может быть сложной и зависит от выбранного сетевого плагина.
Сегодняшним постом продолжаем тематику наступательной безопасности в Kubernetes, а именно – рассмотрим механизм Proxy в Kubernetes API Server.

Наверняка вы знаете, что Kubernetes API Server может выступать в качестве HTTP-прокси сервера, позволяя пользователям с соответствующими правами (create nodes/proxy, pods/proxy) получить доступ к Nodes или Pods.

Очевидно, что kubectl proxy позволяет по сути экспулатировать SSRF, поэтому рассмотрим несколько интересных способов использования этой функциональности:

1) Проксирование на адреса вне кластера

Бага 2019 года (упоминали про неё на канале тут), но она всё еще работает. Всё что нужно – это перезаписать IP адрес в поле status в манифесте Pod, а затем проксировать запросы на этот адрес. Однако, это может вызвать некоторые сложности, т.к Kubernetes распознает это изменение как ошибку и изменяет значение на действительный IP-адрес, поэтому вам придется зацикливать запросы, чтобы сохранить его установленным на нужное вам значение:



2) SSRF через Fake Node

Если у вас есть возможность создавать Nodes, то в манифесте достаточно указать желаемый адрес, для того чтобы проксировать туда запросы:





3) CVE-2020-8562 – Обход blacklist

Эксплуатация уязвимости типа TOCTOU, на данный момент не имеющей патча, будет особенно интересна, если вы находитесь в окружении облачного провайдера без возможности делать запросы на 169.254.169.254. Прибегнув к известной технике для эксплуатации SSRFDNS rebinding можно обойти это ограничение, для этого, например, можно воспользоваться сервисом rebinder.

Про эти и другие способы использования kubectl proxy рассказал Rory McCune в своей статье "Exploring the Kubernetes API Server Proxy".
Первая конференция в 2025-ом году, которая зацепила наше внимание – ShmooCon 2025. Там было много интересных докладов, в том числе там был доклад и про Kubernetes Security – "A Commencement into Real Kubernetes Security (Jay Beale and Mark Manning)".

В докладе авторы рассказывают много чего интересного – затрагивают проблемы system call filtering system, приводящие к TOCTOU, говорят про инструменты для генерации и управления seccomp профилями в Kubernetes, показывают демо работы с инструментами peirates и KubeHound (1, 2).

Также в докладе был упомянут новый инструмент Seccomp-Diff, который может сравнивать Seccomp профили двух контейнеров и подсвечивать наиболее опасные системные вызовы. Может работать как CLI, так и через веб-приложение.
Тем временем, в предверии конференции KubeCon + CloudNativeCon NA 2024, вышла новая версия Kyverno1.13. Основных изменений не так много:

- добавлена поддержка подписей images, использующих sigstore bundle
- добавлена поддержка PolicyExceptions для ValidatingAdmissionPolicies сгенерированных из Kyverno политик (используя subrule validate.cel)

Также нельзя не упомянуть о ломающих изменениях:

1) С версии 1.13 у контроллеров Kyverno отобраны wildcard разрешения на просмотр всех ресурсов. Это изменение может повлиять на отчеты, а также на политики mutate и generate на пользовательских ресурсах, поскольку контроллер больше не сможет просматривать пользовательские ресурсы
2) CVE-2024-48921 позволяла пользователям с возможностью создавать PolicyExceptions обходить ClusterPolicy в конкретном неймспейсе.
Көрсетілген 1 - 14 арасынан 14
Көбірек мүмкіндіктерді ашу үшін кіріңіз.