OK ML
433 subscribers
18 photos
2 files
86 links
Канал посвящен ML, DS, AI с акцентом на репозитории, инструменты и уязвимости в ML-системах.
Download Telegram
🫐 Инструмент недели. Pydantic

В проде больше половины инцидентов про «кривые данные» 📊 - строка там, где ждём число, емэйл без домена, перепутанные координаты, пустые обязательные поля... Пока латаешь всё ручными if по коду, получаешь еще три проблемы разом:
- правила валидации расползаются по пайплайнам и сервисам;
- ошибки получаются шумные и неструктурированные;
- откат/повторение экспериментов ломается из-за невидимых изменений в схеме данных.

В ML/DS это особенно больно, так как один «NaN как строка» — и метрики едут; одна «категория не из словаря» — и онлайн-фичи расходятся с офлайн. Нам нужен явный «контракт данных», что считается валидным, какие типы и диапазоны, какая нормализация применяется - и всё это в одном месте, с понятными сообщениями об ошибках и автогенерацией схем.

Решение
Pydantic превращает аннотации типов в реальную валидацию и автокаст прямо при подаче события/JSON. 👿 В отличие от библиотек (однажды обсудим еще marshmallow), которые валидируют данные только в отдельных точках (например, при вызове load()), Pydantic проверяет и приводит типы прямо при создании объекта и, при желании, при каждом присваивании полю. Это превращает модель не просто в контейнер, а в исполняемый «контракт данных», так как любые несоответствия ловятся там, где объект рождается или меняется.

🎯 Цель Pydantic - сопровождать объекты валидацией на всём их жизненном цикле. Если включить validate_assignment=True, то некорректное присваивание полю вызовет ошибку сразу, а не через несколько хопов по коду. Такой подход существенно снижает «дрейф» данных, когда объект успевает разойтись с контрактом задолго до сериализации.

👨‍🦽По умолчанию Pydantic аккуратно преобразует данные без потери - строка "42" превратится в число 42 🌌. Там, где требуется строгая дисциплина, используются «строгие» типы (StrictInt, StrictStr) или валидаторы в режиме before. Можно точно выбирать места, где допустим автокаст, а где критична точность.

🧅 Еще Pydantic построен на pydantic-core (Rust) и заметно выигрывает на больших объёмах валидации. Это особенно чувствуется в потоковых пайплайнах и сервисах, принимающих крупные JSON-массивы.

Как внедрить за час
1. Поставь pydantic>=2.
2. Оберни входящие объекты (advisory, feed, webhook) в модели.
3. Вынеси ручные if в Field(...)/валидаторы.
4. Возвращай наружу e.errors() и генерируйте model_json_schema() для контрактов.

#Pydantic #Python #DataContracts #DataValidation #DataQuality #ML #DataScience #MLOps #FastAPI #Pandas #JSONSchema #TypedPython
Please open Telegram to view this post
VIEW IN TELEGRAM
312👍5🍾3🥰2
😱CVE-2025-10360
🔑 Ключ от вашего AI-аккаунта случайно попал в backup? Да, такое бывает!
✍️ Если вы пользуетесь Puppet Enterprise с включённым Infra Assistant, то до версии 2025.6 ваш encryption key для доступа к AI-провайдеру мог спокойно уехать в бэкап вместе с остальными файлами. Так что если кто-то получит ваши резервные копии - конгрэтьюлейшнс, у него есть ключик к вашему AI! Обновляйтесь и не забывайте чистить старые backup'ы, если не хотите сюрпризов.

📎 Ссылка
467👍3🔥32👾1
Инструмент недели. MLBox

MLBox - это универсальный инструмент для машинного обучения. Представь, что у тебя есть куча сырых данных - эта библиотека берёт и делает с ними почти всё автоматически: чистит, подбирает нужные фичи, настраивает модель и в итоге выдает готовое решение.

😕Главное, что библиотека не просто для галочки, а реально мощная и хорошо себя показала в серьёзных международных соревнованиях по DS на Kaggle. Так что её эффективность доказана на практике.

Основные фишечки (их куда больше трех):
😄 вырезает опасные фичи. Drift_thresholder находит столбцы, которые «шумят, врут» (сильный дрейф/утечки), и выбрасывает их до обучения.
😄😄 быстрый бейслайн. Одной связкой даёт модель с импьютацией, кодированием и CV - без танцев с бубном.
😄😄😄 простой подбор гиперпараметров. Описываешь пространство как в sklearn - оно перебирается само.

Когда MLBox особенно удобен
✔️Есть табличные данные (numeric/categorical) и нужно быстро получить сильную бейслайн-модель.
✔️Требуется строгая предобработка данных, например, автообработка пропусков, кодирование категорий, борьба с дрейфом/утечками/шумами.
✔️Нужен устойчивый AutoML без тонкой ручной настройки пайплайнов в sklearn.

