AppSECT.A.
378 subscribers
427 photos
9 videos
126 links
Блог Ильи Шмакова

geminishkv.tech

- AppSec Toolchain
- DevOps
- Процессы DevSecOps
- Infosec Risks
- PMI
- Кулуарный ИБ

AppSec Teamlead СберСпасибо @sberbank

Лидер findevsecops.ru @fintechassociation

Преподаватель @bmstu1830, @miptru
Download Telegram
😜 Первый DevSecOps-Хакатон в РФ: зачем мы это сделали?

В 2024 провел первый в России DevSecOps-хакатон от findevsecops.ru и @fintechassociation. Среди организаторов были: Росбанк (такой родной и любимый), РСХБ, Yandex Cloud, Swordfish Security, ЦБ РФ, АФТ, MOEX Group, Высокие цифровые технологии, Холдинг Т1 (ГК Иннотех).

Важный вопрос, почему же не CTF?

На самом деле, это был настоящий практический вызов: за 3 дня собрать CI/CD пайплайн с security-проверками и при этом уложиться в требования ГОСТ 56939-2024. Мы проработали следующий концепт хакатона:

1. Вместо «ловли флагов» - полноценные пайплайны, близкие к боевым
2. Задания = реальные практики: SAST, DAST, SCA, Secret Detection, Vulnerability Management, Risk Analysis
3. Ключевой критерий - умение работать с False Positive/ Negative сработками, их триажем и группировкой в риски. А самое прикольное - масштабировать решение
4. Фокус не на теории, а на жизненном цикле разработки Secure-by-Design


В чем же профит для меня? Проверка гипотез:

1. На сколько проблемна практика внедрения процессов DevSecOps и AppSec Toolchain в CI/CD для рынка РФ в новых реалиях.
2. Какие проблемы чаще всего возникают у команд и как происходит расфокус?
3. Умеют ли команды работать с правильным триажом и не устранять все подряд, а только реальные аффектящие уязвимости и вытекающие риски на продукт?


В итоге, напомню:

• Swordfish Security — заняли 1-е место.
• Ростелеком — 2-е место.
• Россельхозбанк (РСХБ) — 3-е место.
• МГТУ им. Баумана (горжусь своей кафедрой на которой преподаю) — лучшая студенческая команда.

📌 Что это дало рынку:

1. ГОСТы можно «приземлить» на живой процесс разработки и на наши артефакты от сообщества
2. AppSec-командам нужны площадки, где можно «потрогать руками» новые подходы и решения в условиях импортозамещения
3. Здоровая конкуренция и исследования интересных для тебя, меня людей, а в том числе и групповой мэтч.


Итого: это только начало. Сейчас мы готовим новый хакатон для 2026 года - масштабнее, жёстче и ещё ближе к боевым условиям.

А также, по этому я считаю важным, что бы растить своих людей внутри команд разработки и поэтому следует обратить внимание на inseca.tech и курсы, как пример Security Champion.

#hackathon #appsec #devsecops #specialty #toolchain #vulnmanagement #course
🔥9❤‍🔥5
«my mom says I’m special”

#lol
🤣8
🛠 Карта DevSecOps Toolchain

Салюты,
Я ранее рассказывал, что готовил вот эту карту toolchain. На сейчас ее активно шарят, как пример у Лукацкого, там еще рядом есть описание процесса по ГОСТ 56939-2024 с уклоном в анализ рисков и инструментарий (расскажу про это аналогично). Вот эта карта инструментов показывает какие есть классы и типы инструментов. Прототип приложил к посту.

Также, вчера встретились с ребятками из сообщества FinDevSecOps @fintechassociation, где мы плотно обсудили планы на конец 2025 и 2026. Немного расскажу про свою часть:

Классной и отличительной особенностью является, что в новой версии:
- сделал раскраску, где зеленым - вендор РФ, желтым - зарубежный вендор, а свободное ПО фиолетовым
- структура в yml
- агрегируются мета данные о наличии сертификации, типе лицензии ПО, может ли быть импортозамещено, какой язык программирования, какие виды отчетов и иное
- вся верстка натянута на md materials и расметим на gpages
- мы будем принимать pull requeste на изменения для того, что бы эта карта шарилась и мы могли работать в едином поле с комьюнити
- на gpages фильтрация по мета данным
- сейчас пилю прототип описания каждого тула отдельно
- адаптивная визуализация
- убрал некоторые инструменты, которые не поддерживаются или пользуются меньшей популярностью, вследствие чего они не обновляются
- актуализировали инструменты

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

