DevSecOps Talks – Telegram
DevSecOps Talks
7.44K subscribers
85 photos
94 files
1.23K links
Рассказываем об актуальном в мире DevSecOps. Канал DevSecOps-команды "Инфосистемы Джет"
Download Telegram
Cluster API (CAPI): что это и зачем?

Всем привет!

Есть много способов создать кластер Kubernetes! Можно воспользоваться kubeadm, можно – системами, которые позволяют создать кластер «по кнопке» или использовать возможности облачных провайдеров. А можно воспользоваться Cluster API!

Если просто – то это проект, который позволяет декларативно управлять кластерами Kubernetes (создание, обновление, взаимодействие).

В статье описываются его ключевые «компоненты»:
🍭 Infrastructure providers
🍭 Bootstrap providers
🍭 Control Plane providers

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

Завершает статью небольшой пример использования CAPI для создания кластера в AWS.

Кстати, именно CAPI используется для управления кластерами в Edge Computing, о чем мы писали тут.
👍41🔥1
Внедрение SAST в организации: опыт Trail of Bits

Всем привет!

Статья содержит описание 7 шагов, которые использовались в Trail of Bits при внедрении и масштабировании SAST-практики с использованием Semgrep.

Если кратко, то:
🍭 Поймите какие языки надо будет анализировать и выберите SAST // Далее все будет на примере Semgrep
🍭 Запустите Semgrep на небольшом проекте для оценки эффективности
🍭 Повторите предыдущий этап, используя разные наборы правил из Semgrep Registry
🍭 Адаптируйте наборы правил «под себя», чтобы повысить эффективность анализа
🍭 Создайте repo, в котором будете хранить наработки по собственным Semgrep-правилам
🍭 Евангелизм! Расскажите о том, что это такое, зачем это надо и какие были получены результаты всем заинтересованным
🍭 Внедрите Semgrep в CI-pipeline, настройте сканирования кодовой базы по расписанию и т.д.

На первый взгляд может показаться: «Кхм, да это же очевидно!». А разве это плохо? Возможно, у многих был подобный «алгоритм» в голове, но что-то «смущало». Однако, это вполне рабочий сценарий, который подтверждается и командой Trail of Bits.

Рекомендации, полезные советы практически каждому из этапов, ссылки на полезные материалы можно найти в статье. Еще там есть интересный раздел «Things I wish I’d known before I started using Semgrep» 😊
👍63
Как заработать 20k $ на BugBounty от GitHub?

Всем привет!

Если Вы хотите стать частью увлекательнейшего путешествия в мир безопасности CI/CD – настойчиво рекомендуем прочесть эту статью.

В ней Автор рассказывает свою историю о том, как он получил доступ к инфраструктуре GitHub (да, именно его, а не к конкретному проекту X, который на нем размещается).

У GitHub есть особенность, связанная с hosted runners при использовании их вместе с public проектами: любой workflow имеет доступ к этому runner. В том числе, если запускать этот самый workflow через PR от fork’a проекта. Так уж вышло, что в репозитории самого GitHub тоже нашелся такой runner.

Но есть нюанс… Как «обойти» потребность в approval на запуск workflow? Стать contributor’ом! Например, «поправив запятую», сделать PR, merge – готово! Теперь не требуется какое-либо согласование.

Все готово для Poisoned Pipeline Execution. Поиск секретов, создание runner внутри runner для получения persistence, выбор оптимального времени для совершения атаки, «чистка следов», получение данных (например, учетные данные от vCenter)… И Автор смог «оставаться внутри» на протяжении 5 дней!!!

Ух, безумно захватывающе, поэтому очень и очень рекомендуем Вам прочесть это самостоятельно. Гарантируем, что Вы не пожалеете 😊 Расписан каждый шаг, приведены screenshot и пояснения для лучшего понимания того, что происходит.

В завершении Автор рассуждает на тему того, чем могла грозить подобная атака, будь она совершена не в «исследовательских целях» и что можно сделать для защиты.

P.S. Кстати, такое можно «провернуть» не только с GitHub – в завершении статьи есть еще пара примеров 😊
👍136🔥4
Всем привет!

Мы бережно относимся к нашей аудитории и контенту, который вы здесь читаете.

Поэтому спрашиваем ваше мнение: хотите ли вы эпизодически видеть в нашем канале публикации с вакансиями из мира DevSecOps?