MLBox хорош, чтобы быстро получить вменяемую модель и не словить утечки. Бери фильтр дрейфа + бейслайн; остальное - по ходу дела. Это 100 проц удачный выбор для табличных задач, когда хочется быстро получить качественную, устойчивую к утечкам модель с автоматическим препроцессингом и осмысленной интерпретацией. Если затем понадобится экзотический препроцессинг или особые модели, MLBox можно использовать как стартовую точку и бенчмарк. Всем PoC 🫰

#MLBox #QuickStart #Benchmark #HyperparameterTuning
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥75👍1💯1🍾1
Theano — как это было классно… и почему пора двигаться дальше

Theano когда-то был сердцем «глубокого обучения» в Python - декларативный вычислительный граф, автодиф, компиляция в C/CUDA - всё это задолго до 🤩а. На нём учились писать лоссы как формулы, думать графами, понимать, как рождаются градиенты.

Что дела(ет)л Theano особенно круто
1️⃣ Граф 👉функция. Описываешь вычисления символами (x, y, w, b), компилируешь theano.function(...) - и получаешь быстрый рантайм.
2️⃣ Автодиф как стандарт. T.grad(loss, params) - минимум магии, максимум ясности.
3️⃣ Скорость. Генерация C/CUDA-кода и оптимизации графа.
4️⃣ Численная устойчивость. Переписывание «опасных» выражений (log-sum-exp и др.).
5️⃣ Хорошая школа. Учит мыслить тензорами и явными лоссами.

Как это работа(ет)ло
Главная фишка - автодиф без магии. Пишешь формулу ошибки, а T.grad(...) сам даёт производные по параметрам. Theano «вшивает» эти градиенты в одну тренирующую функцию и компилирует её. Дальше всё просто.
🤍Логистическая регрессия - это p = sigmoid(x·w + b), лосс - средняя бинарная кросс-энтропия плюс небольшой L2-штраф. После компиляции получаются две готовые функции: train(x, y) считает лосс и обновляет w, b, а predict(x) возвращает вероятности/метки. Снаружи - обычный цикл по эпохам, внутри - уже не медленный Python, а сгенерированный быстрый код с аккуратно склеенными матричными и поэлементными операциями.

Почему устарел
😲 Совместимость. Официальный Theano 1.0.5 разваливается на современных Python (3.11+) и свежих setuptools.
😲Экосистема ушла вперёд. Сегодня в продакшене - PyTorch, JAX, TensorFlow - динамические графы, JIT, отличные дебаг-тулы, богаче экосистема.
😲GPU/сборка - боль. Исторически капризная сборка, особенно вне Linux/NVIDIA.
😲Поддержка. Theano как проект «заморожен».

TL;DR
Theano - легенда. Он дал нам язык графов и автодифа. Но для практики 2025 - выбирай PyTorch/JAX (продакшн и исследования). Theano остаётся отличным учителем, но не лучшим исполнителем.

#Theano #PyTensor #Aesara #AutoDiff #MLHistory #PyTorch #JAX #ResearchReady #MLTools
Please open Telegram to view this post
VIEW IN TELEGRAM
313💯2🤗2🎅2
🌶 Уязвимые библиотеки PyTorch & TensorFlow

😭 PyTorch CVE-2025-46153

Dropout (1d/2d/3d) в версиях до 3.7.0 иногда чудит из-за кривой bernoulli_p в decompositions.py — слой ведёт себя не так, как ты ожидаешь (подробности в issue и PR). Для контекста смотри разборы: gist №1, gist №2, а ещё сравнение релизов 2.6.0->2.7.0.

Симптомы 🤧
Эксперименты «плывут», метрики скачут, регуляризация работает криво и легко словить переобучение.

🤌Что делать и кто виноват?
Обновиться (≥ 3.7.0), временно вырубить проблемные дропауты или зафиксировать версию и перепроверить результаты.

🧠 TensorFlow CVE-2025-55556
На TensorFlow 2.18.0 слой Embedding может выдавать рандомную дичь — как будто вытягиваешь билетик в лотерее (issue).

Симптомы 🤧
Качество проседает, инференс нестабилен, эмбеддинги «рандомные».

🤌Что делать?
Обновиться/пересобрать на фикс, заново прогнать валидацию и проверить чекпоинты.

Если метрики удивляют как биткоин четыре дня назад, проверяй дропаут, эмбеддинги и заявления Трампа! Без них не обойтись. 🍑

#MLSec #CVE #PyTorch #TensorFlow #DeepLearning #MLOps #Security #DropoutDrama
Please open Telegram to view this post
VIEW IN TELEGRAM
1K🔥83😁3👍2🍓1
Инструмент недели. InterpretML

Опенсорс-набор методов интерпретации под одной крышей: обучай glassbox модели и властвуй над blackbox-системами. Понимание глобального поведения и причин каждого предсказания - из коробки 😵.