Планирую зарелизить в новой версии до конца года и дальше мы будем шарить в репозитория FDSO на github.com


Поэтому stay tuned 😜

#toolchain #appsec #devsecops #specialty #compliance #gost #vulnmanagement #techsolution
🔥9🤯3
🫡 SBOM: что это и для чего?

Software Bill of Material - файл в формате JSON или XML, который включает в себя инвентаризационный список всех компонентов (пакетов, библиотек), используемых в разрабатываемом приложении или необходимых для его работы.

В components SBOM указывается автор пакета, purl (Package URL), лицензия, хэш библиотеки, CPE (Common Platform Enumeration) и другие компоненты. Используется CycloneDX, SPDX (Software Packet Data Exchange) и SWID (Software Identification). Алгоритм прикреплен к посту.

SBOM позволяет решить две связанные задачи:
- Инвентаризировать все использованные в продукте (исходном коде, артефакте, операционной системе) компоненты
- Автоматизировать анализ их безопасности с помощью инструментов SCA (Software Composition Analysis)


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

Состоит из:
- Метаданные самого файла SBOM: спецификация, уникальный номер, метка времени
- Перечень компонентов
- Описание источника SBOM (блок externalReferences)
- Описание связей между компонентами (блок dependencies) - содержит название пакета из исходного кода и его зависимости, то есть пакеты, которые необходимы ему для работы. С помощью данных dependencies и названий библиотек можно построить граф зависимостей, в том числе транзитивных.


Как это выглядит //SPDX //CycloneDX



{
"spdxVersion": "SPDX-2.3",
"dataLicense": "CC0-1.0",
"SPDXID": "SPDXRef-DOCUMENT",
"name": "example-project-1.0.0",
"documentNamespace": "http://spdx.org/spdxdocs/example-project-1.0.0-abc123",
"creationInfo": {
"created": "2025-06-24T10:00:00Z",
"creators": [
"Tool: spdx-sbom-generator-0.0.1",
"Organization: ExampleOrg"
],
"licenseListVersion": "3.23"
},
"packages": [
{
"name": "lodash",
"SPDXID": "SPDXRef-Package-Lodash",
"versionInfo": "4.17.21",
"downloadLocation": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"filesAnalyzed": false,
"licenseConcluded": "MIT",
"licenseDeclared": "MIT",
"supplier": "Organization: Lodash Team",
"originator": "Person: John-David Dalton",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
"referenceLocator": "pkg:npm/lodash@4.17.21"
},
{
"referenceCategory": "SECURITY",
"referenceType": "cpe23Type",
"referenceLocator": "cpe:2.3:a:lodash:lodash:4.17.21:*:*:*:*:*:*:*"
}
]
}
...
]
}





{
  "bomFormat": "CycloneDX",
"specVersion": "1.6",
  "version": 1,
  "metadata": {
    "timestamp": "2025-06-24T10:00:00Z",
    "tools": [
      {
        "vendor": "CycloneDX",
        "name": "cyclonedx-cli",
        "version": "0.24.0"
      }
    ],
    "component": {
      "type": "application",
      "name": "example-project",
      "version": "1.0.0",
      "purl": "pkg:npm/example-project@1.0.0"
    }
  },
  "components": [
    {
      "type": "library",
      "name": "lodash",
      "version": "4.17.21",
      "purl": "pkg:npm/lodash@4.17.21",
      "hashes": [
        {
          "alg": "SHA-256",
          "content": "e3b0c44298fc1c149afbf4c8996fb924..."
        }
      ],
      "licenses": [
        {
          "license": {
            "id": "MIT"
          }
        }
      ]
      ...
    }
  ]
}



Итого: SBOM нужен для контроля компонент и может использоваться как проверка на подмену зависимостей или для golden-repo. Это то, что позволяет контролировать окружение и сами сборки, что дает нам возможность управления и построение Vulnerability Management.


Далее в постах рассмотрим также как работает например Cdxgen, Syft и тд.

#toolchain #sbom
🔥4
Кстати, от ЛАНИТ напоминалка о ивенте, который нас вместе ждет 2/10/2025 с 10:00. Сама дискуссия пройдёт с 15:00 до 16:00.

📍 Место проведения: LOFT#2, ул. Ленинская Слобода, д.26, стр.11.

Для участия нужна
регистрация.

#conf #pmcases #humanres #кулуарка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
🛠 .gitignore: почему важно игнорирование избыточных артефактов?

Салют,
Часто встречается, что команда разработки, в своих проектах не исключает артефакты, которые не участвуют в сборках, но при этом хранятся в ветках проекта GitSCM, да и с историей изменений.

