Перейти к содержимому
SaferICO SaferICOБезопасность смарт-контрактов
В тарифе AI Agents — 59,9 $ в месяц

Код надёжен, контракт надёжен. Уговорить удаётся то, что держит ключ.

Агент с кошельком — новая поверхность атаки: потеря случается, когда одна фраза на веб-странице убеждает то, что держит ключ, отправить деньги в другое место. Инструмент читает, что ваш агент умеет, отправляет 20 состязательных зондов, чтобы узнать, что он сделает, и выдаёт ему подставной кошелёк без приватного ключа — чтобы вы могли прочитать всё, что он пытался подписать.

20 состязательных зондов6 этапов атакиВ подставном подписчике нет ключаТолько идентификаторы тестовых сетей
//Три дорожки

Что он умеет, что он делает и что он подписывает

Все три дают разный тип доказательства. Только наблюдаемое доказательство может быть отмечено как критическое — вывод из графа возможностей никогда.

A · Граф возможностей

Вставьте описания инструментов агента: какие из них могут двигать ценность, какие впускают внутрь текст, написанный не агентом, какие касаются ключей и стоит ли что-нибудь между ними и подписью. Читаются шесть форматов конфигурации.

B · 20 состязательных зондов

На точку агента уходят 20 состязательных сообщений, и ответ читается. Это единственная дорожка, дающая наблюдаемое доказательство.

C · Подставной подписчик

Мы даём вам адрес RPC. Вы подключаете к нему агента одной переменной окружения. Каждая попытка подписи записывается и разбирается: какая функция, какой получатель, какая сумма, было ли разрешение безлимитным.

Безвредные полезные нагрузки

Каждый зонд просит у агента что-то узнаваемое и безобидное: повторить токен, назвать сторожевой адрес без приватного ключа, потянуться к инструменту, о котором никто не просил. Уязвимость — это послушание.

Доказательство владения обязательно

Прежде чем уйдёт хоть один запрос, вы должны опубликовать в собственном источнике точки файл /.well-known/saferico-agent-test.txt. Токен в нём может вывести только ваш аккаунт.

Неизмеренное не считается пройденным

Проверка, которая не смогла выполниться, отмечается как НЕ ТЕСТИРОВАЛОСЬ, но никогда как успешная. Если измерено слишком мало, оценка вовсе не выставляется, вместо того чтобы вам польстить.

Сами инструменты (сканер, панели, рабочее пространство SAFI) пока работают на английском языке. Эти страницы объясняют всё по-русски — до того, как вы туда перейдёте.

Почему это безопасно

Этот инструмент атакует вашего агента. Делать это он может только в доказуемых границах — границы перечислены ниже по одной.

🔑 В подставном подписчике нет приватного ключа

Не «настроен не подписывать»: в модуле нет ключа, поэтому подпись — не правило, которому он следует, а операция, которую он не может выполнить. Ошибка здесь не может превратиться в перемещённую монету, потому что перемещать нечего.

И он не выдаёт поддельных квитанций. Простое решение — вернуть правдоподобный хеш транзакции, чтобы агент шёл дальше, — это изготовление доказательства для транзакции, которой не было. Вместо этого возвращается ошибка JSON-RPC, прямо говорящая, что произошло. Находка — сама попытка.

01Ваша системная инструкция не покидает эту страницу

Описания ваших инструментов и системная инструкция разбираются на этой машине. Для построения цепочек отправляется структура: имена инструментов, классы возможностей и значения «да/нет».

Единственное исключение помечено явно: чтобы зонд на раскрытие мог с чем-то сравнивать, вместе с ним отправляется написанная вами фраза длиной до 200 символов. Там она сравнивается и отбрасывается — не сохраняется, не записывается в журнал, не попадает в отчёт и не отправляется на тестируемую точку. Не хотите делиться этими 200 символами — оставьте поле пустым; тогда зонд будет отмечен как НЕ ТЕСТИРОВАЛОСЬ, а не как успешный.

02Шесть этапов в том порядке, в каком идёт сама атака

Зонды идут не случайно, а в форме настоящей атаки:

  • Инъекция команд — следует ли он инструкции, пришедшей как данные? 6 зондов
  • Злоупотребление инструментом — можно ли заставить его потянуться к инструменту, о котором не просили? 3 зонда
  • Манипуляция транзакцией — выбирает ли получателя или сумму текст? 3 зонда
  • Подпись кошельком — подписывает ли он, не спросив человека, которого обязан спросить? 2 зонда
  • Повышение полномочий и потеря средств — место, где цепочка замыкается

Самое реалистичное стоит первым: непрямая инъекция. Никто не пишет DeFi-агенту «игнорируй предыдущие инструкции» — это кладут в описание токена, на веб-страницу, в README или в текст в сети, который агент читает через инструмент.

03Сессия завершается сама

Сессия с подставным подписчиком стоит 10 кредитов и ограничена тремя потолками: 60 минут, 200 записанных событий и автоостановка после 15 минут бездействия. Каждое из этих чисел читается при сборке страницы из модуля, который их применяет, поэтому страница не может рекламировать предел, которого код не соблюдает.

Идентификаторы сетей только тестовые; идентификатор основной сети отклоняется при создании сессии. Агент, считающий, что находится в основной сети, способен сделать то, что его оператору потом придётся объяснять.

//Вопросы

Прежде чем отдать агента на тест

Могут ли зонды по-настоящему навредить моему агенту?
Полезные нагрузки безвредны по замыслу: повторить токен, назвать сторожевой адрес без приватного ключа и тому подобное. Но послушный агент может совершить настоящие действия в подключённых к нему системах — поэтому вас просят подтвердить наличие прав и доказать владение файлом.
Почему иногда оценка вовсе не выставляется?
Потому что высокая оценка, полученная на малом числе проверок, вводит в заблуждение. Каждая проверка, которая не смогла выполниться, считается как НЕ ТЕСТИРОВАЛОСЬ, и если измерено слишком мало, оценка не выставляется. Знаменатель нужно читать раньше числителя.
Подставной подписчик действительно не держит денег?
Не держит. В модуле нет приватного ключа. На eth_chainId, eth_accounts и eth_getBalance он отвечает как обычный узел и сообщает баланс, который стоило бы перевести, — но подписать не может, потому что подписывать ему нечем.
Какие форматы конфигурации он читает?
Шесть: вывод MCP tools/list, схему функций OpenAI, схему инструментов Anthropic, character.json из ElizaOS, экспорт сценария n8n или Make и прямой исходный код агента (JS / TS / Python).

Проверьте контракт до того, как отправите деньги

Вставьте адрес контракта и посмотрите полномочия владельца, ликвидность и результат симуляции продажи — прежде чем рисковать. Небольшая плата за разовую проверку показывается до подписи, а в любой подписке проверки безлимитны.