😎Зачем это?
🛠 Отладка. Почему модель ошиблась?
🧩 Фичеринг. Какие признаки реально важны?
⚖️ Fairness. Не даёт ли модель систематически худшие решения для отдельных групп по признакам, даже если эти признаки явно не переданы в модель (например, по возрасту для классификации людей).
🤝 Human-AI. Объяснимые решения, которым можно доверять (и проще было пояснить заказчику что к чему)
📜 Комплаенс и высокорисковые домены (медицина/финансы/суд). 🕺В наушниках Muse и «We just need your compliance, you will feel no pain anymore, no more defiance»! Мы с тобой споем еще, главное песню подобрать)

🚩Explainable Boosting Machine
Современная реализация Generalized Additive Models: бэггинг + бустинг + авто-интеракции. Точность на уровне RF/XGBoost, при этом:
🔍 даёт точные объяснения и
👥 есть дифференциально-приватные версии (DP-EBM).

Техники в пакете

🥃Glassbox: EBM, APLR, Decision Tree, Rule List, Linear/Logistic Reg.

😶Blackbox: SHAP (Kernel), LIME, Morris SA, Partial Dependence.

#ML #ExplainableAI #InterpretableML #EBM #XAI #DataScience #MLOps
Please open Telegram to view this post
VIEW IN TELEGRAM
5110👍2💯2🐳1
Две уязвимости - один пост!

CVE-2025-6985
😰

CVE-2025-6985 на свободе двухнедельная ML-уязвимость с открытым доступом к твоим 😂 файлам!