Голосуем до 22.01 23:59 (МСК)!
👍36👎1
Хотите ли вы эпизодически видеть в нашем канале публикации с вакансиями из мира DevSecOps?
Final Results
65%
Хочу
18%
Не хочу
17%
Воздержусь
CI/CD Goat: writeup!

Всем привет!

По ссылке можно найти подробный writeup на тему решения задач уровня «Easy» проекта CI/CD Goat.

Автор исследует следующие сценарии:
🍭 White Rabbit. Извлечение конфиденциальной информации через Direct Poisoned Pipeline Execution, D-PPE (с доступом на изменение конфигурационного файла конвейера).
🍭 Mad Hatter. Извлечение конфиденциальной информации через Indirect Poisoned Pipeline Execution, I-PPE (без доступа на изменение конфигурационного файла конвейера, но с доступом к файлам, которые им используются).
🍭 Duchess. Извлечение конфиденциальной информации из-за отсутствия «гигиены безопасности» при удалении информации из Git.

Скриншоты, комментарии, объяснения – все на месте! 😊

P.S. CI/CD Goat – уязвимое приложение, которое может быть использовано в обучающих целях для изучения OWASP Top-10 CI/CD Security. Подробнее про него мы писали вот в этом посте.
👍5
Postgres-оператор с возможностью управления postgres extensions на лету.

Всем привет!👋

Сегодня мы хотим затронуть такую интересную тему, как базы данных в кластерах Kubernetes. Существует множество "За" и "Против" такого подхода, однако последнее время все чаще можно встретить статьи и записи докладов, в которых рассказаны реальные кейсы успешного использования баз данных в Kubernetes. Во многом это стало доступным благодаря операторам Kubernetes, которые упрощают процесс создания и управления инстансами БД в кластерах. И сегодня мы поговорим про еще один оператор:

Представляем вам Tembo - Postgres-оператор, написанный на Rust!

В основе оператора лежит другой, давно полюбившийся и считающийся одним из лучших CloudNativePG. Казалось бы, зачем писать еще один оператор, основанный на уже имеющемся?🤔 Но разработчики добавили несколько интересных концепций, которые, как нам кажется, многим будут полезны. А именно:

🎹 Концепция Stacks: заранее сконфигурированные и оптимизированные образы postgres для самых распространенных случаев
🎹 Возможность добавления postgres extensions на лету из репозитория Trunk! Вот уж, пожалуй, одна из самых полезных возможностей оператора! Теперь не нужно каждый раз пересобирать образ, если вдруг потребовалось добавить какое-то расширение!

Стоит ли использовать базы данных в Kubernetes для продакшена - вопрос по прежнему открытый, но в любом случае, рекомендуем подробнее почитать и может быть даже попробовать этот оператор!
👍6🔥2🥰2
Всем привет!

Рынок DevSecOps в РФ не стоит на месте и стремительно развивается!!!

В связи с этим у нас появился вопрос – «А чего, на Ваш взгляд, сейчас не хватает больше всего?» (если говорить по автоматизацию).

Поэтому мы сделали простой опрос, который просим пройти и сделать repost, чтобы получить более точные данные (насколько это возможно для статистики 😊)
👍6
Получение образа из Dockerhub: как оно происходит?

Всем привет!

Еще одна обзорная статья, которая позволяет чуть глубже погрузиться в то, что «происходит под капотом». Допустим, была запущена команда kubectl  run pod –image=myimage.

Что произойдет дальше? Откуда образ появится на узле? Кто это делает? Что, помимо самого образа, хранится в реестре? Как работает layer cache и как определяются слои, которые уже есть?

Если вам интересно найти ответы – они есть в статье, включая удобные диаграммы последовательности между Runtime и Registry.

Завершает статью достаточно забавный разбор, связанный с ErrImagePull: Too Many Requests от Dockerhub. Чтобы такого не допустить, устанавливается Private Proxy Cache Registry. Количество запросов к Dockerhub замеряется снова.

Конечно, результат будет уже другой и понятно почему, но все равно интересно посмотреть на диаграммы взаимодействия и количество совершаемых запросов.
👍82
Цепочка повышения привилегий в GKE

Всем привет!

Статья от Unit42 (Palo Alto) описывает сценарий повышения привилегий до уровня Cluster Admin в GKE.

Есть несколько допущений. Первое: злоумышленник уже обладает доступом к кластеру Kubernetes. Как именно? – ответ на этот вопрос не является частью статьи. Второе: на кластере установлен и используется Anthos (вариация Istio от Google).

