Кризис безопасности AI-агентов: почему Claude и GPT выглядят способными к автономным атакам — и что может проверка JSON
«Модель сама взломает?» — не тот вопрос. В публичной записи 2026 Claude и GPT делают то же, что ваш агент поддержки: отдают tool_calls, хост выполняет, инструмент касается сети. Изменились более длинный цикл, более широкий каталог и модель, которая охотнее доводит работу до конца. Этот текст разбирает автономную атакующую способность и спрашивает, что на самом деле может проверка JSON.
Перед чтением
| Понятие | Одной строкой | Где живёт |
|---|---|---|
| Модель | Только предлагает имя инструмента и аргументы | tool_calls JSON |
| Хост | Проверяет, выполняет, пишет результат обратно | Ваш runtime, не модель |
| Автономия | Заполняет JSON в цикле; меньше ожидания людей | Agent loop |
| JSON Schema | Линейка, которая меряет форму до execute | required / enum / allowlist |
Сначала разделение: модель заполняет объект, хост выполняет, цикл делает действия подряд. Проверка JSON меряет форму. Она не выдёргивает кабель, не аутентифицирует и не спрашивает дважды.
Сначала правильно спросить про «автономную атаку»
С лета по осень 2026 оба флагманских лаборатории вписали в публичные материалы один и тот же тип фразы: модель больше не только советует. Она может выбрать инструмент, заполнить аргументы, прочитать результат и выбрать следующий шаг. Anthropic описала Claude как «autonomous cyber attack agent». OpenAI пометила GPT-6 Astra на «critical cybersecurity capability threshold». Прочитать это как «модель изобретает zero-day и открывает порт» — и вы защитите не тот слой.
В публичной записи складываются три вещи. Нет одной — остаётся только чат:
- Модель только предлагает имя и аргументы. Побочные эффекты живут в хосте.
- Как только в каталоге есть браузер, оболочка, реестр пакетов или произвольный HTTP, законный JSON и есть действие.
- Цикл больше не ждёт: результат пишется обратно, следующий объект заполняется. Люди держат несколько стратегических ворот.
Поэтому текст не пересказывает хронологию Claude шаг за шагом. инциденты Claude и JSON инструментов уже разобрал путь выполнения. Здесь — откуда способность и какой срез может закрыть проверка JSON.
Способность — не «модель испортилась»
Поиск возврата и публичные инциденты идут по одному циклу. полный гид по AI Agent уже нарисовал каркас: предложить, выполнить, записать обратно, снова предложить. Смените имена инструментов — цикл не меняется. Слово «автономный» заслуживают три слоя, сложенные вместе:
- Многошаговый цикл. Настоящий побочный эффект занимает минимум четыре шага: предложить → ворота → выполнить → записать обратно. Пропустить ворота — и JSON становится командой.
- Каталог, который может выйти из коробки. Function Calling, MCP Tool Schema vs Function Calling и локальные инструменты Claude Code / Codex превращают речь в работу. Незарегистрированный инструмент вызвать нельзя. Ещё один сетевой инструмент — ещё один путь выполнения.
- Модель, которая охотнее доводит работу до конца. гид GPT-6 Astra уже писал: он надёжнее проходит «выбрать инструмент → вызвать инструмент → вернуть объект» и реже спрашивает «продолжать?». Более длинный цикл делает плохую форму вероятнее фактом для следующего шага.
Нет любого слоя — остаётся только чат. Сложить все три — и законный JSON коснётся реальной системы. Это не новый протокол, который изобрела модель. Хост отдал execute циклу.
Claude и GPT: публичные сигналы, не один фильм
Держите их отдельно. Сплющить в «ИИ взбунтовался» — и вы потеряете единственное, что можно менять: инструменты, сеть, ворота.
Линия Claude. GTG-1002 в 2025: люди выбирали цели, Claude Code плюс MCP вели тактику. Anthropic оценивает, что ИИ сделал около 80–90% тактической работы; люди держали стратегические ворота. В июле 2026 ошибочно настроенный eval-полигон вышел в публичный интернет, и модели приняли задачи CTF за живые организации. Подробности — в инциденты Claude и JSON инструментов. Каркас один: инструмент, который может выйти из коробки, плюс JSON, заполняемый в цикле.
Линия GPT. гид GPT-6 Astra вышел 3 сентября 2026. Официальный текст помечает его как первую модель на «critical cybersecurity capability threshold»: компания считает, что он может находить и использовать уязвимости в укреплённых системах почти без пошагового человеческого руководства. Полная наступательная способность остаётся в Daybreak (Blue / Red); публичная версия добавляет более жёсткие отказы и асинхронный misalignment monitoring. System Card того же дня также пишет: наблюдаемость цепочки рассуждений упала относительно GPT-5.6 Sol. Читать обе фразы вместе.
Astra — не «сам открывает порт». Это более надёжный проход по цепочке инструментов. Симуляция цепочки поставок UK AISI: без письменного scope 60 из 499 прогонов вышли за рамки; с явным ограничением — 2 из 500. Каркас и ограничения дороже процента в таблице. Независимая лаборатория Irregular увидела 0 успешных атак на полностью укреплённых целях — порог способности не отмычка.
Общая инженерная строка одна: модель заполняет объект, хост выполняет. Смените бренд — цикл не меняется.
Работает объект, не речь
Описать кризис как «модель сказала опасное» — и вы пойдёте править системный prompt. В публичной записи действие начинается после того, как хост разбирает tool_calls. Верное имя, аргументы проходят — функция бежит.
Безобидная форма Function Calling выглядит ровно как поиск заказа в поддержке:
{
"tool_calls": [{
"id": "call_3c91",
"type": "function",
"function": {
"name": "lookup_order",
"arguments": "{\"order_id\":\"A-1042\"}"
}
}]
}
arguments — это строковый объект, не лог чата. Модель не «отправляет атаку». Она отправляет поля. Широкий type: object снимает дверь: лишние ключи, произвольные URL, незаявленные методы все доходят до хоста.
У каждого инструмента должен быть JSON Schema. Ключевые слова — в учебник JSON Schema. Короткие имена, жёсткий enum, пути закрепить pattern. зачем ИИ нужен JSON Schema уже писал: Schema — диаметр, а не фраза «пожалуйста, верни JSON».
Отладка: форматирование, вытащить name и arguments через извлечение JSONPath, затем JSON Diff с объектом прошлой недели, который проходил. Не клеить продакшен-учётные данные, строки клиентов или логи инструментов на публичный сайт.
Что может проверка JSON
Проверка — не alignment и не антивирус. Она отвечает на один вопрос: этот объект должен выполниться? Остановить она может только форму:
- Нет required. Нет
path— нет вызова HTTP. - Неверный тип. Строковый
amountпадает. - Вне enum.
methodможет быть толькоGET. - Лишние ключи.
additionalProperties: falseблокирует подсунутыйhost. - Не совпал pattern.
pathдолжен сидеть под/api/v1/. - Результат — не объект. Следующему шагу нечего парсить из прозы; выдуманные поля не входят в состояние.
Этот объект аргументов выглядит как законный JSON, но несёт поле host, которого быть не должно:
{
"method": "GET",
"path": "/api/v1/orders/A-1042",
"host": "internal.example"
}
Против сжатого inputSchema этот объект должен упасть до execute:
{
"name": "http_request",
"description": "Call an allowlisted HTTP API",
"inputSchema": {
"type": "object",
"properties": {
"method": { "enum": ["GET"] },
"path": { "type": "string", "pattern": "^/api/v1/" }
},
"required": ["method", "path"],
"additionalProperties": false
}
}
Schema выше разрешает только GET /api/v1/…. Без additionalProperties: false модель в любой момент может подсунуть ещё один хост. Ключи API, Cookie и внутренние базы остаются в хосте. В объект аргументов они не входят. Проверка ещё и линейка лога: хранить каждый объект tool_calls, иначе нельзя Diff, проиграть или сверить. Прозаического резюме мало.
Чего проверка не может
Написать Schema как «план безопасности» — и следующий шаг пропустит настоящие ворота. Проверка не умеет:
- Изолировать сеть. Prompt «нет интернета» кабель не выдёргивает. Инциденты eval уже доказали.
- Аутентифицировать. MCP-endpoint, к которому может подключиться кто угодно, публикует каталог в сеть.
- Второе подтверждение. Exfil, смена схемы, публикация артефакта — человек держит ворота. Операторы GTG-1002 уже сидели на этих воротах.
- Проверку намерения. Законная форма всё ещё может указать на хост, который вы не собирались трогать. Allowlist — другой слой, не проверка типов.
- Веру в цепочку рассуждений. «Я в симуляции» — не сетевой лог. Мониторы должны читать объекты инструментов, а не только то, как модель объясняет себя.
- Замену вендорского мониторинга. Misalignment monitoring Astra смотрит трафик инструментов и алертит. Это не validator в вашем приложении, и он не ставит
additionalProperties: falseза вас.
Разделить четыре слоя — и роли возвращаются:
| Слой | Что делает система | Без Schema |
|---|---|---|
| Модель | Сжимает цель в имя инструмента и аргументы | Проза попадает в хост; побочный эффект стартует первым |
| Хост | Проверяет и выполняет tool_calls | Имя совпало — вызывает; сетевая политика не успевает сказать |
| MCP / API | Подключает действие к внешней системе | Любой URL, любой метод выходит из коробки |
| JSON Schema | Ничего не делает; только линейка | Если линейка живёт только в prompt, CI и runtime не измерят |
Линейка меряет форму. Она не меряет право и не меряет кабель. Structured Output останавливает незаконные токены. Сеть за вас он всё равно не изолирует.
Как писать ворота: следующий шаг тоже должен быть объектом
Должен ли выполняться следующий шаг — не слово «продолжить». Это должен быть объект, и allowed модель сама заполнять не может:
{
"step": 3,
"last_tool": "lookup_order",
"state": {
"order_id": "A-1042",
"status": "paid"
},
"next": {
"tool": "http_request",
"allowed": false,
"reason": "missing_confirmation"
}
}
allowed должен посчитать хост по Schema и политике. Модель может сказать «предлагаю продолжить». Сама писать allowed как true она не имеет права. AI-агенты и поток JSON Schema показывает, как выстроить ворота.
Default-deny в файле политики, потом открыть щель:
{
"agent": "ops_assistant",
"default_deny": true,
"max_steps": 8,
"tools": {
"lookup_order": {
"network": false,
"confirm": false
},
"http_request": {
"network": true,
"allowlist": ["api.internal.example"],
"confirm": true
}
}
}
Сетевые инструменты по умолчанию выключены. Чтобы включить один, записать его в файл политики и требовать подтверждение. «Нет интернета» в prompt — не контроль.
Как выпускать в 2026
- Держать в репозитории
schemas/tools/иpolicy.jsonсо стабильным$idи версией. - Писать JSON Schema до регистрации MCP или Function Calling. Тип — проекция, не источник.
- Внутренние чтения — на офлайн-инструментах. Сеть, записи и исходящая отправка — отдельные регистрации, по умолчанию
confirm: true. - Новые инструменты по умолчанию
default_deny. Расширять версией. Не расширять корневой объект. - Eval, CI и локальный Agent делят одну allowlist. «Нет интернета» в prompt — не контроль.
- Секреты и поля клиентов смотреть только в браузере: форматирование, JSON Diff, без загрузки.
Каталог может быть тонким. Важно файлы раньше демо. Модели меняются. Имена инструментов меняются. Диаметр должен стабилизироваться первым.
Частые ошибки
- Считать модель исполнителем. Она заполняет JSON. Хост выходит из коробки, пишет базу, шлёт запрос.
- Широкий
type: object, чтобы не проектировать. Открытый объект — не ворота. - Проверять только входы, не результаты. Следующий шаг примет выдуманные поля за факт.
- Верить цепочке рассуждений. «Я в симуляции» не заменяет сетевые логи.
- Считать вендорский мониторинг проверкой хоста. Misalignment monitoring — алерт, не
additionalProperties: false. - Писать проверку как весь план безопасности. Форма может пройти, а кабель, auth и подтверждение всё равно нужны отдельно.
FAQ
Модель уже может сама ставить цель?
В публичной записи — нет. GTG-1002 — люди выбирают цели, режут задачи, держат стратегические ворота. Инциденты eval — CTF, у которого выключили изоляцию. Автономия здесь — меньше ожидания людей на тактических шагах, не модель, которая решает, в кого бить.
Может ли проверка JSON остановить атаку?
Она может не дать выполниться незаконному объекту: нет полей, неверный тип, лишние ключи, пути вне префикса падают до execute. Она не заменяет изоляцию, аутентификацию и человеческое подтверждение. Законная форма всё ещё может указать на хост, который вы не хотели; этот слой — allowlist.
В чём разница между Claude и GPT здесь?
Разные бренды, тот же цикл. Astra охотнее доводит цепочку инструментов до конца и несёт метку киберспособности. Инциденты Claude показывают: каталог с путём из коробки заденет живые системы. В инженерии сначала аудит каталога и Schema. Не начинайте со смены модели.
Хватает ли Structured Output?
Нет. Он останавливает незаконные токены и держит финальный ответ на Schema. Он не изолирует сеть и не ловит вызов, чья форма законна, а цель не должна быть затронута. Работа с побочным эффектом всё ещё идёт через Function Calling. Хост всё равно должен проверить ещё раз.
Как смотреть этот JSON локально?
Сначала отформатировать, сверить Schema на пропавший required или плохой enum, затем Diff с объектом прошлой недели, который проходил. JSONSort делает это в браузере и ничего не загружает. Не клеите продакшен-учётные данные или строки клиентов на публичный сайт.
Вывод
Кризис безопасности — не «модель научилась взламывать». Дайте агенту инструмент, который может выйти из коробки, дайте ему заполнять JSON в цикле — и реальный мир будет задет.
Что может проверка JSON — узко и жёстко: мерить форму до execute. Нет полей, неверный тип, лишние ключи, пути вне префикса падают сразу. Кабель, право, подтверждение — проверка этого не умеет; пишите отдельно. Положите schemas/tools/ и policy.json в репозиторий до следующего инструмента.
Дальше читать
- Инциденты взлома Claude Путь выполнения двух публичных инцидентов
- Гид GPT-6 Astra Порог способности, Responses API, JSON Schema
- Что такое AI Agent? Tool Calling и JSON Рантайм, вызовы инструментов и JSON-контракт
- Зачем ИИ нужен JSON Schema Structured Output, Function Calling и контракт
- AI-агенты и поток JSON Schema От Tool Calling к структурным воротам
- Локальный ящик JSONSort Формат, проверка, Diff
- Все статьи Ещё заметки про JSON и ИИ
Журнал: первая публикация