DevSecOps Talks – Telegram
DevSecOps Talks
7.44K subscribers
85 photos
94 files
1.22K links
Рассказываем об актуальном в мире DevSecOps. Канал DevSecOps-команды "Инфосистемы Джет"
Download Telegram
Nosey Parker: поиск секретов

Всем привет!

Nosey Parker – небольшая утилита, которая позволяет искать секреты. По факту – open source версия утилиты, используемой Praetorian. «Старшая версия» обладает ML-аналитикой для более точной идентификации секретов.

Open source версия:
🍭 Позволяет анализировать файлы, директории, git-историю
🍭 Группирует все findings
для сокращения «шума» и дедупликации
🍭 Работает достаточно быстро

Под капотом – набор из регулярных выражений в количестве 95 patterns. Как вариант – можно посмотреть, что есть «внутри» и использовать логику для расширения используемых Вами решений или попробовать Nosey Parker.
👍1
Packj: анализ open-source пакетов

Всем привет!

Материал для «кандидатской» и open source продукт… Казалось, что между ними общего? Ответ – Pakcj, история которого как раз началась как работа над диссертацией.
В итоге получился интересный проект, задача которого анализировать open source пакеты не только на CVE, но и на многое другое.

С его помощью можно найти:
🍭 Сведения об Авторах пакета
🍭 Временной промежуток между release
🍭 Пакет требует много полномочий // например, codegen, envvars, decode, process, file и т.д.)
🍭 Сведения о количестве уязвимостей // да, куда без них
🍭 Является ли repo fork’ом или нет
🍭 Typo squatting, Dependency Confusion, Install-time hooks // coming soon

По умолчанию работает в режиме Audit. Но, при использовании флага -t осуществляется установка пакета и его «динамический» анализ с использованием strace (рекомендуется использовать в контейнере или в VM). Больше информации, как обычно, можно найти в repo проекта.
👍3
Kyverno: PolicyException

Всем привет!

В недавнем релизе (1.9.0) Kyverno был добавлен механизм PolicyException, при помощи которого можно явно разрешить некоторое действие, запрещенное политиками Kyverno. Механизм обладает достаточно гибкими возможностями по управлению scope, на который применяется «исключение».

В статье Автор не только описывает подробности, но и реализует пример:
🍭 Создание PolicyException в namespace с именем falcon-dev
🍭 Kyverno создает ClusterCleanupPolicy, которая удалит созданный exception по прошествии заданного времени
🍭 Проверка ☺️

В статье описываются все необходимые настройки, предоставлены yaml. Важно(!): пока что функционал PolicyException находится в alpha.
👍2🔥2👏2
Kubernetes * Probes

Всем привет!

Практически во всех рекомендациях (в том числе по ИБ) можно увидеть нечто вроде “Ensure that * Probes are set”. Они бывают разные – Startup, Liveness, Readiness. И каждая отвечает за свой «участок» - проверка того, что приложение «стартовало», приложение функционирует и может принимать трафик, приложение доступно. Но как настроить их корректно и всегда ли они нужны?

В статье более детально разбирается что каждый из видов probes, как их можно настроить и когда их целесообразно использовать.

Отдельно хочется упомянуть схему, доступную в статье. На ней наглядно отображено, когда какая probe «работает» и какие могут быть последствия в случае, если она не срабатывает.

В завершении стать рассматриваются handlers: ExecAction, TCPSocketAction, HTTPGetAction, gRPC и как их можно использовать.
Анализ безопасности JWT, часть 1

Всем привет!

JSON Web Token (JWT) – популярный механизм, который позволяет сохранять некоторую информацию о пользователе (например, id, name, creation time и т.д.) и использовать ее в дальнейшем.

Однако, некорректная работа с JWT может привести к проблемам информационной безопасности. Для знакомства с темой предлагаем Вам обратить внимание на статью JWT [JSON WEB TOKENS] [EXPLANATION & EXPLOITATION] (0x01).

