Получи случайную криптовалюту за регистрацию!

DevSecOps Wine

Логотип телеграм канала @sec_devops — DevSecOps Wine D
Логотип телеграм канала @sec_devops — DevSecOps Wine
Адрес канала: @sec_devops
Категории: Технологии
Язык: Русский
Количество подписчиков: 5.92K
Описание канала:

"Shift security left (everywhere)"
🍷Канал, в котором публикуются материалы о выстраивании безопасного DevOps
По всем вопросам: @dvyakimov
Другие проекты:
- Public cloud security:
@cloud_sec
- AppSec and DevSecOps Jobs: @appsec_job

Рейтинги и Отзывы

4.00

2 отзыва

Оценить канал sec_devops и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

1

2 звезд

0

1 звезд

0


Последние сообщения 7

2021-08-13 09:37:44
3.9K viewsDenis Yakimov, 06:37
Открыть/Комментировать
2021-08-12 09:37:55
Security as code: The best (and maybe only) path to securing cloud applications and systems

Статья на тему, как выстроить "безопасность как код" (SaC) по мнению McKinsey. Обратите внимание на картинку с описанием мер безопасности на каждом этапе процесса разработки (No developer access to binary artifacts, Deployments must be approved by product owner, ...).

Чего мне не хватает в подобных статьях, так это примеров. Особенно, если говорить про "SaC", то есть то, что вообще нечасто встретишь в enterpise. Для меня, например, одна из реализаций SaC - это внедрение подхода BDD с помощью Gauntlt. У кого-то SaC - это прежде всего "Compliance as Code" в виде Chef InSpec или OpenSCAP. У кого-то это реализация policy engine в виде OPA. Сами McKinsey приводят в качестве примера автоматическое шифрование ПДн, которое "запускается всякий раз, когда разработчик отправляет код."

А что для вас Security as Code?

#dev #ops
2.4K viewsDenis Yakimov, 06:37
Открыть/Комментировать
2021-08-09 09:42:17
Threat Hunting with Kubernetes Audit Logs

Небольшая статья (из серии) на тему, на что можно смотреть при разборе логов Kubernetes API, чтобы выявлять подозрительные действия. Здесь же есть примеры правил, которые можно переиспользовать как-то в своих SIEM. Принцип простой - выявляем наиболее частые запросы, где пользователю было недостаточно прав доступа и собираем инфу о том, кто, куда и с каким verb. Также предлагается фильтровавать по конкретному verb (например list) и user.username (чтобы отметать системный трафик).

Да, это просто и далеко не всегда эффективно, но в качестве первых шагов вполне себе смахивает на меру защиты.

#ops #k8s #attack
1.4K viewsDenis Yakimov, 06:42
Открыть/Комментировать
2021-08-06 10:43:47 Jenkins secrets extraction

Возвращаемся к нашему квизу, который вызвал бурные обсуждения в чате. 59% человек посчитало, что схема является безопасной с точки зрения управления секретами. Как итог они оказались неправы. Дело в том, что упомянутый плагин сredentials-binding может позволить разработчикам извлечь секреты даже если секреты используются во внешнем хранилище Vault. Но дело даже не в плагине, а в самой возможности разработчика влиять на конфигурацию сборки, ведь с тем же успехом можно извлечь секреты напрямую из $JENKINS_HOME/credentials.xml и $JENKINS_HOME/secrets воспользовавшись hudson.util.Secret.decrypt или сторонними инструментами.

Так как разработчик имеет доступ к конфигурации сборки и ее запуску в Jenkins, то помимо извлечения секретов может быть поднят reverse shell или вызван DoS всего сборочного конвейера. Все зависит от сетевых доступов и прав на агенте сборки.

Какой же вывод? Как ни странно, то компенсирующей мерой сделать так, чтобы конфигурация джобы тащилась из внешнего Jenkinsfile, который будет расположен в Git, а разработчик мог эту джобу только запустить. Jenkinsfile на стороне Git-репозитория в свою очередь будет защищен принудительным merge approval и другими мерами, которые могут быть реализованы на стороне SCM.

#dev #ops #talks #attack
2.0K viewsDenis Yakimov, edited  07:43
Открыть/Комментировать
2021-08-05 16:23:03 Jenkins secrets quiz

Сегодня мы сделаем небольшой квиз. У команды разработки есть Jenkins, используемый для сборки. Jenkins в свою очередь необходимы секреты для получения доступа к сторонним prod-системам (разработчики используют плагин сredentials-binding). Разработчики самостоятельно пишут groovy-скрипты в Jenkins с выданными правами на запись и запуск согласно матрице доступов. Безопасно ли это?

Ответ будет завтра.

#dev #ops #talks
968 viewsDenis Yakimov, edited  13:23
Открыть/Комментировать
2021-08-05 09:44:54 Threat Modelling & Supply-Chain (Part 3: Security Controls)

В прошлых постах [1,2] мы определили угрозы, которые, как нам кажется, более или менее полно покрывают перечень действий, определенных нами в рамках процессов над активами.