Что дальше? Все достаточно просто! Сценарий, следующий:
🍭 Эксплуатация уязвимостей в контейнерах FluentBit. Это нужно, т.к. в GKE у него есть mount к /var/lib/kubelet/pods и, как следствие, доступ к ServiceAccount Tokens
🍭 Поиск token’a Anthos и его дальнейшее использование для создания pod в namespace kube-system
🍭 Предоставление создаваемому pod роли clusterrole-aggregation-controller, обладающий повышенными привилегиями
🍭 Повтор «трюка» с FluentBit для получения token’a только что созданного pod

Завершает статью набор советов и рекомендаций, позволяющих запретить / сильно осложнить реализацию того, что написано выше. Все, как обычно – контроль доступа, контроль конфигураций, устранение избыточных полномочий и контроль изменений. Вроде бы просто, но на деле это не совсем так, особенно на большим масштабах 😊
👍5
Как найти 18 000 API Token в интернете?

Всем привет!

Команда Escape провела исследование 1 миллиона доменов в интернете, с целью поиска чувствительной информации. В итоге ребятам удалось найти 18 000 API Token, использование 41% которых могло нанести вред организациям (большинство из них было в JS коде).

Для этого ребята воспользовались алгоритмом:
🍭 Разработка специализированного web spider с использованием Golang
🍭 Анализ полученных данных осуществлялся с использованием собственной разработки Escape
🍭 Выбор целей для анализа на основе сведений от Majestic Million
🍭 Использование Kubernetes для управления нагрузкой на получившуюся системы – одновременно работали 150 instance’ов
🍭 69 часов на сбор информации, 189.466.870 URL, получение заветных API Token

Больше подробностей про исследование можно найти в отчете от Escape (~ 23 страницы), который мы направим в следующем посте.
👍51
Cvemap: обогащение информации об уязвимостях

Всем привет!

Год от года уязвимостей становится все больше и без того непростой процесс их устранения становится еще более сложным.

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

Одним из таких проектов стал Cvemap. Он агрегирует информацию из таких источников как:
🍭 Known Exploited Vulnerability Catalog (KEVC). Информация о наличии exploit для уязвимости
🍭 Exploit Prediction Scoring System (EPSS). Оценка вероятности эксплуатации уязвимости
🍭 Proof of Concept (POCs). Примеры того, как можно эксплуатировать уязвимость
🍭 Nuclei Templates и не только. Наличие шаблонов поиска уязвимости с использованием Nuclei

Вся эта информация может упростить процесс управления уязвимостями. С исходным кодом проекта, а так же примерами его запуска можно ознакомиться в GitHub Repo.
6👍4
В чем отличие между Docker контейнерами и подами в Kubernetes?

Всем привет!

Может показаться, что ответ на этот вопрос очевидный: мы привыкли к тому, что поды - это просто абстракция над контейнерами. Однако это не совсем так...

В этой интерактивной статье автор детально изучает что же на самом деле происходит при запуске контейнеров и подов, и отвечает на некоторые интересные вопросы:

🎹 Какие linux namespaces создаются при запуске Docker контейнеров и подов Kubernetes?
🎹 Как контейнеры и поды работают с Linux cgroups?
🎹 Можно ли запустить настоящий Kubernetes под без Kubernetes?

Статья будет интересна как начинающим DevOps инженерам, так и продвинутым специалистам, которые хотят детально знать, что же происходит в операционной системе "под капотом". А так же на сайте много других полезных обучающих статей!
👍12🔥6🥰21
Kubernetes: как усложнить себе жизнь?

Всем привет!

Статьи о том, как «делать не надо» иногда полезнее тех, в которых рассматриваются лучшие практики и советы о том, как и что лучше сделать.

В статье Автор предлагает рассмотреть следующие anti-patterns:
🍭 Отсутствие Request для ресурсов
🍭 Недостаток мониторинга и журналирования
🍭 Очень привилегированные контейнеры (когда зачастую этого не требуется, но так проще «стартовать»)
🍭 Использование namespace Default для создания ресурсов
🍭 Не использование PodDisruptionBudget
🍭 Не использование podAntiAffinity и не только

Для каждого «вредного совета» Автор описывает почему так делать не стоит, а также приводит примеры того, «как правильно».