В первой приводится общее описание JWT, его структуры и далее рассматривается самое интересное:
🍭 Flawed signature Verification
in Backend
🍭 Brute forcing the Secret Keys If HMAC algorithm is used

Каждый вектор атаки рассматривается на примерах, есть пояснения и screenshots. Но и это еще не все ☺️ Продолжение в следующем посте! В нем Автор рассмотрит JWT header injections.
👍5🔥21
Анализ безопасности JWT, часть 2

Всем привет!

Продолжение предыдущей статьи. Автор рассматривает блок, посвященный JWT header injections.

В статье можно найти информацию о:
🍭 Self-signed JWT with JKU header injection
🍭 Self-signed JWT with JWK parameter

Примеры
рассматриваются с использованием Portswigger Labs. Для каждого из них приводится описание Автора и минимум необходимой теории. Кстати, на самом Portswigger тоже очень много интересной информации про безопасность JWT в сочетании с лабораторным работами.
👍31🔥1
FalcoSecurityAudit.pdf
1 MB
Аудит безопасности Falco

Всем привет!

В приложении доступны результаты независимого аудита проекта Falco (~ 63 страницы), проведенного компанией Quarkslab.

Материал содержит разделы:
🍭 Границы работ (fuzzers, моделирование угроз, SAST-практики и т.д.)
🍭 Модель угроз
Статический анализ (Cppcheck, CodeQL, Infer)
🍭 «Ручной» анализ
🍭 Динамический анализ и многое другое

В целом все достаточно неплохо: 1 Medium уязвимость (potential buffer overflow), несколько Low и Info.

А как Вы думаете – является ли open source менее защищенным by default? Или наоборот – open source ничем не хуже «внутренней разработки» с точки зрения ИБ? Пишите Ваше мнение в комментариях ☺️
👍5
Разбор Kubernetes Security Context

Всем привет!

По ссылке доступен long read, в котором Автор на примерах разбирает различные Security Context и пользу от их использования. Для демонстрации заготовлено минималистичное flask-приложение и его различные модификации.

Рассматривается:
🍭 runAsUser / runAsGroup // пример с SSRF
🍭 privileged и allowPrivelegeEscalation // пример с SUID и возможным повышением привилегий
🍭 readOnlyRootFilesystem // пример с созданием файла внутри контейнера
🍭 drop capabilities // пример с drop: ALL и bind на 80-ый порт (Сработало! Почему? Ответ есть в статье) и последующей настройкой исключений
🍭 apparmor // пример с попыткой чтения /etc/passwd

Автор максимально детально описывает все действия, которые он реализует, а также описывает «зачем» он это делает. Примеры из статьи можно реализовать самостоятельно – все исходные коды, ссылки на используемые материалы и дополнительные ресурсы присутствуют.

P.S. Для некоторых Security Context Автор приводит дополнительные комментарии, которые не всегда просто найти / есть в официальной документации.
👍4
Проблематика и автоматизация создания Network Policy

Всем привет!

Зачастую рассказывают про положительные стороны чего-либо. Однако, знать про отрицательные тоже важно, чтобы получить полную и общую картину.

В статье Автор рассуждает о том, почему Network Policy не самый удобный инструмент / уровень абстракции для сегментирования сети k8s, особенно с точки зрения разработчика.

Критикуешь – предлагай! Да, есть и такое! В завершение статьи описывается как можно проще/лучше управлять трафиком с использованием Intents (определение есть в статье). И не только описание – не найдя ничего подходящего, ребята создали свой собственный operator - Otterize Intents Operator.

Он «повышает» уровень абстракции и позволяет контролировать создание/наличие сетевых политик. Грубо говоря, все, что надо указать – с кем «общается» целевой сервис и как. Все. Operator создаст необходимую политику (только Ingress) и проставит требуемые labels на участников взаимодействия.

Подробнее про Otterize Intents Operator можно прочесть в документации. Важно (!): есть как коммерческая, так и open source версия продукта.
👍2🔥1
Vulnhub: Vulnerable Docker Environments

