DevSecOps Talks
7.06K subscribers
70 photos
85 files
1.08K links
Рассказываем об актуальном в мире DevSecOps. Канал DevSecOps-команды "Инфосистемы Джет"
Download Telegram
Exposed Kubernetes Clusters

Всем привет!

Ребята из Cyble провели небольшое исследование по анализу кластеров Kubernetes, доступных из сети интернет.

Получились неоднозначные результаты: с одной стороны все не так и плохо, с другой misconfigurations все же встречаются,
чем может воспользоваться потенциальный злоумышленник. Самыми частыми exposed ports оказались: 443/6443 и 10250.

Статистика примерно такая:
🍭 ~ 975k вернуло 403 ошибку, forbidden, RBAC «не пропустил»
🍭~ 5k вернуло 401 ошибку, unauthorized
🍭~ 800 вернуло 200 (!), что означает возможность взаимодействия с кластером

Вывод простой – не надо пренебрегать настройками Kubernetes, которыми можно воспользоваться для повышения уровня ИБ кластера. Подробнее с результатами исследования можно ознакомиться в самой статье.
Обучающий курс по Sigstore!

Всем привет!

Недавно ребята из Chainguard совместно с Linux Foundation и OpenSSF запустили бесплатный обучающий курс, направленный на изучение инструментов Sigstore.

Курс включает в себя:
🍭 Introducing Sigstore
🍭 Cosign: Container Signing, Verification, and Storage in an OCI Registry
🍭 Fulcio: A New Kind of Root Certificate Authority For Code Signing
🍭 Rekor: Software Supply Chain Transparency Log
🍭 Sigstore: Using the Tools and Getting Involved with the Community

Курс содержит теоретическую часть и лабораторные работы. После завершения «главы» есть небольшой Knowledge Check, а в самом конце будет Final Exam!
KubeClarity: SBOM и обзор уязвимостей в образах контейнеров

Всем привет!

KubeClarity – инструмент визуализации информации об уязвимостях в образах контейнерах и о том, что находится «внутри» (Software Bill of Materials, SBOM).

Отличительной особенностью решения является наличие графического интерфейса и dashboards, содержащих информацию:
🍭 Уязвимости, которые можно устранить с разбивкой по уровню критичности
🍭 Top 5 уязвимых компонент (приложения, ресурсы, пакеты)
🍭 Тренды по уязвимостям
🍭 Пакеты по типу лицензий
🍭 Пакеты по языкам программирования

В качестве «анализаторов»
используются Grype и Syft, которые предоставляют информацию по уязвимостям и компонентному составу.

О том, что еще есть внутри, как установить и какой roadmap развития продукта можно почитать в самой repo.
Buildg: интерактивный debugger для Dockerfile

Всем привет!

При помощи buildg можно упростить процесс поиска ошибок при проработке Dockerfile. При помощи него можно:
🍭 Управлять процессом выполнения команды, устанавливать breakpoints
🍭 Взаимодействовать с образом через interactive shell

С перечнем команд, доступных утилите,
можно ознакомиться здесь. А в последнем релизе была добавлена интеграция с IDE (в том числе VS Code), чтобы сделать debug-процесс еще более наглядным и удобным.

Для ознакомления с принципами и процессом работы можно ознакомиться со статьей от Авторов buildg.
Inspektor Gadget: анализ действий контейнера

Всем привет!

Inspektor Gadget – набор утилит, которые могут быть использованы для повышения уровня ИБ кластера.

Функционально он разделен на блоки:
🍭 Advice. Поможет с генерацией network policy на основе анализа трафика или с созданием seccomp профиля через анализ записанных syscalls
🍭 Audit. Передача сведений о syscalls в лог-файл
🍭 Profile. Получение данных о stack traces
🍭 Snapshot. Сбор сведений о запущенных процессах
🍭 Top. «Визуализация» чего-либо (активных сессий, чтения/записи и т.д.)
🍭 Trace. Сведения о создании новых процессов

Функционала достаточно много, рекомендуем ознакомиться с ним лично. Что удобно – для каждой функции есть описание того, что она делает, примеры запуска и наглядные результаты ее работы.
Architecture as Code

Привет!

Многие слышали про Compliance as Code, Infrastructure as Code, Documentation as Code и т.д. Суть простая – описать что-либо в формате исходного кода (будь то конфигурация или описание процесса), разместить на условном GitHub и взаимодействовать (развивать) как с обычным «приложением».

Вероятно, автор Diagrams подумал, а почему бы не сделать такое для описания архитектуры? В итоге получился проект, который поддерживает написание архитектуры на Python для следующих платформ: AWS, Azure, GCP, Kubernetes, Alibaba Cloud, Oracle Cloud.