Если совсем просто – Kubernetes не волшебная технология и не делает все самостоятельно, очень во многом ему надо «помогать», чтобы он работал так, как хочется пользователям.
👍10🔥31🤩1
Обновление Testing Handbook и правил Semgrep

Всем привет!

Trail of Bits продолжают радовать своими наработками, которыми они делятся с сообществом. Testing Hanbook (о котором мы писали тут) был расширен разделом по CodeQL.

В нем можно найти:
🍭 Installation and first steps
🍭 Advanced usage
🍭 Continuous integration
🍭 Additional resources

Кроме этого, команда поделилась 30-ю правилами для Semgrep. Они позволяют анализировать Ansible, Java, Kotlin, Shell-скрипты и не только. Например, можно искать попытки загрузки чего-либо через http`\`ftp, отключение проверки SSL и много всего еще.

Подробнее про правила можно почитать в статье, а ознакомиться с ними в GitHub Repo.
2👍2
Kubernetes: security-oriented scheduling стратегии

Всем привет!

Читая статьи про безопасность Kubernetes чаще всего можно встретить упоминание важности RBAC, сетевой изоляции и Network Policy, использования Admission Controller для анализа манифестов с целью дальнейшего принятия решения о возможности создания ресурса и много чего еще.

Однако, крайне редко где-то упоминается очень сильная возможность Kubernetes – контролируемый scheduling, который, в том числе, может быть полезен и ИБ. Самый простой пример – сокращение поверхности атаки (если критичное отделено от не критичного) и затруднение lateral movement.

Команда Doyensec в своей статье разбирает возможные способы управления выбором целевых узлов:
🍭 nodeSelector
🍭 nodeName
🍭 (Anti) Affinity
🍭 Taints and Tolerations
🍭 Создание собственного Scheduler

Для каждого из рассмотренных способов приводятся его сильные и слабые стороны, а также комментарии про то, кто «выиграет», если в конфигурации будет указано сразу несколько вариантов «фильтрации».

В завершении статьи предоставляются рекомендации о том, на что стоит обратить внимание при создании собственной security-oriented scheduling стратегии.
👍5🔥42
Валидация API Token

Всем привет!

Leakey – bash скрипт, который позволит проверить валидность учетных данных (API Token), полученных, например, при проведении penetration test или при проведении reconnaissance.

«Внутри» уже есть проверки для:
🍭 Slack
🍭 GitHub
🍭 GitLab
🍭 Microsoft Azure и много чего еще

Если чего-то не хватает, то функционал можно просто расширить. Потребуется лишь дописать конфигурацию в файл signatures.json
👍8
Kubernetes OWASP Top 10: Comprehensive Guide

Всем привет!

По ссылке доступен массивный разбор (~ 23 минуты чтения) практик обеспечения информационной безопасности Kubernetes, описанных в OWASP Top 10.

Рассматриваются такие области, как:
🍭 Misconfigurations
🍭 RBAC: control and audit
🍭 Network Segmentation
🍭 Logging and monitoring и не только

Каждый раздел детально описывается: приводятся примеры и лучшие практики, способы как можно выполнять рекомендации. Дополнительно Автор описывает утилиты, которые могут быть использованы для автоматизации. Например, Kube-Bench, OPA, Prometheus, KubeView, RBAC Audit и еще много всего.

Материал может стать как отличным началом пути в обеспечении ИБ Kubernetes, так и источником «чего-то нового».
🔥6👍3
Glasskube: пакетный менеджер для Kubernetes

Всем привет!

Недавно был представлен проект Glasskube, позиционирующий себя как пакетный менеджер для Kubernetes.

Основной задачей, которую он призван решить, является помощь в установке ПО и поддержании его в актуальном состоянии. Сделать это можно как с использованием GUI, так и с использованием CLI.

Пока что с использованием Glasskube можно установить 4 пакета:
🍭 Cert Manager
🍭 Ingress Nginx Controller
🍭 Kubernetes dashboard (кто бы знал зачем)
🍭 Cyclops

Из планов – добавление популярных инструментов: Prometheus, Velero, GitLab, KeyCloak, HashiCorp Vault и т.д. Если в голове сразу появился вопрос – «Хм, у меня есть Helm, зачем мне Glasskube?», то у ребят есть ответ на это.

С одной стороны выглядит интересно, с другой – не очень понятно зачем нужно подобное ПО в уже и без того плотной «экосистеме» Kubernetes. А что Вы думаете по этому поводу?
👍91