Всем привет!

Иногда нужно/хочется провести тестирование возможности эксплуатации уязвимостей. Например, для того, чтобы понять – «отработает» ли средство защиты или просто в исследовательских целях.

Проект Vulnhub может в этом помочь. В нем собрано большое количество «заранее уязвимых» окружений для различных технологий (python, wordpress, elasticsearch, flask, java и многое другое).

Для каждого окружения в repo можно найти CVE, которые в них «заложены» и readme.md, описывающий как можно ее проэксплуатировать. Есть небольшой нюанс – английский язык доступен не везде, много информации на китайском ☺️

Важно(!): указанные окружения не рекомендуется использовать в production, а лишь для целей тестирования и изучения.
3
Ресторан «Kubernetes»

Привет!

Легкий пятничный пост 😊 Наверное, когда-нибудь вас просили объяснить – «Что такое Kubernetes? Но только просто, чтобы было понятно и сразу!»
Было уже много разных аналогий и вот еще одна. Автор сравнивает k8s с рестораном! Как раз для пятницы!

Получается следующее:
🍭 Master Node: главный повар, управляет всем
🍭 Kube-apiserver: система обработки заказов посетителей ресторана
🍭 Kube-controller-manager: управляющий по кухне
🍭 Kube-scheduler: временное табло, помогающее кухне справляться с заказами и т.д.

В целом все неплохо «ложится» на Kubernetes 😊 А как Вы «просто и понятно» объясняете, что такое Kubernetes интересующимся?
👍6🔥1
Безопасность build pipeline: все ли так плохо?

Всем привет!

По ссылке доступна статья, в которой Автор пытается посмотреть на проблему безопасности build-pipelines максимально критично. Ее задача понять – все ли на самом деле так плохо? Или проэксплуатировать уязвимость сложнее, чем написано во многих статьях?

В качестве возможных сценариев рассматриваются:
🍭 Модификация исходного кода
🍭 «Добавление» зависимостей
🍭 Воздействие на runner

Для каждого сценария описаны «сложности», с которыми скорее всего придется столкнуться атакующими. С точки зрения Автора все не так уж и плохо, особенно если соблюдать «гигиену» - защищать ветки (branch protection), проверять подпись «внешних» компонентов и т.д. А что Вы думаете по этому поводу?
Kube-apiserver в роли port scanner

Всем привет!

Еще одна потрясающая статья от Rory McCune, посвященная «своеобразному» использованию возможностей Kubernetes. Нет, это не уязвимость, это не bug, это не ошибка.

Kubernetes устроен таким образом, что он может осуществлять сетевые запросы на внешние адреса в некоторых ситуациях. Например, в случае с Validating Webhooks. Таким образом можно реализовать некий аналог SSRF и превратить Kubernetes в «сканер портов».

Rory
проделал следующее:
🍭 Создается namespace
🍭 Регистрируется webhook
. Никакой сервер, обрабатывающий запрос не регистрируется. Вместо этого указывается потенциальная «жертва»
🍭 Создается pod
в указанном namespace. Готово! В сообщении об ошибки получаем всю необходимую информацию

PoC
того, что описано выше можно найти в repo. Если интересно посмотреть небольшую демонстрацию, ее можно найти в блоге Rory.

P.S. Лучше не проверять этот, пусть и крайне базовый PoC на каких-либо настоящих сервисах и/или в production-окружениях.
👏1
Network isolation для 1,500 сервисов

Всем привет!

В статье описан опыт Monzo по управлению сетевым трафиком в средах контейнерной оркестрации. На очень больших масштабах.