Например, вот такой код:

# imports

with Diagram("Exposed Pod with 3 Replicas", show=False):
net = Ingress("domain.com") >> Service("svc")
net >> [Pod("pod1"),
Pod("pod2"),
Pod("pod3")] << ReplicaSet("rs") << Deployment("dp") << HPA("hpa")

Нарисует красивую схему exposed pods, с количеством replica равным 3. Как это будет выглядеть «по факту» можно узнать в документации, а заодно поближе познакомиться с Diagrams.

P.S. Если вам в целом интересна тема автоматизации создания диаграмм/процессов, то рекомендуем обратить внимание вот на эту подборку.

P.P.S. Вообще есть много разных "XXX as Code".
В этой статье автор попытался собрать все возможные случаи и их получилось больше 50.
Хранение секретов в git: подходы и способы автоматизации

Всем привет!

Мы писали про разные способы безопасного хранения секретов в git, но нигде не было единого материала, в котором вся эта информация систематизирована и доступно описана.

И вот он появился! Статья от Jann Fischer и Raffaele Spazzoli, посвященная тому, как можно безопасно хранить секреты в git.

Ребята разбирают 2 группы подходов:
🍭 Шифрование секретов в git. При использовании такого подхода в git хранятся секреты в зашифрованном виде (например, Custom Resource – Sealed Secret для k8S). Использование Sealed Secrets, Mozilla SOPS
🍭 Указание «ссылок» на секреты. В этом сценарии в самих конфигурационных файлах хранятся не секреты, а указатели на системы, где эти самые секреты можно получить. Использование External Secrets и Kubernetes Secret Store CSI

Каждый концепт и подход описан, приводятся примеры использования, а также много ссылок на полезные материалы по теме.
«Гигиена» CI/CD credentials

Всем привет!

Статья, в которой собраны размышления о том, как можно повысить уровень ИБ и снизить вероятность компрометации секретов, используемых в CI/CD.

Авторы рассматривают 3 основных вектора:
🍭 Unrotated Static Credentials. В качестве «противодействия» предлагается использование 3-ей стороны и OIDC provider
🍭 Overly Accessible Credentials. Грамотная настройка прав доступа на различных «уровнях» (Global/User/Repo/Branch)
🍭 Credentials Exposed in Console Logs. Использование возможностей по маскированию

Кроме общих рекомендаций приводится небольшой обзор возможностей таких CI/CD-систем как: GitHub Actions, CircleCI, Jenkins и GitLab CI.
Attacking the API: Mindmap инструментов и подходов

Всем привет!

В repo содержится много общей информации, которая может быть полезна, если вы хотите ознакомиться с анализом ИБ API.

Материал разбит на 2 основных блока:
🍭 Recon // Исследование API. Например, HTTP Method Discovery, API Type Discovery и т.д.
🍭 Attacking // Способы атаки на API. Например, Improper Asset Management, Broken User Authentication, Injection и т.д.

Для каждого блока приводятся наглядные mindmap (которые можно скачать в pdf или XMind формата), перечень возможных инструментов автоматизации и полезных материалов.
Визуализация результатов Kube-Bench в Kyverno Policy Reporter

Всем привет!

У Kyverno есть удобный инструмент визуализации данных – Policy Reporter. При помощи него можно посмотреть сводную информацию по проверкам, а также направлять данные и уведомления в такие каналы, как: Grafana Loki, Elastic Search, Slack, Microsoft Teams и т.д.

Еще одной «особенностью» Policy Reporter является возможность его расширения. Например, можно сделать так, чтобы результаты Kube Bench отображались прямо в интерфейсе.

В статье описан простой алгоритм достижения цели:
🍭 Установить Policy Reporter
🍭 Добавить Policy Report CRD
🍭 Установить Kube-Bench Adapter для Policy Reporter (написанный ребятам из Nirmata)

Готово! При желании можно написать собственные CRD и добавить их в общий Dashboard.

P.S. С документацией Policy Reporter можно ознакомиться по ссылке.
Salus: SBOM Tool от Microsoft

Всем привет!

Тематика анализа и контроля состава ПО становится все актуальнее. И вот недавно Microsoft сделали проект Salus «открытым».

Этот инструмент используется для генерации SPDX 2.2 SBOM, которая содержит характерную информацию:
🍭 Document creation information. Общая информация – кто и когда создал, наименование ПО и т.д.
🍭 File section. Перечень файлов, из которых «состоит ПО», включая SHA-1/256 hash-значения
🍭 Package section. Перечень пакетов, используемых при создании ПО. Для каждого пакета указывается версия, «поставщик» (supplier), SHA-1/256 значение и т.д.
🍭 Relationship section. Описание взаимосвязи компонентов: например, Package и File

