Claude вскрыл 16 SAML‑проектов за месяц вечеров. Чинить их оказалось некому. anthropic.. anthropic. claude code.. anthropic. claude code. claude opus.
Claude вскрыл 16 SAML‑проектов за месяц вечеров. Чинить их оказалось некому - 1

Об одной и той же уязвимости в Authentik — популярной опенсорсной системе корпоративного входа — независимо и почти одновременно сообщили восемь исследователей. Уязвимость (CVE-2026-57580) позволяла вставить в поле с идентификатором пользователя (NameID) XML‑комментарий, обрезать значение до чужого адреса и привязать к жертве подконтрольную атакующему учетную запись — подпись при этом оставалась валидной. Срабатывало это не у всех: нужны определенные настройки сопоставления учетных записей, отличные от заданных по умолчанию. Закрыли проблему в версиях 2026.2.6 и 2026.5.5. Один из восьмерых — Эрик Чан (Eric Chiang), технический директор компании Oblique Security; для него эта находка была одной из шестнадцати. Свою историю он рассказал в блоге 19 августа, а то, что желающих оказалось восемь, объясняет просто: очевидно, он не единственный, кто теперь взламывает с помощью ИИ.

Личные счеты с протоколом у Чана давние. Почти десять лет назад он добавил поддержку SAML в проект Dex — и та реализация со временем обросла уязвимостями. С тех пор он повторял, что SAML опасен по своей конструкции, а пару месяцев назад собрал накопленное раздражение в доклад об истории обходов SAML на конференции Sec Nerds SF. Дальше сработал чужой текст: прочитав эссе Нильса Провоса «Finding Zero‑Days with Any Model», Чан задумался, что будет, если скормить всю его многолетнюю ругань связке из ИИ‑агентов. Он подал заявку в программу Anthropic Cyber Verification Program, чтобы с его аккаунта сняли защитные ограничения, получил доступ к модели Opus, способной писать эксплойты, — и в свободное время примерно за месяц попытался взломать все реализации SAML, до которых дотянулся. Из оборудования — подписка Max 20x за двести долларов в месяц.

Чтобы понять, почему это вообще возможно, достаточно одного примера. SAML — это подписанный пропуск: провайдер идентификации (IdP) выдает приложению XML‑документ с адресом пользователя и криптографической подписью. Подпись при этом ставится под документом целиком. А документ читают два разных компонента: библиотека проверки подписи и логика самого приложения. Если они разбирают XML хоть чуть‑чуть по‑разному, атакующий может подсунуть неподписанные данные под видом заверенных. Такие расхождения — не экзотика: с 2020 года обход в крупной SAML‑библиотеке всплывает примерно раз в квартал, у одного только GitHub Enterprise их было четыре за 2024–2025 годы.

Технически Чан построил то же, к чему сходятся почти все «хакерские обвесы»: работу дробят между агентами, промежуточные результаты складывают в общее хранилище, задачи приоритизируют и дедуплицируют. Разница между кодингом и хакингом, объясняет он, в масштабе: чтобы починить баг или написать фичу, контекста нужно немного, а взлом требует исчерпывающего перебора. Конвейер получился двухфазным. Сначала фаза «гаджетов»: агенты ищут странности в поведении библиотек. Затем фаза находок, где гаджеты комбинируют и подтверждают сквозным эксплойтом. Все это складывается в JSONL‑файлы, которые обрабатывают отдельные шаги конвейера — например, шаг, отбрасывающий предложенные находки вне скоупа до того, как на их доказательство потратят токены.

Сам обвес Чан собрал легко. Удивило его другое: учить модель взламывать не пришлось. Более того, накопленный им корпус известных уязвимостей SAML делал только хуже — получив его, Claude принимался искать точные копии этих же багов в других библиотеках. Заметно лучше работала связка «модель угроз плюс свобода исследования». Здесь он видит прямую рифму с агентным кодингом: чем сильнее модель, тем меньше ей нужно конкретных инструкций и тем больше — общих рамок.