Ребята проделали колоссальную работу, которую можно разделить на несколько основных этапов:
🍭 Выбор сервиса для «пилотирования». Им стал service.ledger, который взаимодействует с множеством других
🍭 Понимание того, с кем service.ledger общается. Для этого команда написала собственный инструмент – rpcmap, который анализирует Go-код и пытается найти возможные точки взаимодействия. Работало не очень, но в качестве «первых шагов» - вполне
🍭 Подготовка Native Network Policy, определение подходов к labeling. Политика хранилась вместе с конфигурацией ledger и, если необходимо добавить новый «приемник», то делался соответствующий MR
🍭 Трудности, порождаемые таким подходом. Отсутствие тестирование, нюансы с roll back и т.д. Поиск нового решения, которым стал Calico
🍭 Создание сетевых политик Calico, обладающих большим order для журналирования действий Network Policy для поиска ошибок. Дада, Вам не показалось 😊 Анализ Network Policy при помощи другой Network Policy
🍭 Очередное переосмысление labeling с учетом опыта, полученного на предыдущих шагах

И многое-многое-многое! Читается на одном дыхании, рекомендуем! 😊
👍2
Выбор компонентов платформы контейнерной оркестрации.

Всем привет!

Ни для кого не секрет что любая платформа контейнерной оркестрации состоит из множества компонентов, таких как:
🍉 Подсистема мониторинга
🍉 Подсистема журналирования
🍉 Подсистема аутентификации/авторизации
🍉 и множество других компонентов

В связи с этим при проектировании таких платформ каждый архитектор сталкивается с проблемами выбора оптимального решения. Разработчики MetalK8s провели разбор некоторых наиболее часто используемых компонентов платформы оркестрации контейнеров, а также подходов, которые могут использоваться при разработке самой платформы. В документации к платформе разобраны варианты решений для многих важных компонентов. Помимо перечисленных выше там также затрагиваются и другие моменты, которые важны при разработке платформы и выборе того или иного решения:

🍉 Выбор подсистемы оповещений и алертов
🍉 Особенности проектирования cli-утилиты для управления кластером
🍉 Подходы к тестированию платформы
🍉 Разбор разных методов хранения конфигураций
🍉 и многое другое
👍4🔥2
Network Mapper: кто с кем общается в k8s

Всем привет!

Продолжаем тему анализа сетевого трафика k8s и упрощения создания сетевых политик для его контроля.

Не всегда понятно какой сервис с каким общается, что затрудняет создание (и автоматизацию этого процесса) сетевых политик. Для решения этой задачи можно обратить внимание на Otterize Network Mapper.

Решение работает по следующей схеме: записывает DNS-трафик, анализирует активные соединения, получает IP-адреса и идентифицирует «источник».

Чтобы попробовать Network Mapper в действии достаточно:
🍭 Установить сам Network Mapper (есть Helm Chart)
🍭 Установить cli-утилиту для общения с «основной системой»
🍭 Готово! Можно получить информацию о том какие сервисы общаются между собой как в stdout, так и в JSON для дальнейшей работы

Пример того, как это выглядит можно найти в repo проекта, а небольшая инструкция доступна в документации проекта.
👍41
Авторизация Kubelet в Kube-apiserver

Всем привет!

Kubelet крайне важная часть Kubernetes. Он взаимодействует с runtime для создания контейнеров и не только, общается с kube-apiserver. Логично предположить, что он, как и все остальные сущности, обращающиеся к kube-apiserver должен проходить процедуру авторизации.

И это так, однако не все так просто,
как может показаться. Например, если сделать kubectl --kubeconfig=%yourkubelet.conf% auth can-i –list, то описания его прав на, например, pod вы не увидите. Хотя с этим же самым kubeconfig можно запросить перечень pods в каком-нибудь namespace и получить результат.

Если присмотреться, то в ответе вышеуказанной команды есть интересная строчка: the list may be incomplete: node authorizer does not support user rule resolution Resources.

Именно этой «особенности» посвящена очередная прекрасная статья от Rory McCune. Почему так происходит и как работает авторизация Kubelet «под капотом», ссылки на исходный код Kubernetes - все есть в статье. Рекомендуем!
1
Kubernetes Goat: новый сценарий

Всем привет!

