This media is not supported in your browser
VIEW IN TELEGRAM
Всем хорошего понедельника и удачной недели😇
А я умираю от аллергии
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🔥1
Даа, именно для пентестеров, и снова не для аппсеков. Когда-нибудь, ребят, когда-нибудь.
Но сейчас у нас праздник на другой улице, поэтому прочь дурные мысли — лучше расскажу вам про классное событие, в котором может поучаствовать буквально каждый, кто не поленится подать заявку до 30 июня.
Что от вас нужно, чтобы попасть в историю:
📌
Самое главное: важны именно ваш подход, идея и креативность. Никто не ждёт от вас полного описания эксплуатации и step-by-step гайдов, оставьте их для отчётов и багбаунти.
Что категорически НЕ нужно делать:
Мероприятие проводится уже в третий раз, и его главная цель — выделить и наградить лучших спецов отрасли, а ещё показать, какой вклад они вносят в развитие пентеста и российского сообщества.
И самое приятное — участие полностью бесплатное. Можно отправлять хоть одну, хоть несколько историй, главное — не тянуть до последнего момента
Подать заявку и узнать детали можно здесь — ТЫК
Жду ваших крутых историй и обещаю за вас болеть, даже если вы не аппсек из бигтеха
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥5🤔2
Forwarded from s3c4rch
на ИБ митапе знакомый из @offensiverescuerangers наконец-то освятил боль всех триажеров, уважение и почет ему - не каждый сможет из своего же вопроса с конфаба ВК сделать доклад 🍿
«Краткость - сестра Багхантера» ost VK security confab
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12🤔1
Да, вынужден признаться. Я –
В данный момент могу сказать спасибо информации Николая Павлова, которая дала посмотреть на этот мир в курсе от Softline, ChatGPT, который поправляет меня, исправляет ошибки и ставит запятые, когда я пишу большой текст (пока >35 000 слов, не считая мемы, схемы, документацию и переведённые стандарты с mitre atlas (сейчас готовлю интерактивный сайт на русском языке с автообновлением));
1. Создание и публикация сайта с интерактивной mitre atlas, документацией и самим документом в бета-версии;
2. Тестирование инструментов в компании;
3. Публикация документа версии 1.0 на Github;
4. Публикация части инструментов;
5. Кооперация с исследователями;
6. To be continued…
Процесс идёт достаточно долго из-за загруженности на работе, но я надеюсь, что справлюсь с данной задачей.
Далее я буду чередовать посты про appsec (готовы уже 3) с постами про MlSec.
MlSecOps-а не существует
Всем добра и не лысеть
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21😁5❤3🤔2
В этот раз — без громких CVE и срочных патчей. Зато
Началось всё, как водится, с того, что кто-то где-то устал. Устал платить аннотаторам, устал ждать обратную связь по каждому «ответу на вопрос», устал строить пайплайн, в котором человек вручную решает, какой из двух ответов от модели «более человечный». А потом в 2022 году в Anthropic решили: а почему бы не заменить человека другой LLM-кой? И родился RLAIF — Reinforcement Learning from AI Feedback.
Схема достаточно проста:
- Актёр (LLM) генерирует несколько ответов;
- Критик (другая LLM) оценивает их по ряду метрик: полезность, безопасность, релевантность;
- На основе этих «оценок» модель оптимизируется — чаще всего через PPO или DPO.
Получается замкнутый цикл, одна модель обучает другую, и всё это — без привлечения людей. Что логично - "зачем вручную объяснять LLM, как звучит «нормальный» ответ, если другая LLM уже умеет это распознавать?"
Основные плюсы:
- Уходит потребность в тысячах аннотированных пар от людей;
- Быстрее запуск и масштабирование пайплайна;
- При хорошем критике — качество на уровне RLHF.
Минусы тоже есть, и главный из них — критик. Если он неточен, непоследователен или слишком «мягкий» — результат быстро уходит в сторону. Тут важно выбирать модель, которая адекватно отражает человеческие ценности и «понимает» контекст, а не просто выдаёт рандомное число.
Если хочется попробовать на практике:
- trl — PPO, DPO, RewardModel из коробки;
- Axolotl — Yдля YAML-фетишистов, кто не любит писать скрипты;
- DeepSpeed Chat — для обучения крупных моделей (если хочешь учить 40B и при этом не убить сервер);
- Colossal-AI — максимальное ускорение на уровне инфраструктуры.
- Актёры: Mistral, LLaMA 2, Falcon
- Критики: Vicuna, Alpaca, GPT-4-аналоги или кастомные reward-модели.
- Датасеты: OpenHermesPreferences, Dahoas, HH-RLHF — всё, что содержит предпочтения «лучший vs худший» ответ.
- RLAIF уже используется в продакшене в ряде ML-команд, и всё больше моделей обучаются именно так;
- Мультимодальный RLAIF уже на горизонте (текст + картинки + немного боли);
- В критически важных отраслях (SecOps, Healthcare) уже тестируются гибридные модели, где финальную проверку проводит человек, а черновую — LLM-критик.
Идея о том, что ИИ может обучать другой ИИ — уже не фантастика. Это реальность. Но как и в любой системе с обратной связью, важно понимать: кто даёт оценку, тот и формирует финальный результат. Поэтому если планируете строить обучение на RLAIF — начните не с модели, а с критика. От его адекватности зависит весь процесс.
#mlsec
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤2🤔1
Внимание: CatSwap в этом тексте — не стартап и не “очередной ”, а наш pet-проект для иллюстрации. Он нужен, чтобы показать, как Web3-сервисы должны мыслить в части защиты API — не опираясь на бэкэнд, а начиная с Gateway.
В Web3 большинство угроз входит не через «модные» DeFi-примитивы, а через вполне классический API-интерфейс. Просто формат другой: не form-data, а подписанный JSON с маршрутом, суммой и временной меткой. CatSwap, как агрегатор, — типичный пример. Все транзакции, котировки, swap-запросы проходят через публичное API.
▫️ HTTPS (TLS 1.2+) + WAF
• Принудительное HTTPS;
• WAF / WAF с OWASP CRS, бот-контролем и Geo-ACL.
▫️ Аутентификация
• JWT в
envoy.filters.http.jwt_authn;• Web3-подписи (EIP-191/712) через Proxy-Wasm (X-Address + X-Signature);
• Challenge-nonce, защита от replay-атак.
▫️ Авторизация (OPA / ExtAuthz)
• RBAC/ABAC-политики по ролям, slippageTolerance, gasPrice, геопозиция, времени суток;
• Динамические политики Rego + GitOps-репозиторий.
▫️ JSON-валидация запросов
• OpenAPI-схемы → Envoy JSON Validator, ошибка 400 при несоответствии;
• Чёткое разделение обязательных и опциональных полей.
▫️ Rate Limit & QoS
•
/v1/quote ≤ 1000 r/m; /v1/swap ≤ 100 r/m;• Circuit breaker, retry, max concurrent;
• Приоритет маршрутов, Kubernetes Resource Limits.
▫️ API Gateway (Envoy + Proxy-Wasm)
• JWT (RS256) через envoy.filters.http.jwt_authn;
• JSON Schema Validator — строгая валидация payload;
• Rate-limit, circuit breaker, retry с экспоненциальным backoff;
• ExtAuthz → ML-анализ;
• mTLS внутри кластера (Istio-SDS или Envoy native).
▫️ Логирование & мониторинг
• JSON Access Logs (
path, key, user_id, latency, tx_hash);• Prometheus (p95/p99, ошибки, RPS) / Grafana—дашборды;
• OpenTelemetry + Jaeger; трассировка end-to-end;
• GitOps-аудит конфигов (ArgoCD/Flux).
▫️ Management plane hardening
• Bastion-host с MFA для доступа к административным интерфейсам;
• Жёсткие IAM-роли и Just-In-Time elevation для операторов.
▫️ CI/CD & GitOps
• Инфраструктура как код (Terraform, Helm);
• ArgoCD синхронизация; PR-ревью, tfsec/checkov, canary-релизы.
▫️ Supply chain security & SBOM
• Генерация и хранение SBOM для всех контейнеров и зависимостей;
• Подпись артефактов (cosign/Sigstore) и верификация на этапе деплоя.
▫️ Контроль изменений и drift detection
• Policy as Code (OPA, Terraform Sentinel);
• Инструменты проверки конфигураций (tfsec, Checkov, Conftest).
▫️ ML-анализ в Gateway
• Isolation Forest в Seldon Core; Envoy ExtAuthz вызывает /predict;
• Блокировка при
score > 0.8; алёрты в SIEM/Slack.▫️ API lifecycle & versioning
• Явное управление версиями API, deprecation-policy, backward-compatibility тесты;
• Тёмные и канареечные запуски (traffic mirroring) новых эндпоинтов.
▫️ Disaster recovery & multi-region failover
• Репликация Gateway в нескольких регионах; автоматический DNS-фейловер;
• Документированные RTO/RPO и регулярные drill-тесты.
▫️ Пентесты & Bug Bounty
• Ежеквартальные внешние пентесты API Gateway и RPC-узлов;
• Запуск программы Bug Bounty (HackerOne / Standoff / bizone) для непрерывного обнаружения уязвимостей.
▫️ План реагирования на инциденты (по просьбе SOC)
• Определённые playbook:
detection → containment → eradication → recovery;• SLA/TTR для критичных сервисов; регулярные учения.
▫️ Приватные RPC (PrivateLink / IAM)
• JSON-RPC узлы скрыты за VPC Endpoint (PrivateLink / PSC);
• Доступ по SigV4 / ACL; rate-limit и circuit breaker перед нодами.
▫️ HTTP-security headers
• HSTS (Strict-Transport-Security), CSP, X-Frame-Options, X-Content-Type-Options;
• Защита от clickjacking и MIME-sniffing.
▫️ Сегментация сети и ограничения доступа
• Kubernetes NetworkPolicies; NSG/Security Groups;
• Микросегментация: отдельные VPC/subnet для критичных сервисов.
В общем, это не просто чеклист для галочки. Это попытка собрать разумную, масштабируемую и живучую архитектуру, в которой API Gateway — не прослойка между интернетом и микросервисами, а полноценная точка принятия решений.
#appsec
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤5🤔3😡1
Покрыть всё в любом случае не получится, если у вас нету адекватной инвентаризации, которая вытащит откуда-нибудь очередной богом забытый WS 2008, о котором знали 2 человека и те уволились пять лет назад
Хотя если кто-то придумает корреляшку на то, что потенциальный злоумышленник читает вашу публичную документацию, или пришёл на доклад, где рассказываете как вы классно обучили свои модель, то остаётся только руку пожать
1. Документация пишется. Готова большая часть со стороны ML
2. Вот как допишем основную часть и сделаем нормальную структуру - выкатим на публику, но есть нюанс;
3. Нюанс как раз заключается в том, что встал вопрос "Сколько нужно не самых глупых безопасников, чтобы сделать сайт?" - двух просто не хватило
Не болейте и не пропускайте приём таблеток
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9🤔2❤1
Регистрация - ТЫК, места быстро кончаются (Открыта до 27-ого)
Указывайте ваши реальные имена, иначе не сможете попасть на площадку проведения
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥1🤔1
- Ну Го
В последние месяцы сообщество «вайбкодеров» набирает обороты, быстрая разработка прототипов и использование хайповых (или так уже никто не говорит
Далее, я подобрал примеры ошибок, которые допускают не только нейронки, но также и обычные НЕВАЙБ кодеры.
Почему важно? Любая конкатенация строки + ввод = дыра.
// Плохо: fmt.Sprintf + Query
query := fmt.Sprintf("SELECT id, email FROM users WHERE email = '%s'", email)
db.Query(query)
// Правильно: PrepareContext + таймаут + закрытие stmt
ctx, cancel := context.WithTimeout(ctx, 200*time.Millisecond)
defer cancel()
stmt, err := db.PrepareContext(ctx, `
SELECT id, email
FROM users
WHERE email = $1 AND deleted = FALSE
`)
if err != nil { return err }
defer stmt.Close()
row := stmt.QueryRowContext(ctx, email)
(bson.M{"\$where": …})).parser := &jwt.Parser{ValidMethods: []string{"RS256"}}
token, err := parser.ParseWithClaims(tokenStr, &CustomClaims{}, func(t *jwt.Token) (interface{}, error) {
return publicKey, nil
})hdr := (*reflect.SliceHeader)(unsafe.Pointer(&b))
hdr.Len = header.Length
hdr.Cap = header.Length
Только после Code Review - проверка границ, выравнивания и GC-безопасности.
--mode=imports + --mode=versions.Корректная передача context — базовый стандарт зрелых Go-сервисов.
// Создаём контекст с дедлайном для HTTP-запроса
ctx, cancel := context.WithTimeout(parentCtx, 2*time.Second)
defer cancel() // обязательный вызов!
req, _ := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
_, err := http.DefaultClient.Do(req)
// две горутины одновременно плюсуют visits
var visits int
go func() { visits++ }()
go func() { visits++ }()
Запуск
go test -race в CI обнаружит такие случаиОчень требовательно к ресурсам и не рекомендуется в монолитах или говно-микросервисах
// Правильно:
// С Mutex
var (
visitsMu sync.Mutex
visits int
)
go func() {
visitsMu.Lock()
visits++
visitsMu.Unlock()
}()
// Или атомарно
var visitsAtomic uint64
go func() {
atomic.AddUint64(&visitsAtomic, 1)
}()
Паника в одном handler’е не должна убивать весь HTTP-сервер:
func recoveryMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer func() {
if rec := recover(); rec != nil {
log.Error().
Interface("penic", rec).
Msg("recovered from penic xD in handler")
http.Error(w, "internal error", http.StatusInternalServerError)
}
}()
next.ServeHTTP(w, r)
})
}🗒 Выводы
Их не будет, просто примеры из практики. Смотрите внимательнее, что вам выдаёт chatgpt или аналоги.
Добра и позитива appsec-ам, остальным соболезную
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥9❤7🤔2
Да-да, тот самый кликбейтный заголовок для пентестеров (ну вы помните)
Что нужно, чтобы попасть в историю
Что не стоит делать
Подать заявку и снова перечитать подробности — ТЫК
Не тяните до последнего вечера 29-го июня — хотя, кого мы обманываем, вы же настоящие хацкеры и любите бесить организаторов
Успехов и ждём ваших историй!
Please open Telegram to view this post
VIEW IN TELEGRAM
award.awillix.ru
Awillix Award 2025
Первая в России ежегодная независимая премия для пентестеров.
🔥7❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5🔥4
💸 Как за $2 вскрыть дыру в кешбэке
В Июне одного Ибшника осенило -- "Почему бы не проверить одну бизнес-логику кешбэков и получить небольшую прибыль?" Ниже разбор уязвимости, которая в проекте "X" была скрыта за
🧠 Суть уязвимости
1. При реальном начислении кешбэка из суммы продукции amount используется
2. Каждую ночь планировщик запускает
3. Пользователь может вручную проверить буфер через вызов
Если вызвать два
Псевдокот🥺 для понимания:
😈 How to hack?
1. Подготовка тестового окружения
Регистрации фейкового пользователя и эмуляция 40 покупок по $1 при 2.5% кешбэка:
🔵 В результате
2. Параллельный Redeem
Тут можно бурпом обойтись и его параллельной отправкой запросов
3. Сбор и анализ результатов
🔵 Оба запроса вернули успешный
🔵 Баланс вырос на $0.40 вместо $0.20
4. Проверка остаточных данных
После вызова:
🔵
🔵
🖌 Исправление
Два пункта, которые назовётлюбой вайбкодер middle разработчик:
🔵 Отказ от
🔵 Блокировка доступа к буферу при
Исправляем псевдокот🥺 , чтоб понималось ещё лучше 💥
🍺 Итоги
Да, не самый классный баг, но всё ради "смари что можно сделать". На всё про всё ушло два доллара (на самом деле 229 рублей, но ради кликбейтного заголовка цены стали в долларах 😏 ) -- цена большого red bull в пятёрочке у дома (или чебупиццу), от которого и родилась идея пошатать бизнес-логику.
В Июне одного Ибшника осенило -- "Почему бы не проверить одну бизнес-логику кешбэков и получить небольшую прибыль?" Ниже разбор уязвимости, которая в проекте "X" была скрыта за
float64, асинхронным батчем и отсутствием блокировок.1. При реальном начислении кешбэка из суммы продукции amount используется
math.Floor(pct*100)/100 (с учётом возможных артефактов двоичного представления), а остаток (< 0.01) накапливается в fractionBuffer;2. Каждую ночь планировщик запускает
FlushBuffer(), где применяется math.Round(buffer*100)/100 (округление до ближайшего цента) и деньги переводятся в основной баланс;3. Пользователь может вручную проверить буфер через вызов
RedeemBuffer(), где тоже используется math.Floor и вычитание из буфера без блокировки.Если вызвать два
RedeemBuffer() параллельно на одном и том же пользователе, оба прочтут один и тот же buffer, начислят floor(buffer) и вычтут только один раз, в результате integer-часть оказывается зачисленной дважды.Опустил транзакции бд
Псевдокот
type UserAccount struct {
ID string
Balance float64 // основной баланс в долларах
fractionBuffer float64 // накопленная дробная часть
}
// начисление кешбэк при покупке
func (ua *UserAccount) ProcessPurchase(amount float64, rate float64) {
pct := amount * rate
credited := math.Floor(pct*100) / 100
ua.Balance += credited
ua.fractionBuffer += pct - credited
}
func (ua *UserAccount) RedeemBuffer() {
toCredit := math.Floor(ua.fractionBuffer*100) / 100
ua.Balance += toCredit
ua.fractionBuffer -= toCredit
}
func FlushBuffer(all []*UserAccount) {
for _, ua := range all {
toCredit := math.Round(ua.fractionBuffer*100) / 100
ua.Balance += toCredit
ua.fractionBuffer = 0
}
}
1. Подготовка тестового окружения
Регистрации фейкового пользователя и эмуляция 40 покупок по $1 при 2.5% кешбэка:
Balance = $0.80, fractionBuffer = $0.202. Параллельный Redeem
Тут можно бурпом обойтись и его параллельной отправкой запросов
3. Сбор и анализ результатов
200 OK с credited: 0.204. Проверка остаточных данных
После вызова:
Balance = 0.80 + 2×0.20 = $1.20fractionBuffer = 0.00Два пункта, которые назовёт
float64 и хранение всего в int64 центах;Без учета микросервисов и передачи данных в битах по rpc
RedeemBuffer и FlushBuffer или иные бестпрактис решенияИсправляем псевдокот
type UserAccount struct {
ID string
mu sync.Mutex
BalanceCents int64 // целые центы
fractionCents int64 // накопленные центы < 100
}
func (ua *UserAccount) ProcessPurchase(amountCents int64, ratePermille int64) {
ua.mu.Lock()
defer ua.mu.Unlock()
pct := amountCents * ratePermille / 1000
creditedDollars := pct / 100
ua.BalanceCents += creditedDollars * 100 // конвертация долларов в центы
ua.fractionCents += pct % 100 // остаток в центах
}
func (ua *UserAccount) RedeemBuffer() {
ua.mu.Lock()
defer ua.mu.Unlock()
toCredit := ua.fractionCents // начисляем все накопленные центы
ua.BalanceCents += toCredit
ua.fractionCents = 0 // обнуляем буфер
}
func FlushBuffer(all []*UserAccount) {
for _, ua := range all {
ua.mu.Lock()
ua.BalanceCents += ua.fractionCents // начисляем все накопленные центы
ua.fractionCents = 0 // обнуляем буфер
ua.mu.Unlock()
}
}
Да, не самый классный баг, но всё ради "смари что можно сделать". На всё про всё ушло два доллара
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤4🤔1