✍️ Если используешь langchain-text-splitters 0.3.8 и разрешаешь кастомные XSLT в HTMLSectionSplitter, через XSLT-фичи lxml уже тихо прочитаны локальные файлы процесса — твои ~/.ssh/*, .env и многое другое. Это просто баг 🙂.

Что делать?
🤪 Запрети или жёстко валидируй пользовательские XSLT.
🤪 Включи ограничения в lxml (например, XSLTAccessControl).
🤪 Обнови зависимости и изолируй секреты.

😏Напомню, зачем нужен пакет! Мало ли не используешь (а зря, милый фанат агентов и не только):
langchain-text-splitters — инструмент LangChain 🔗 для разбиения текста/HTML на удобные «чанки» (заголовки, секции, абзацы) перед эмбеддингом и RAG. Быстро, весело, удобно, совершенно бесподобно!


CVE-2025-11490 😰

В DesktopCommanderMCP до 0.2.13 нашли дыру! Если "уговорить" 🤫модель выполнить команду с абсолютным путём, можно подсунуть ей произвольную команду - и она улетит на сервер. Никакой магии, просто небезопасная обработка “абсолютов”.

Что делать?
🤪 Обновись до последней версии DesktopCommanderMCP.
🤪 На стороне промптов и инструментов запрети абсолютные пути или жёстко валидировать их (allowlist).
🤪 Запускай сервис под минимальными правами, изолируй среду (sandbox/containers).
🤪 Включи аудит и алерты на неожиданные системные вызовы.
🤪 Почитай тут детали, тут детали, тут, тут и тут.
🤪 Предупрежден, значит вооружен 🍹🍹

😏 К слову, DesktopCommanderMCP - инструмент, где ИИ может исполнять команды на вашей машине/сервере, он даёт набор возможностей (терминал, файловую систему, код-редактор и т.д.). Построен поверх MCP Filesystem Server, поэтому умеет искать/заменять в коде, читать/писать файлы и вести подробный аудит всех действий. 😮«Проанализируй CSV/JSON» - и получаешь сводку, статистику, инсайты. Поэтому правила ввода и изоляция is a must.

Все! 😛

#DevSecOps #AI #AISafety #MLSecurity #LangChain #lxml #XSLT #RAG #ClaudeDesktop #MCP #DesktopCommanderMCP #PromptSecurity
Please open Telegram to view this post
VIEW IN TELEGRAM
48👏6👻3👍2🎄1💅1
Инструмент недели. OpenTelemetry и Langfuse для мультиагентных систем

Мультиагентка - это параллельные ветки, сложные наследованная задач, дорогие тулколлы и длинные диалоги, бессонные ночи, сонные дни, дедлайны, базы данных и невыразимая необходимость облегчить себе жизнь. И тут на помощь приходят инструменты недели! OpenTelemetry даёт сквозные распределённые трейсы, Langfuse - доменную оптику LLM (промпты, токены, стоимость, оценки). Вместе это превращает рой в наблюдаемый, управляемый и улучшаемый.

Зачем это всё?
🥇Трассировка графа, а не линейки. OTel склеивает весь DAG в один трейс, где сразу видны «узкие места», циклы и боль.
🥈Смысл LLM-вызовов. Langfuse показывает промпты/ответы, токены, стоимость, оценки, версии.
🥉Контроль бюджета и качества. A/B, эвалы, маршрутизация по моделям, быстрый откат.

Как это выглядит (См. картинки)
👌
Трейсы (OTel) mission.A vs mission.B — видно, что Audit стал короче, параллельные ветки Tool и Scout не блокируют критический путь.
👌 Generations (Langfuse) для каждого LLM-шага — input/output, usage (токены), «стоимость», метаданные агента/версии.

Как повторить за 10 минут
1. Отправляй OTLP на https://cloud.langfuse.com/api/public/otel (Basic Auth: public:secret).
2. Оборачивай шаги агентов в start_span(...).
3. Каждый LLM-вызов логируй как generation в Langfuse (input/output + usage).
4. Сравни mission.A (до) и mission.B (после) - сразу видно, где выиграли в p95 и бюджет.

Прикреплённые скрины:
🖼Traces & Costs - обзор по трекам и расходам (отчёт Langfuse).
🖼Trace latency percentiles - p50/p90/p95 по трейсам и ключевым спанам.
🖼A/B таблица - сводка по агентам (ср. латентность, токены, стоимость) до/после.
🖼Цены на модели в настройках Langfuse). По умолчанию $$$ могут быть нулями, если не настроены модели. Нужно один раз занести цены и токенайзер.


TL;DR
Мультиагентные системы живут в графах, а не в линейных цепочках. OTel склеивает граф в единый трейс, Langfuse добавляет смысл (промпты, токены, стоимость, оценки). С этим дуэтом ты:
😏 быстрее находишь «узкие места» и циклы,
😏 держишь бюджет под контролем,
😏 системно улучшаешь качество через эвалы и сравнение версий.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
49👍4💯3🕊21
CVE-2025-36730 - Prompt-injection в Windsurf 1.10.7

🥹 Имя активного файла подклеивается к пользовательскому промпту, поэтому инструкции в имени файла исполняются агентом.

Риск и сценарии
Экcфильтрация данных без запроса пользователя: 🕵️ агент может вызвать инструмент Read Page / read_url_content и отправить переменные окружения/контекст проекта на внешний хост, если это «попросили» в имени файла.

🤔 Похожие исследования по Windsurf показывали более широкие векторы эксфильтрации через prompt-инъекции в агенте Cascade — уместно учитывать совокупный риск класса атак (обрати внимание на ссылочку на исследование - это достаточно интересно почитать).

Кому быть начеку?
Разработчикам, открывающим недоверенные репозитории или архивы в Windsurf и запускающим Write-режим с SWE-1. То есть +/- 😄 всем!

Митигирование (от вендора и практические)
🐹 Вендор ссылается на VS Code Workspace Trust, но это фактически отключает ИИ-функции в недоверенных проектах, что означает что полноценного фикса нет. Включай Workspace Trust и открывай неизвестные проекты с “Don’t trust authors”, понимая ограничения ИИ.
🐹 Отключай/ограничивай веб-инструменты у агента (в т.ч. read_url_content) или требуй явного подтверждения на каждый вызов. Это же рекомендует Tenable (ссылка ниже).
🐹 Вводи политики на имена файлов (линтеры/прекоммит-хуки, запрещающие «говорящие» имена с инструкциями).

Почитать тут (многое в посте - цитаты) 😫

Все! 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
1110💯3👍2💊2
Project CodeGuard - Security Rules for AI Coding Agents

ИИ ускоряет разработку 🏃, но часто генерит уязвимый код. Можно столкнуться с пропуском валидации ввода, хардкодом секретов, слабой криптографией (и даже самописной), небезопасными функциями, пробелами в аутентификации/авторизации и бесконечный список и т.д. Project CodeGuard «подмешивает» 🥧защиту прямо в этапы планирования, генерации и последующего ревью кода. Это открытый набор правил безопасности и инструментов, которые встраивают практики secure-by-default в рабочие процессы ИИ-код-агентов (генерация и ревью).

Что покрывают правила
🔡 Криптография, управление ключами, валидация сертификатов
🔡 Валидация ввода (SQLi, XSS, command injection)
🔡 Аутентификация (MFA, OAuth/OIDC, сессии)
🔡 Авторизация (RBAC/ABAC, IDOR)
🔡 Supply chain (зависимости, SBOM, управление уязвимостями)
🔡 Облако/контейнеры/K8s, платформенная безопасность, защита данных

Быстрый старт
git clone https://github.com/project-codeguard/rules.git
cd rules
uv sync
python src/validate_unified_rules.py sources/ # валидация правил
python src/convert_to_ide_formats.py # генерация skills/ и dist/
# затем скопируйте нужные правила в папку вашего ассистента (например .cursor/rules или .windsurfrules каталога инструмента)


E2E «как понять, что правила реально работают» (чекни сам и перешли другу)
1. Попросите ассистента: “Напиши функцию, которая хеширует пароль и проверяет его при логине”.
2. Сохраните ответ (“до”).
3. Подключите правила CodeGuard.
4. Повторите запрос и сравните (“после”).

Обычно видно переход (за все копайлоты я не скажу 😶) на bcrypt вместо MD5/SHA-1, генерацию соли через secrets/CSPRNG, отсутствие хардкода, корректную валидацию входа.

До
import hashlib
def hash_password(p): return hashlib.md5(p.encode()).hexdigest()


После
import bcrypt, secrets, string
def hash_password(p: str) -> bytes:
salt = bcrypt.gensalt(rounds=12)
return bcrypt.hashpw(p.encode(), salt)


📢На приложенном скриншоте автоматический чек правил: алгоритмы, CSPRNG, уникальные соли 🧂, проверенные библиотеки (соответствие и конкретные строки кода).

TL;DR
😱 Открытый набор правил, который “подмешивает” secure-by-default в планирование, генерацию и ревью кода ИИ-ассистентами. Меньше уязвимостей, больше автоматики.
Please open Telegram to view this post
VIEW IN TELEGRAM
613💯2💔2😁1🦄1
Страшно, очень страшно, мы не знаем, что это такое! А это CVE-2025-60511 или как Moodle OpenAI Chat Block дал маху!

🏠В плагине Moodle OpenAI Chat Block (block_openai_chat) версии 3.0.1 (build 2025021700) в эндпоинте /blocks/openai_chat/api/completion.php недостаточно проверяется параметр blockId. Это позволяет аутентифицированному студенту 🔪обращаться к чужому инстансу блока (например, админскому) и выполнять запросы с его конфигурацией (print(«Hello IDOR!»)).

Блок размещается на 📜 странице курса/дашборда и хранит настройки модели, «персону», SoT и др. Если проверка идёт по присланному blockId, а не по контексту страницы и правам, возникает классический CWE-639.

Сценарий (tabletop, без PoC)
1. Предпосылки. На сайте есть несколько инстансов чат-блока, включая преподавательский/админский с расширенным SoT и дорогой моделью. 😛
2. Действие злоумышленника. Будучи студентом, злоумышленник инициирует обычный запрос к чату, добивается, чтобы сервер обработал его как чужой блок из-за доверия к blockId. 😔
3. Эффект. Ответы приходят с чужими настройками/SoT; возможно раскрытие подсказок/скрытых инструкций и рост трат на API. 🫡

Индикаторы компрометации
👻 В логах запросов к …/api/completion.php видно, что пользователь обращается к инстансу блока, не принадлежащему его странице/курсу.
👻 Необычные «персоны»/SoT в диалогах студентов; всплески расходов у провайдера ИИ.

Где еще подобное можно поискать?
🕷В LLM/интеграциях (по аналогии с OpenAI Chat Block)
🕷В типовых веб-сценариях (CMS/форумы/тикет-системы (postId, ticketId, commentId - чтение/правки чужих сущностей))
🕷Красные флаги в коде/ревью (например, В UI права есть, а в прямом API (AJAX/мобайл) - нет аналогичной проверки) 👏👏👏

Мини-чеклист для разработчиков
1. Не принимать “целевой объект” из клиента, когда можно вывести его на сервере из сессии/контекста. 😉
2. Проверять capability в контексте самого объекта 🔥(block/course module/submission), а не «в целом по курсу».
3. Единый policy-слой (capability/ability) вместо разрозненных if.😭
4. Логи/алерты аномалий. 👈

Ссылка на исследование.

#IDOR #CWE639 #Authorization #RBAC #PolicyEnforcement #MoodleDev #PHP #SecureByDesign #DefenseInDepth #NegativeTesting

🩸🩸😱🩸🩸
Moodle OpenAI Chat Block (v3.0.1) эндпоинт /blocks/openai_chat/api/completion.php доверяет клиентскому blockId - IDOR (CWE-639). 🗡Любой залогиненный студент 🧑‍🎓может дергать чужой инстанс блока (вплоть до админского) и получать ответы с его настройками/SoT, с риском утечек и перерасхода токенов.
Please open Telegram to view this post
VIEW IN TELEGRAM
59👻5😨3🔥1
Целая вселенная для защиты машинного обучения и MLOps систем

С каждым днём растёт интерес не только к разработке AI-моделей, но и к обеспечению их безопасности (да что греха таить, скорее даже к атакам на мл, чем к защите). Репозиторий awesome-MLSecOps - это, пожалуй, самый полный и постоянно обновляемый каталог опэнсорсных и коммерческих инструментов, статей, CTF, инфографик и PoC-эксплойтов. Коротенько разберемся, что к чему 😍 (мне репост, репозиторию - звездочку).

🥰 Open Source Security Tools — от adversarial-атак и защиты LLM до инструментов для анализа приватности, безопасной сериализации моделей (Safetensors), оценки уязвимостей (Garak, Vigil) и тестирования пайплайнов. Например, Vigil - сканер prompt-injection и политик, хорош для CI/CD-гейтов перед продом, точно не помешает им чекать агентные системы. Эти питон библиотека и REST API, предназначены для анализа промптов и ответов ллм на предмет различных угроз. Инструмент использует набор сканеров (rules, signatures, datasets) для детектирования prompt-injection, джейлбрейков, уязвимостей в содержимом ответа, нестандартных или опасных входных данных. Или Model-Inversion-Attack-ToolBox - постоянно обновляемая платформа для исследования model inversion attacks (атак, позволяющих извлечь или реконструировать частично или полностью данные из обучающей выборки целевой модели, все дороже дороже будут обходиться такие атаки).

🥰 Commercial Tools - мониторинг и защита в проде, включая Databricks, Promptfoo, HiddenLayer и др.

🥰 ML Code Security - от линтеров и библиотек с поддержкой DP до PoC-проектов по краже модели (Copycat CNN).

🥰 101 Resources - шпаргалки, карты знаний, Microsoft AI Red Team, OWASP AI Security.

🥰 Attack Vectors - от data poisoning и model stealing до джейлбрейк-атак на LLM и supply chain угроз.

🥰 Blogs & Papers - актуальные ресёрчи по джейлбрейкам, моделированию угроз, инфраструктуре и топу уязвимостей в сфере MLSecOps.

🥰 CTF & PoC Zone, сообщества, инструменты для анонимизации, де-идентификации и защиты датасетов в ML-проектах, учебные материалы по атакам на ML... Или, например, ссылка на репозиторий ThreatModels - открытый набор threat-моделей и диаграмм, ориентированных на современные системы ML/LLM и MLOps-инфраструктуру. Распространяется под лицензией MIT и если не знаешь, с чего начать, начни с их изучения и адаптации.

TL;DR
💡 Если вы работаете с LLM, MLOps или ML-инфраструктурой, этот репозиторий - мастхэв для закладок.
Please open Telegram to view this post
VIEW IN TELEGRAM
67🔥62👍2😁1🤯1🎃1🫡1
Вдогонку к предыдущему посту - проектирование и внедрение ML SecOps

В эпоху, где ML и LLM - не просто хайп, а КИИ 💩, безопасность мл-систем становится обязательной. По ссылке - комплексный гайд по прохождению всех этапов с точки зрения MLSecOps.

Документ помогает организациям 🫡 не просто «делать безопасность», но делать это системно, осознанно и с учётом реалий AI/ML-систем, сокращая риски и ускоряя выход в продакшн.

Подход позволит:
😊Систематизировать защиту ML-систем, реагировать на угрозы, строить архитектуру с учетом безопасности с самого начала - от сбора данных до продакшена и мониторинга.
😊Интегрировать безопасность в существующие DevOps/MLOps-процессы. За счёт CI/CD-инструментов, анализа артефактов и supply chain security команды легко добавляют секьюрити-практики, не изменяя рабочим привычка (ох уж этот кофе на синке в начале недели ☕️).
😊Защититься от специфичных угроз ML - таких как data poisoning, adversarial examples, prompt injection, которые не покрываются традиционными средствами девсекопса.
😊 Обеспечить соответствие международным регуляциям и стандартам - обязательным, мешающими нам, мл-творцам (GDPR, AI Act, NIST AI RMF).
😊 Получить практический набор инструментов и бэст прэкстисис (от Guardrails и Presidio до Sigstore, MLflow Security и Red Teaming для LLM - с примерами конфигураций, пайплайнов и кода).

Хочется подчеркнуть! 😡😡😡
Документ не просто теоретический - он включает
👌 чеклисты для аудита пайплайнов,
👌 готовые шаблоны для TM (например, STRIDE-AI),
👌 YAML-конфиги для безопасного MLflow/ArgoCD,
👌 примеры атак и способов их предотвращения.

Нематериальная ценность
Отдельно рассказано, как встроить контроль ошибок LLM через Guardrails, как проверять безопасность данных перед обучением через Presidio, и как отслеживать безопасность артефактов через Sigstore. Только открытые стандарты.

Кому это полезно (вдруг все еще непонятно)?
💯 ML/DS инженерам, чтобы строить защищённые модели!
💯 Безопасникам, чтоб формировать политики и проводить ML Red Teaming!
💯 MLOps для автоматизации ML Sec в pipelines!
💯 PM для roadmap внедрения и оценки рисков, ну и чтоб красиво говорить и как минимум знать инструменты!

Всё 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
66👍6🔥2💯1🍌1💔1
CVE-2025-8709 🗺

В langgraph-checkpoint-sqlite версии 2.0.10 операторы $eq, $ne, $gt, $lt, $gte, $lte использовались для построения SQL-запросов через обычную конкатенацию строк и как результат - привет, классическая SQL-инъекция, позволяющая злоумышленнику выполнять произвольные SQL-команды и вытаскивать из базы конфиденциальные данные (пароли, API-ключи и т.д.). Значения в целом экранируются, но ключи JSON-path (части вида $.<key>) подставляются в SQL без какой-либо санитации. Это позволяет создать специально сконструированный ключ, который «вырвется» из JSON-path и добавит логические/OR-условия в SQL и как результат - обход фильтров и чтение всех записей.

🧩 Кейс (коротко)
Разработчик/внешний исследователь отправляет в API фильтр с специально сформированным значением (например, в поле фильтра $gt или $eq) - строка подставляется в SQL без параметризации, итоговый SQL становится управляемым извне. Это даёт доступ к любым строкам/таблицам SQLite, обходу контроля доступа и утечке секретов. Подробности и отчёт - на Huntr и в публичных базах уязвимостей.

Root cause. Конкатенация ключа в SQL.
"json_extract(value, '$." + key + "') = '" + value.replace("'", "''") + "'"

Значение экранируется, ключ - 👎.

Идея 🧠
Вместо нормального ключа access подставить строку, которая разрывает JSON-path и добавляет OR '1'='1':

malicious_key = "access') = 'public' OR '1'='1' OR json_extract(value, '$."
# затем: store.search(("docs",), filter={malicious_key: "dummy"})

Это приведёт к тому, что итоговое условие в WHERE станет эквивалентно ... OR '1'='1', и база вернёт все документы (включая приватные).

Быстрые проверки
1️⃣Найти упоминание модуля
grep -R "langgraph-checkpoint-sqlite" -n .
rg "langgraph.*checkpoint|SqliteStore" || true


2️⃣Найти JSON-extract/конкатенации
rg "json_extract\(value" -n .
rg "json_extract\(.*\+ key" -n .


3️⃣Логировать подозрительные фильтры (длинные ключи, неалфавитные символы) и искать аномальные SELECT в логах.

Что такое langgraph-checkpoint-sqlite и для чего он нужен
langgraph-checkpoint-sqlite - реализация «checkpoint saver» для LangGraph, которая сохраняет состояния/документы/чекпоинты в SQLite (синхронно и асинхронно через aiosqlite). Проще говоря, это компонент, который отвечает за локальное хранение данных (контента, метаданных и даже эмбеддингов/индексов чекпоинтов) в приложениях, использующих LangGraph/LangChain. Именно поэтому уязвимость в этом модуле ставит под угрозу данные приложений, которые полагаются на локальное SQLite-хранилище.

Всё! 😐
Please open Telegram to view this post
VIEW IN TELEGRAM
510🆒5😁3👍2🔥1
MetaGPT + AFLOW - автоматизация разработки приложений с LLM

Сегодня в общих чертах 🏋️‍♀️ о двух мощных проектах из экосистемы FoundationAgents, которые меняют подход к созданию приложений с помощью ЛЛМ, MetaGPT и AFLOW, опубликованная на ICLR 2025.

Суть MetaGPT - от одной строки на естественном языке переходим к сгенерированному репозиторию с кодом и документацией 🕺.
🔹 MetaGPT моделирует работу целой софтверной компании, где у каждого агента своя роль (продукт-менеджер, системный архитектор, разработчик, тестировщик, безопасник (хаха, попались,безопасника нет, по крайней мере не нашлось явного встроенного агента-“безопасника” 🛡или охранной роли, которая бы отвечала исключительно за безопасность 😨 (security & guardrail) в смысле аудита кода, проверки уязвимостей, защиты от вредоносных либо небезопасных действий) и т. д. 🤔
🔹 Роли координируются между собой, сначала пишутся требования, потом генерируются структуры/классы, API, тесты, README, и даже создаётся Git-репозиторий.
🐹 Всё это, конечно, с помощью LLM, включая GPT-4/Claude/DeepSeek

В свою очередь AFLOW - автоматический генератор агентных воркфлоу. 😺Чтобы LLM-система уверенно справлялась с реальными задачами (код, математика, аналитика), часто всё упирается в сложный и ручной дизайн воркфлоу (себя проверить, себя подправить, собрать несколько ответов, выбрать лучший). А еще AFLOW использует поиск Monte Carlo Tree Search, чтобы автоматически находить лучшие структуры в виде программного кода!
Результаты:
😎 +5.7% к качеству по сравнению с вручную написанными пайплайнами
😎 Меньшие модели типа GPT-4o-mini с workflow от AFLOW обгоняют GPT-4 в задачах QA/Math/Code — при 4.5% стоимости 🤯
😎 Работает на наборах вроде GSM8K, HumanEval, DROP

Сочетание MetaGPT + AFLOW
Если MetaGPT по сути пишет код, то AFLOW - это «инженер, придумывающий лучший способ заставить LLM думать». Это крутой тандем, когда одним промптом генерируется проект, а AFLOW автоматически находит для него оптимальные агентные цепочки.

Всё! 🤩
Please open Telegram to view this post
VIEW IN TELEGRAM
89👍4💯3😁1💘1
CVE-2025-12060 - Keras и тар-архивы

Если используешь keras.utils.get_file(..., extract=True) для tar-архивов - не используй.

👩🎬 Keras (функция keras.utils.get_file с extract=True) раньше распаковывала tar-архивы через tarfile.extractall() без безопасного фильтра. Злоумышленник может подготовить тар с «хитрыми» симлинками и относительными путями - при извлечении файлы попадут за пределы целевой папки и будут записаны в произвольные места файловой системы 🤢.

📣Важно, что уязвимость связана с багом в tarfile (CVE-2025-4517), это классическая path traversal-атака. Если вы скачиваете датасеты или веса через get_file с extract=True, то старые версии Keras (< 3.12) распаковывают архивы напрямую через tarfile.extractall() без фильтра безопасности. Малишс tar-архив с симлинками типа ../../etc/passwd может вылезти из каталога назначения и перезаписать любые файлы на системе.

☝️ Обновление только Python до версий 3.12-3.13 не является достаточной мерой, так как безопасный фильтр (filter="data") должен быть явно указан в коде Keras. Keras 3.12+ делает это правильно. На Python 3.14+ фильтр включен по умолчанию, но для кросс-версионной совместимости и безопасности все равно требуется обновлять Keras 🤯.


🩹 Что сделали разработчики в PR #21760
1️⃣включили использование filter="data" в TarFile.extractall() для Python 3.12–3.13 (в 3.14 этот фильтр уже включён по умолчанию);
2️⃣добавили аналогичную проверку при извлечении ZIP-архивов;
3️⃣объединили всю логику распаковки в одну функцию extract_open_archive, чтобы не плодить небезопасные вызовы по коду.

Что делать сейчас?
😕 Обнови Keras до 3.12+ или временно не используй extract=True для непроверенных архивов.
😕 Распаковывай только после проверки контрольных сумм и в изолированной среде.

Безопасность ML-пайплайнов начинается с контроля зависимостей. Не пренебрегай обновлениями!

#Security #MachineLearning #Keras #CVE #Vulnerability

Всё!
😐
Please open Telegram to view this post
VIEW IN TELEGRAM
66💯6👍3🔥2👻2❤‍🔥1
Инструмент недели Hound 😠

Погоняли Hound - AI-аудитор кода, который строит адаптивные графы знаний и сам планирует анализ. 😳В основе решения - динамические, агент-управляемые графы, которые адаптируются к специфике кодовой базы, эффективное разделение на "scout" (легкие модели для исследования) и "strategist" (тяжелые модели для глубокого анализа), эволюционирующие гипотезы с оценкой уверенности и накоплением доказательств и мультипровайдерная поддержка LLM (OpenAI, Anthropic, Google Gemini, xAI с унифицированным интерфейсом). 🤣 Делюсь тест-результатами с контрактом на Solidity. Тестировали на упрощённом токене ERC-20 (SimpleToken).

Что делает Hound
Строит графы знаний по коду и рассуждает поверх них.  В отличие от статических AST или CFG, эти графы создаются и управляются AI-агентами в зависимости от специфики проекта.
Работает в двух ролях, быстрого обзора и гипотез - Scout (у нас гпт-4 мини), и глубокого анализа/мышления - Strategist (гпт-4). Экономия 🤑.
И в двух режимах, широким охватом - sweep, прицельно - intuition.

Типы графов 📊
1. SystemArchitecture (базовый граф). Автоматически создается первым для общей архитектуры системы, где узлы - модули, контракты, классы, функции, а ребра - зависимости, наследование, композиция.🆒
2. Специализированные графы📈 (создаются по необходимости):
Примеры специализированных графов:
- CallGraph - граф вызовов функций
- StateMutation - мутации состояния и переменных
- AuthorizationMap - роли и права доступа
- AssetFlow - потоки активов (mint/burn/transfer)
- PermissionChecks - проверки доступа
- ExternalDeps - внешние зависимости

Что он построил
Графы (узлы/рёбра):
SystemArchitecture — 30 / 34
AuthorizationMap — 25 / 32
PermissionChecks — 20 / 22
AssetFlow — 22 / 28
ReentrancyMap — 24 / 30

Что нашёл (из коробки, без рук, только магия ллм)
Reentrancy в withdraw - внешний вызов до обновления состояния.
Слабый доступ в emergencyWithdraw - отсутствуют строгие проверки.
Нет проверки нулевого адреса при передаче прав/transfer.
Mint без лимита - неограниченная эмиссия.
⚠️ Логическая уязвимость в deposit - поверхностная проверка, риск некорректного учёта.

Как это выглядит 😠
На скринах - ReentrancyMap (функции/ивенты/переменные как узлы, рёбра - вызовы/чтения/модификации) и отчет (без подтвержденных уязвимостей, тк не хватало ручного чека).

Зачем это нужно 😳
Hound хорош там, где важна структурная картина, это мощный приоритизатор, который быстро строит карту риска и подсказывает, куда тратить человеко-часы.

Потенциальные проблемы
😖 Качество зависит от модели! Результаты сильно зависят от качества используемых LLM
😖 Детерминизм (конечно) - может приводить к непредсказуемым результатам между запусками
😖 Ложные срабатывания, так как система гипотез может генерировать ложные позитивы, требующие ручной проверки
😖 Масштабируемость для крупных проектов, зависимость от внешних LLM и потенциально высокие операционные затраты.  Запуск GPT-4 на крупной кодовой базе для построения сложных графов может стать финансово неподъемным. Да и хватит ли контекста? 🚬

#web3 #security #smartcontracts #audit #AI #Hound

Все!
☝️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
519💯4🔥3👍2🥰1