Рассмотрим детальнее:

.gitignore - это конфиг (по факту файлик) игнорирований для Git, который сообщает ему, какие файлы и каталоги следует не учитывать, то есть не отслеживать и не добавлять в репозиторий.

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

1. Файлы, образующиеся в процессе и результате компиляции проекта. Как правило, для них отводятся каталоги с именами вроде target/, output/, release/, debug/
2. Файлы, генерируемые тестовым фреймворком, профилировщиком, дебаггером и т.п.
3. Сгенерированная из кода документация — только если не генерируется в отдельный репозиторий, через который потом развертывается сайт с документацией (пример gpages)
4. Файлы, создаваемые при выполнении кода: журналы (*.log), результаты работы и т.п.
5. Временные файлы текстового редактора или среды разработки (*~)
6. Файлы, создаваемые операционной системой, например thumbs.db, .DS_Store


Пример:

- В C# хранится вывод, чтобы можно было легко собрать проект, но можно настроить, что запускалась при сборке, однако это возможно не для всех скриптов
- Хранить или не хранить composer.lock - нужно понимать его работу
- Нельзя заигнорить .idea/, потому что отвалятся настройки проекта, либо нельзя просто взять и оставить .idea/, потому что личные пути попадут ко всем и наплодят конфликтов.

Ремарка:

Для хранения есть классная возможность, как использование packages в виде артефакта (рассмотрим далее). Если можете использовать NuGet, Composer, CPAN, Lein, Maven, то бинарные зависимости должны быть там.

Итого: рекомендую исключать не только то, что не используется, но и что может содержать в себе какую-то историю важных изменений, которые позволят ресерчить проект.

Реко: для создания .gitignore удобно использовать генераторы шаблонов, типа
этого.


#toolchain #reco #specialty
🔥4
😅 Свежачок подъехал,
Планирую выступить спикером на конфе 7/10/25 - "Оптимизируем инструментарий для процессов безопасной разработки". Интересная конфа, которая помогает послушать нетривиальные точки зрения ребят на рынке.

Мы обсудим:

• Практические кейсы оптимизации стека — меньше инструментов, больше пользы
• AI Security: как защитить код, данные и ML-модели от новых угроз
• DevSecOps без тормозов: безопасность как встроенный элемент CI/CD
• Экспертный нетворкинг: AppSec и DevSecOps лидеры делятся опытом


В прошлом году также выступал (ознакомиться) с темой "Quality Gate: повышение оценки защищенности для безопасной разработки ПО". Есть видеозапись, можем посмотреть тут.

С программой можно будет ознакомиться вот тут.

Присоединяйтесь, буду рад вас видеть там и мы с кайфом обсудим интересные вопросы, которые задают себе люди по ценности ИБ в командах разработки. Регистрируйтесь вот тут (там еще есть пару вариантов).

#conf #pmcases #humanres #кулуарка
🔥5
🛠 Semgrep: custom как фича и почему начинаем с него?

Салют, начнем,
Я бы хотел поговорить про

Static Application Security Testing - метод анализа, при котором проверяется статичный исходный код на наличие уязвимостей. Это подход «белого ящика».


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

- Tool позволяет работать с приложением в нетривиальном режиме: dataflow/ taint-трекинг, межфайловые цепочки
- Приоритизирует уязвимости зависимостей по достижимости/использованию (reachability)
- Масштабируется и в custom под написание своих собственных политик
- Определение и валидация активных секретов
- Анализирует код с помощью синтаксических шаблонов
- Поддерживает множество языков (Python, JavaScript, TypeScript, Java, Go, C/C++, Ruby и др.)
- baseline-commit
- Для фиксирования инкременты без задержек с вычислением diff не нужно костылить
- Может в pre-commit
- Тип лицензии: LGPL 2.1 (ранние версии — проприетарные, сейчас полностью opensource)
- Форматы отчетов: JSON, SARIF, GitLab SAST, JUnit XML, Text, Emacs, Vim


Вообще, задуман инструмент как opensource, который анализирует код с помощью синтаксических шаблонов, но у него есть платная версия, которая включает дополнительные правила, делает более глубокий анализ, гибок и многое другое. А мы и не знали, что хорошее платненько. Лицензируется по количеству контрибьюторов по 40 американских.

Приведу команды для работы с инструментов, которые помогут разобраться детальнее и научиться им пользоваться



# Установка через pip (или brew, docker)
python -m pip install semgrep
 