Следующее, что нам нужно сделать - определить меры безопасности (security controls). Здесь два варианта - начать указывать их на каждом процессе или потоке данных в рамках схемы, либо выписать отдельной табличкой напротив каждой нашей угрозы (чтобы убедиться, что мы закрываемся от всего, что сами для себя определили). Говоря более предметно, давайте вернемся к supply chain атакам. В частности возьмем за основу упоминаемый ранее фреймворк SLSA и рассмотрим угрозу компрометации CI/CD системы.

Когда мы говорим про компрометацию системы, то речь, как правило, заходит о полноценности hardening'а этой системы, а именно о таких доменах, как аутентификация, авторизация, сетевая безопасность, конфигурация, логирование и безопасная работа с секретами. Соответственно в этих доменах и пробуем определить полный перечень мер безопасности.

Вот примеры реализации hardening'а для разных решений CI/CD систем:
- Security Practices in GitLab
- Managing Security of Jenkins
- Securing Jenkins CI Systems
- Security hardening for GitHub Actions
- TeamCity Security Notes (лучше всего на мой взгляд сделано здесь)
- CircleCI Security

К мерам защиты CI/CD может относиться ролевая модель, отсутствие анонимной аутентификации, обязательная интеграция с identity-провайдером, запрет на доступ в Интернет для сборки, требование к изолированности агентов от агентов развертывания и обязательному логированию с последующей отправкой в SIEM-систему. Конечный список требований зависит исключительно от возможностей вашей CI/CD системы.

Рассматривая компрометацию системы хранения кода (Gitlab/Bitbucket) и артефактов (Nexus Repo, Artifactory) формируем требования безопасности по аналогии из тех же доменов.

Если мы говорим про supply chain атаки, то помимо компрометации самих систем, участвующих в процессе разработки, отдельное внимание надо уделить угрозе нарушения целостности перемещаемых активов, а именно коду и артефактов. Здесь я советую снова обратиться к SLSA-фреймворку.

Примеры угроз, реализуемых внутренним нарушителем:
- Публикация вредоносного кода в релизную ветку от имени скомпрометированной УЗ разработчика
- Указание в системе сборки кода из чужой системы хранения кода
- Указание в системе развертывания артефакта из чужой системы хранения артефактов
- Загрузка в Artifactory артефакта не прошедшего систему сборки

Обратите внимание, что при отсутствии проверки целостности и прохождения дополнительной аутентификации между системами сборки, хранения кода и артефактов нам необязательно получать полный доступ над системами. Например, достаточно указать неверные входные значения (сторонний git-репозиторий) в качестве параметров сборки, либо опубликовать артефакт в Artifactory вручную через CLI минуя security-проверки в рамках централизованного процесса сборки. Ещё один пример - изменить скрипт развёртывания так, чтобы установить вредоносный дистрибутив в прод вместо проверенного security-сканерами.

В помощь сюда приходят проекты вроде Notary или Sigstore. Кто-то реализует это посредством подписи SBOM на всех этапах разработки, кто-то ограничивается тэгированием артефактов без возможности перезаписи разработчиком. Неплохим требованием безопасности будет обязательный merge-approval для всех бизнесовых репозиториев, чтобы избежать нарушения целостности master/release ветки при компрометации УЗ разработчика.

#dev #ops #threatmodeling
1.5K viewsDenis Yakimov, 06:44
Открыть/Комментировать
2021-08-05 09:44:49
2.7K viewsDenis Yakimov, 06:44
Открыть/Комментировать
2021-08-04 10:59:23 Threat Modelling & Supply-Chain (Part 2: Threats & Threat Actors)

Следующим этапом определим пользователей наших процессов. Эти же пользователи будут нашими потенциальными нарушителями (threat actors). Рассматривая атаки на цепочки поставок это могут быть внутренние нарушители (разработчики, администраторы CI и CD систем, администраторы кластера, сопровождение ОС и так далее) и внешние (пользователь, который может повилять на общедоступные репозитории).Также на этом этапе мы понимаем, где еще могут использоваться наши защищаемые активы (секреты и код на рабочих станциях).

Далее переходим к главному и самому сложному - раскидывание угроз. Сложность заключается в том, чтобы определить для себя исчерпывающий перечень угроз. В лучшем случаем вам может помочь банк угроз (например MITRE), в худшем случае придется опираться на собственный опыт и известные кейсы.

На помощь могут придти методологии вроде STRIDE (она поможет нам раскидать угрозы по заранее определенным классам), а также деревья атак (поиск атак для реализации угроз посредством их зависимостей друг с другом).

На этом этапе мы можем получить уже множество интересных открытий. Например, оказывается, что разработчик имеет возможность изменять пайплайн развертывания подменяя источник артефактов, внедряя backdoor или малварь. На этом же этапе мы можем определить у себя возможность реализации Dependency Confusion при скачивании зависимости разработчиком из Artifactory и многое другое.

В следующих постах мы поговорим про приоритизацию угроз и формирование требований ИБ по результатам модели угроз. Если вы уже хотите попрактиковаться, то можете почитать пример моделирования угроз для облачного приложения в AWS с использованием STRIDE. Хорошим материалом является также Threat Modeling Training от компании Segment, где есть простые и понятные слайды по всем этапам моделирования угроз.

#threatmodeling #dev #ops #talks
1.4K viewsDenis Yakimov, edited  07:59
Открыть/Комментировать
2021-08-04 10:59:18
1.3K viewsDenis Yakimov, 07:59
Открыть/Комментировать