Kubernetes Goat – проект Madhu Akula, который представляет из себя заведомо-уязвимый кластер Kubernetes.

Сейчас доступно порядка 20 сценариев, которые можно реализовать. Например:
🍭 Attacking private registries
🍭 Secure Network Boundaries using Network Policy
🍭 Kubernetes namespaces bypass
и другие

Недавно был добавлен еще один«Cilium Tetragon - eBPF-based Security Observability and Runtime Enforcement». В нем предлагается использовать Tetragon для осуществления runtime security monitoring и идентификации проблем ИБ. Как и во всех остальных сценариях доступна постановка задачи, подсказки (hints) или полное решение (если вдруг не получится самостоятельно).
👍6
Chainloop: supply chain control plane

Всем привет!

Chainloop – open source проект, при помощи которого можно централизованно управлять аттестацией артефактов (про то, что понимается под «аттестацией» мы писали тут).

Логически состоит из двух основных компонентовcontract (описывает то, что должно быть в аттестации) и attestation (грубо говоря набор сведений об артефакте, которые нам требуются). Аттестация используется для того, чтобы подписать не только сам артефакт, но и дополнительную информацию про него.

Пример того, что можно добавить в аттестацию:
🍭 Образ контейнера
🍭 Dockerfile (optional)
🍭 SHA commit’a
🍭 Software Bill Of Materials
in CycloneDX format и не только

Сам процесс выглядит следующим образом – определяем контракт, добавляем данные в аттестацию, подписываем и помещаем наш артефакт хранилище вместе с подписью и аттестацией.

Больше информации про Chainloop (установка, настройка, интеграционные возможности) можно прочесть в документации на проект.
👍1
CyberCamp MeetUp: DevSecOps!!!

Всем привет!

По ссылке Вы можете зарегистрироваться на MeetUp, посвященный DevSecOps!

Мероприятие пройдет 20 апреля c 11:00 МСК.

Программа получилась очень насыщенной:

🍭 Путь самурая: фреймворк безопасной разработки
Кирилл Бочкарев,
"Инфосистемы Джет"

🍭 Мифы и факты о цепочке поставки программного обеспечения
Леша Смирнов,
CodeScoring

🍭 Актуальные уязвимости в мобильных приложениях в 2022 году
Юра Шабалин,
"Стингрей Технолоджиз"

🍭 Введение во взлом веб-приложений. Как создать безопасное ПО
Данил Кокорин,
"Инфосистемы Джет"

🍭 Классификация и систематизация средств безопасности для Kubernetes
Дима Евдокимов,
Luntry

🍭 Опыт построения AppSec-процессов в крупных корпорациях
Алина Князева,
VK

Приходите сами, зовите друзей! Скучно точно не будет!!! ☺️☺️☺️
👍9🔥5🍾5🦄3🌭21
БеКон: вкусно и полезно!

Всем привет!

При чем тут бекон? Быть может это отличный завтрак DevOps-специалиста, а быть может – первая в России конференция, посвященная тематике БЕзопасности сред КОНтейнерной оркестрации!

И то и то правда (ставьте «лайк», если любите кушать бекон 😊)! Команда Luntry сделала собственную конференцию, где будет 10 докладов.

Уже объявлены такие темы как:
🍭 OPA с shared Docker executor // Павел Сорокин, OZON
🍭 Не такой очевидный RBAC Kubernetes // Дмитрий Евдокимов, Luntry
🍭 Distroless своими руками // Антон Мокин, Тинькофф
🍭 K8s в PCI DSS // Александр Маркелов, Райффайзен Банк
🍭 Как правильно готовить Kyverno и работать с его алертами // Алексей Миртов, Яндекс Облако
🍭 Kubernetes, ответь мне, кто я для тебя // Константин Аксенов, Флант

Остальные доклады будут объявлены в ближайшем будущем. Мероприятие пройдет 7-ого июня, в Москве. Важно(!): только offline и без трансляции.
🔥11🦄5🌭21