# Сканирование репозитория
semgrep scan --config auto # автоопределение языка и базовых правил
semgrep scan --config p/python # только Python-правила (варианты - p/gosec/ golang/ javascript/ dockerfile/ react/ secrets/ owasp-top-ten)
 
# CI/CD
semgrep ci # для использования semgrep в составе пайплайна
semgrep scan --config "p/ci" --exclude "tests/" # исключение директории
semgrep ci --allow--untristed-validators # разрешение работы с ненадежными источниками правил, отличными от semgrep.dev
semgrep ci --code # запуск статического анализатора от semgrep
semgrep ci --autofix # внедрение в правило автоправок от инструмента (экспериментальная функция)
semgrep ci --dryrun # отмена внесения автоисправлений в правила
 
# Вывод в SARIF (для GitHub Security)
semgrep scan --config auto --sarif -o results.sarif

# Docker
docker pull returntocorp/semgrep
docker run -v $(pwd):/src returntocorp/semgrep semgrep scan --config auto // запуск сканирования



Ну и зацепим как происходит интеграции в pipeline

CI/CD



semgrep_scan:
  stage: security
  image: returntocorp/semgrep
  script:
    - semgrep scan --config auto --sarif -o semgrep.sarif
  artifacts:
    reports:
      sarif: semgrep.sarif





pipeline {
  agent any
  environment {
    REPORT_DIR = 'semgrep-reports'
  }
  stages {
    stage('Semgrep Scan') {
      steps {
        sh '''
          docker run -v $(pwd):/src returntocorp/semgrep \
            semgrep scan --config auto --json -o ${REPORT_DIR}/semgrep.json
        '''
      }
    }
  }
  post {
    always {
      archiveArtifacts artifacts: '${REPORT_DIR}/**'
    }
  }
}


#toolchain #sast
🔥5🤯2
Ух, конференция GuardConf 2025 в самом разгаре 😅

В итоге, дорогие, на базе и уже готовлюсь к модерации своей секции @guardconf

Людей приятное количество, зал будет битком по ходу, а пока напомню, кто будет вместе со мной в треке: Андрей Карпов PVS-Studio, Светлана Газизова Positive Technologies, Антон Володченко Codescoring, Владислав Крылов AKTIV CONSULTING.

Тематика вопросов:

1 - Кому и зачем нужна безопасная разработка, какие специалисты этим занимаются?
2 - Какие принципы должны быть заложены в продукте с самого начала?
3 - Как оцениваются риски ИБ для уязвимостей и считают ли их финансовый убыток?
4 - Какие типы атак наиболее актуальны на конвейер поставки?
5 - Как выстроить процесс безопасной разработки в организации?
6 - Показатели и критерии безопасности ПО

Синкнемся на митапе 🙏

#conf #pmcases #humanres #кулуарка
🔥5❤‍🔥3
🎧 DevSecOps без фильтров: подкаст по безопасной разработке ПО

Новая рубрика без фильтров, прикрас и только по делу,
Самое приятное, там обсуждается кулуарный ИБ и реальные комфортные разговоры о том, как строить безопасную разработку и не утонуть в бюрократии.

Буду периодически закидывать highlites, которые позволяет получать интересную и полезную выжимку.

Ранее с Aktiv.Consulting @aktivcons мы провели классную беседу, которая вскрыла острые вопросы рынка про то как взаимодействовать ИБ и командам разработки, как не "влетать с двух ног" и почему важна безопасная разработки. Отдельно красочно описали каким образом стоит считать ущерб инцидента. Примеры разбирали на базе Банковской отрасли.


В первом подкасте мы разобрали

- Зачем DevSecOps бизнесу, а не только ИБ-специалистам
- Какой минимальный набор практик нужен, чтобы стартовать
- как измерять пользу от внедрения и что делать с «провальными» метриками
- Кто такие Security Champions и как они спасают команды от ошибок в части ИБ
- Какие тренды и перспективы есть у безопасной разработки в России


Отмечу важное

Именно этот выпуск до сих пор актуален — он как навигатор для тех, кто задумывается о DevSecOps или хочет вытащить свой процесс на новый уровень.

Смотри и слушай:
▶️VK Видео
▶️Rutube
🎼Podster
🎼Yandex Музыка

В этой рубрике я буду разбирать самые спорные и практичные моменты: короткие видео, дополнительные кейсы, конкретные инструменты. Чтобы у вас была не просто теория, а рабочие ответы «как это сделать у себя».


А дальше будет только интереснее. Следите за DevSecOps без фильтров — всё самое полезное о безопасной разработке будет здесь.