И, как обычно, чуть больше info в самом repo проекта: установка, «ключи» запуска и описание некоторых нюансов работы утилиты в определенных окружениях.
TripleCross: Linux eBPF offensive rootkit

Всем привет!

TripleCross – rootkit, который демонстрирует offensive возможности eBPF. Проект появился на свет в качестве работы h3xduck для защиты степени бакалавра в университете Мадрида.

Доступны следующие «модули»:
🍭 Library injection
🍭 Execution hijacking
🍭 Local privilege escalation
🍭 Backdoor with C2 capabilities
🍭 Rootkit client that allows an attacker to establish 3 different types of shell-like connections
🍭 Persistence
🍭 Stealth

Принцип работы, примеры запуска – все это можно найти в repo.
Крайне рекомендуем ознакомиться, т.к. материала достаточно много. Из приятного – все очень подробно описано, есть много схем и комментариев к ним.

P.S. Напоминаем, что подобные инструменты надо использовать строго в образовательных целях. И не использовать в production.
Trousseau: использование KMS provider для шифрования данных в Kubernetes

Всем привет!

Для шифрования данных в ETCD можно использовать штатные механизмы Kubernetes. Однако, есть нюанс, что ключи шифрования надо поместить на nodes, иначе возможны сбои. Альтернативный вариант – использование функционала KMS provider: третьей стороны, которая будет отвечать за шифрование, в том числе управлять ключами. При этом в ETCD будут попадать уже зашифрованные сущности.

Для упрощения подобной схемы ребята из Ondat сделали Trousseauпосредника между Kubernetes и KMS (например, HashiCorp Vault).

Схема получается следующая:
🍭 Пользователь создает сущность (например, Secret)
🍭 Kube-apiserver перенаправляет запрос в Trousseau
🍭 Он, в свою очередь просит зашифровать данные у HashiCorp Vault
🍭 Далее шифрованные данные направляются на хранение в ETCD

Преимуществом
такой схемы является то, что управлять ключами шифрования проще, к тому же нет потребности их размещения на nodes кластера.

Если хочется «потрогать» руками, то есть удобная интерактивная лабораторная работа. В ней сперва настраивается encryption method, происходит конфигурация Transit Secret Engine в Vault, а затем демонстрируются зашифрованные секреты в ETCD.
Debug CoreOS и Silverblue

Привет!

В некоторых операционных системах достаточно сложно искать ошибки из-за банального отсутствия «встроенного инструментария» и запрета на его установку. Например, это характерно для Fedora CoreOS и Fedora Silverblue.

Как быть в таком случае? Есть один инструмент, который поможет с решением задачи toolbox. По сути он представляет из себя контейнер, в который можно установить все необходимое.

Далее – запускаем его на требуемом сервере и устанавливаем необходимое ПО для debug с помощью dnf install. Всё содержимое корневой папки хоста будет доступно здесь: /run/host/. Это позволит использовать функционал утилит без необходимости установки их на хосте.

Подробнее об утилите и сценариях использования можно прочесть на сайте и в repo. Общее описание поиска ошибок с toolbox для Fedora CoreOS можно прочесть тут.
Сеть в Kubernetes: основы

Всем привет!

В статье просто и доступно описаны основы того, как устроена сеть в Kubernetes. В начале приводятся общие сведения: все nodes могут взаимодействовать между собой, каждому pod назначается свой IP, все pod могут взаимодействовать между собой без использования NAT.

Далее Автор углубляется и описывает такие сущности как:
🍭 Service. Что он делает, зачем он нужен и почему «привычное» управление через IP не применимо для Kubernetes, что такое Endpoint.
🍭 Типы Service. ClusterIP, NodePort, LoadBalancer и какая между ними разница.
🍭 Что такое CoreDNS и для чего он используется
🍭 Назначение Kube-proxy
. Что он делает, почему IP адреса pod и service такие разные и т.д.

Статья очень простая, но может быть интересна тем, кто хочет приоткрыть дверь понимания логики работы сети внутри Kubernetes.
Всем привет!

Permission-manager - это open source утилита от итальянской компании SIGHUP, предназначенная для управления Kubernetes RBAC.

Утилита имеет интуитивно понятный графический веб-интерфейс, в котором можно выполнять следующие действия:
🍡Создавать пользователей
🍡Назначать им права доступа на namespaces/кластер
🍡Автоматически генерировать Kubeconfig YAML