Улов за месяцвыглядит так. Четыре полных обхода аутентификации — в Authentik, PHP‑библиотеке lightsaml, платформе OneUptime и Java‑проекте saml‑client. Еще двенадцать проектов, и, по его оговорке, счет открыт, оказались уязвимы к обходу подписи на второстепенных сообщениях протокола. Кроме основного ответа, подпись может стоять на запросе аутентификации (AuthnRequest), запросе атрибутов (AttributeQuery) и запросе на выход (LogoutRequest) — и вот эти сообщения безопасники традиционно не разглядывают. Отсюда раскрытие данных и принудительное завершение чужих сессий. Отдельная категория — отказ в обслуживании: SAML по своей природе обязан принимать произвольный XML, присланный POST‑запросом из интернета, и почти все крупные библиотеки удалось довести до исчерпания памяти неаутентифицированным запросом. В экосистеме Go патчи приняли, в Python и Node проблемы на момент публикации не закрыты. При этом структурно сломать протокол Чан не смог и открыто об этом жалеет: взрослые библиотеки за годы CVE обросли усиленными API, и «войти кем угодно» сегодня получается в основном там, где реализацию написали заново. Отсюда его практический вывод: не пишите свой SAML — возьмите готовую библиотеку, а лучше сразу OpenID Connect.

Но самая показательная часть истории — не находки, а попытки их сдать. С проектом OneUptime, который, по деликатной формулировке Чана, «принял ИИ всей душой», вышло так: месяц тишины в ответ на приватный отчет, затем публичный issue — и в тот же день огромный пул‑реквест, закрывающий уязвимость, без единого человеческого комментария. Чан сломал фикс. Появился новый большой пул‑реквест. Он сломал и его. Только после третьего захода правки стали похожи на безопасные. Вывод он выносит одной строкой: писать безопасный SAML‑код у LLM тоже получается плохо. С остальными проектами было не веселее — мейнтейнеры либо не отвечали, либо явно тонули: к неблагодарной работе опенсорс‑мейнтейнера теперь добавился поток отчетов об уязвимостях, среди которых надо отличить настоящие от сгенерированного мусора. Одна компания потребовала прислать видеозапись экрана, чтобы отсеять машинные отчеты; Чан отказался, но из‑за серьезности самой находки там все же ответили, починили и выдали CVE.

Оговорки тут необходимы. Это рассказ практика, а не эксперимент: нет ни цены прогона в токенах, ни доли ложных находок, которые отсеял конвейер, ни контрольной группы, показывающей, сколько тот же человек нашел бы за месяц руками. Три полных обхода из четырех пришлись на нишевые проекты. И у поста есть коммерческий подтекст — автор возглавляет стартап в области управления доступом, а под текстом стоит форма записи в waitlist. С другой стороны, находки заверены со стороны: выданными CVE, принятыми патчами в Go и публичными issue, по которым можно проверить хронологию. А главное подтверждение — те самые восемь исследователей, одновременно наткнувшихся на одну уязвимость в Authentik: метод рабочий ровно настолько, что он уже не уникален.

Заканчивается история фразой, которую стоит перечитать дважды: Чан остановился не потому, что у него кончились баги, а потому что кончился спрос на его отчеты. Искать уязвимости стало дешево — месяц вечеров и подписка за двести долларов; чинить их по‑прежнему дорого, и людей на это столько же, сколько было. Есть у всего этого и обнадеживающая сторона, на которую сам Чан очень рассчитывает: спор о том, хорош протокол или плох, больше не обязан вестись анекдотами и статистикой CVE. Теперь можно просканировать весь GitHub и выложить на стол конкретные баги. Если вы считаете, что с протоколом что‑то не так, у вас впервые есть инструменты это доказать — вопрос только в том, найдется ли кому чинить то, что вы докажете.

P. S. Поддержать меня можно подпиской на канал «Сбежавшая нейросеть», где я рассказываю про ИИ с творческой стороны.

Автор: runaway_llm

Источник