#подкаст #кулуарка #devsecops #appsec #pmcases #roadmap #riskanalys #vulnmanagement #humanres #compliance #gost
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤‍🔥2
🔥 DevSecOps уже не «дополнение», а must-have для бизнеса

В материале РБК Trends я поделился своим опытом, где мы разбираем, почему безопасность перестала быть «чем-то на потом» и стала частью самой разработки.

Ремарка: согласно исследованию Positive Technologies, 83% российских корпораций уже уделяют внимание security-практикам при создании собственного ПО.


В статье сможете ознакомиться с мыслями по подходу DevSecOps и каким образом принципиально происходит встраивание ИБ в разработку.

Также своим опытом делятся Александр Самсонов Код Безопасности, Светлана Газизова Positive Technology, а также мои коллеги Николай Сальников, Александр Чербунин из ЛАНИТ.

Ключевые мысли, которые откликнутся многим:

- Инструменты — это не DevSecOps. Без процессов и культуры они превращаются в дорогую декорацию
- Основное сопротивление идёт не от технологий, а от людей: привычка «мы пишем код, а вы потом проверяйте» слишком крепкая
- Стартовать лучше маленькими шагами: встроить проверки в CI/CD, отработать триаж, постепенно прокачивать культуру команды.
- Не «слишком много работы», а экономия времени на старте, в процессе, а не в конце, когда фича в проде и могут быть последствия
- Самое ценное в работе с ИБ: PRE-, POST-условия, то есть система ограничений, допущений, когда мы можем договориться


Если по простому, по крестьянски: автоматизация — это только 20% успеха. Остальные 80% — это то, как люди договариваются между собой и берут ответственность за безопасность и понимаю, что делают. Прикрепил к посту ключевые мысли от себя.

Читать статью: Практики DevSecOps: как меняется подход бизнеса к цифровой безопасности

#кулуарка #devsecops #paper #pmcases #vulnmanagement #specialty
🔥3
"Да ладно, Дядя Федя..."

#lol #кулуарка
🤣4
🛠 AppSec инструменты: синкнемся по определениям

Ремарка сходу:

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

Ощущение, все те же, что как бы интересует AppSec и процесс DevSecOps давненько, но главное бы не впутываться и скорее потеряться теряться (а вдруг там сожрет?), да и в целом так повсеместно в смежном PMI, либо ценности продукта.

Вот задумайтесь, когда в последний раз кто то корректно вам давал нетривиальную задачу для теста или развития ваших скиллов? Да и еще подходящую под вас, даже речь не о том, что только вы это в состоянии решить, а просто "тупо" некому.

Окейси, немного вкинули, хоть красивое будет 😄

По этой причине решил подобрать общую подборку определений для toolchain. Это для того, что бы мы концептуально могли понимать друг друга, итак:

- DAST (Dynamic Application Security Testing) – динамическое тестирование безопасности приложения, то есть это имитация реальных атак на приложение во время его работы
- SAST (Static Application Security Testing) – статический анализ кода без его запуска на наличие ошибок и уязвимостей в исходном коде
- SCA (Software Composition Analysis) – анализ состава компонент (зависимостей) ПО
- OSA (Open Source Analysis) – анализ компонент с открытым исходным кодом при попадании в периметр разработки, то есть процесс проверки безопасности open-source компонентов, включающий в себя совокупность инструментов SCA, SCS и анализа лицензионных рисков. 
- SCS (Secure Code Standarts) - набор правил и практик, используемый разработчиками ПО с целью предотвращения нарушений безопасности, неконтролируемых утечек данных и других видов угроз
- License Policy - нарушение лицензионного соглашение, что то на подобии соблюдения авторского права (это что то типа DMCA с с помесью части Trade Secret)
- SBOM (Software Bill of Materials) - инвентаризационный список всех компонентов (пакетов, библиотек), используемых в разрабатываемом приложении или необходимых для его работы
- NVS (Network Vulnerability Scanner) - сетевой сканер уязвимостей с уклоном на L3/L4 c ограниченными DAST-возможностями (не тривиальненько)
- BCA (Bytecode and Container Analysis) – анализ бинарного кода и состава контейнеров
- CIS (Container Image Scanner) – сканирование образов контейнеров на уязвимости (Container Security)
- CSPM (Cloud Security Posture Management) – контроль конфигураций Kubernetes и облачных сред
- SM (Secret Management) – управление секретами


Итого: теперь вы сможете отличать на пальцах то, о чем вам говорят ребята из ИБ, когда приходят и говорят о каких то сработках и уязвимостях.

#toolchain #appsec #devsecops #specialty
🔥3