Как это работает:
Permission-manager разворачивается в Kubernetes. Для управления правами доступа используются шаблоны (по факту это cluster roles): одни для организации доступа к определенным ресурсам (namespaces), а вторые - для доступа к кластеру. По умолчанию создается 4 таких шаблона с фиксированным набором прав (например, template-namespaced-resources___developer), которые сразу доступны из веб-интерфейса и могут быть назначены пользователям:
🍡Developer (namespace)
🍡Operator (namespace)
🍡Read-only (cluster)
🍡Read-write (он же admin, cluster)

Из коробки шаблонов достаточно мало, поэтому собственные точно придется создавать, как минимум, для доступа к конкретным namespaces. Это можно сделать следующим образом: создать cluster role с необходимыми правами и с названием template-namespaced-resources___Х, где Х - название роли. После деплоя новая роль автоматически появится в веб-интерфейсе вместе с описанием прав доступа для нее.

Несмотря на то, что утилита очень простая и удобная, есть определенные минусы, которые надо иметь в виду:
🍡Нет интеграции с IdP (пользователи создаются в web UI)
🍡Нельзя просмотреть текущих пользователей и их права доступа
🍡Нельзя в веб-интерфейсе менять права (только через templates)

Больше информации можно найти по ссылке: https://github.com/sighupio/permission-manager
chainguard-all-about-that-base-image.pdf
299.2 KB
Аналитика базовых образов

Всем привет!

Ребята из ChainGuard подготовили небольшое исследование на тему наиболее популярных базовых образов. В список попали Alpine, Ubuntu, Golang, OpenJDK и не только.

В отчете можно найти сводную информацию по:
🍭 Уязвимостям в этих образах (с использованием разных сканеров)
🍭Количество уязвимостей с разбивкой по годам (что подтверждает тезис Авторов о росте технического долга)

Супер-нового в отчете нет, но он хорошо помогает структурировать скорее всего известную информацию.

Одним из способов, который может помочь в решении проблемы является использование distroless images, но такой путь подойдет не всем.
Курс: GitOps For Reliable Kubernetes

Всем привет!

Ребята из Traefik подготовили бесплатный курс, посвященный GitOps. Согласно описанию, это двухчасовой курс, который описывает концепт GitOps, а также включает в себя лабораторные работы по конфигурированию Kubernetes-окружения с использованием Git и Flux.

Курс содержит следующие разделы:
🍭 GitOps is Configuration Management
🍭 Templating Manifests With Kustomize
🍭 How Flux Operates
🍭 Managing Flux
🍭 Deploy the Application
🍭 Secure the Application и другие

Зарегистрироваться можно по ссылке
в описании. P.S. Есть еще аналогичный курс по ArgoCD, про который мы писали ранее.
Infra: управление доступом к Kubernetes и не только

Всем привет!

Основная задача проекта Infraуправление доступом. Пока что только к Kubernetes.

Решение предоставляет набор стандартных ролей: cluster admin, admin, edit, view, logs, exec, port-forward, которые могут назначаться пользователям. При этом можно не только предоставлять права, но и отзывать их. А если набор стандартных ролей вам не подходит – можно добавить собственные.

Поддерживается интеграция с Okta, AzureAD, OIDC, Google в качестве identity provider. В планах добавить поддержку GitHub/Lab.

В итоге получилось минималистичное решение, которое решает достаточно важную задачу. Подробнее можно ознакомиться с ним при изучении документации.

Особенно советуем уделить внимание страницам с “Coming Soon” и “Roadmap” – согласно им, у разработчиков весьма амбициозные планы. Например, доработка для управления доступом к PostgreSQL, MongoDB, SSH, RDP и т.д
Distroless Images: подход ChainGuard

Всем привет!

Distroless очень интересный концепт, который может быть полезен как для ИТ, так и для ИБ. Началось все с вопроса: «Насколько маленьким может быть образ?». И дело даже не в его размере, а в том, чтобы оставить только нужное и исключить ненужное.

Например, зачем в запущенном контейнере пакетные менеджеры и bash? (опустим вопросы debug). Именно в этом (если упростить) и заключается концепция distroless – в образ контейнера помещается только ПО и те зависимости, на которые оно «опирается» при работе.

Одними из первопроходцев был Google. Ребята от ChainGuard,
в свою очередь, предлагают альтернативный подход к построению таких образов:
🍭 Google предлагает использовать multistage build
🍭 ChainGuard предлагают использовать apko и mélange

Такой подход должен сократить вероятность возникновения ошибки или того, что что-то будет «забыто» при сборке образа. Ребята уже подготовили несколько примеров своих образов, а сама статья дает неплохую справку о том, зачем вообще использовать distroless, если вам хочется больше деталей.