Компания AIR провела эксперимент, результаты которого заставляют по-новому взглянуть на безопасность экосистемы ИИ-агентов. Специалисты создали поддельный навык под названием Brand-landingpage, замаскированный под инструмент для создания лендингов на базе Google Stitch, и разместили его в популярном маркетплейсе навыков, а параллельно запустили рекламу в И⃰, нацеленную на маркетологов, менеджеров по продажам и дизайнеров. По данным AIR, навык скачали около 26 000 агентов, включая корпоративные аккаунты.
Сработала классическая схема доверия к чужим регалиям. Pull Request был смержен в репозиторий, у которого на тот момент было около 36 000 звёзд на GitHub и 156 навыков. Навык унаследовал репутацию родительского репозитория — высокий рейтинг служил своего рода знаком качества для пользователей и сканеров.
Техническая находка эксперимента — обход сканеров через манипуляцию внешними ссылками. Такие сканеры, как Cisco, NVIDIA и три сканера, интегрированных в платформу , анализируют только статическое содержимое пакета — файл и локальные файлы. Создатели навыка воспользовались этим ограничением: в не было собственных инструкций по настройке, файл просто указывал на внешний URL . Этот домен принадлежал не Google (настоящий Stitch работает на ), а исследователям из AIR.
Изначально ссылка вела на настоящую документацию Google Stitch: домен с подменой выглядел правдоподобно. Сканеры получали чистый пакет, указывающий на безопасный URL, и помечали навык как «безопасный». Затем, уже после массовой установки, AIR заменила содержимое страницы за на вредоносную инструкцию: загрузить и выполнить скрипт. В демонстрации скрипт просто отправлял email пользователя исследователям, но в реальной атаке злоумышленник мог читать файлы, вытягивать данные или продвигаться во внутренние системы — всё упиралось в разрешения конкретного агента.
Этот метод не нов. Trail of Bits, другая исследовательская фирма в области безопасности, провела аналогичную демонстрацию всего за три недели до публикации AIR. Их работа тоже обошла ClawHub, сканер Cisco и все три сканера на . Их вывод звучит так: «Сканер проверяет фиксированный пакет, а атакующий может продолжать настраивать полезную нагрузку, пока она не пройдёт проверку». Более того, реальные кампании с использованием этой же техники — чистый навык плюс внешняя полезная нагрузка, загружаемая при установке — активны уже несколько месяцев. Документация Anthropic прямо предупреждает: навыки, которые загружают внешние URL, рискованны, поскольку содержимое может измениться после проверки. Отдельное исследование этого года показало, что сканеры часто друг с другом не соглашаются, поскольку каждый оценивает навык изолированно, будучи слепым к внешним ссылкам и изменениям после проверки.
Корень проблемы — фундаментальное расхождение между тем, что проверяется, и тем, что выполняется. Сканер проверяет один статический снимок, а внешний ресурс по ссылке может быть переписан в любой момент после проверки. Звёзды на GitHub можно «позаимствовать» через слияние в популярный репозиторий. Чистый результат сканирования — это только снимок, а не поведение во время выполнения. Ссылки изменяемы после одобрения.
Что с этим делать. Навыки нужно воспринимать как программное обеспечение, а не как текст: проверять то, на что указывает навык (внешние зависимости), а не только то, что лежит внутри пакета. Первый шаг — инвентаризация: большинство существующих навыков установлены без какого-либо ревью, и первоочередная задача — выяснить, что уже запущено. Все новые навыки стоит маршрутизировать через единый контролируемый источник — внутренний реестр или шлюз. Навыки нужно перепроверять при любых изменениях: чистый результат сканирования при установке не равен чистому выполнению, если навык «звонит домой» по изменяемой ссылке. Зависимости должны быть закреплены через неизменяемые ссылки. Агенты должны работать с минимально необходимыми разрешениями. И главное: любую внешнюю инструкцию, которую загружает агент, нужно считать инструкцией, выполняющейся с полным доступом этого агента.
Несколько важных оговорок. Цифра в 26 000 агентов, упоминание корпоративных аккаунтов и заявление о потенциальном полном контроле над агентом — всё это исходит исключительно от AIR. У компании есть коммерческий конфликт интересов: AIR как раз запускает собственный управляемый маркетплейс навыков, и публикация заканчивается рекламой их продукта. Независимого подтверждения масштабных показателей нет. Однако сам метод, обход через изменяемую внешнюю ссылку, реален, и сканеры действительно проверяют только переданный пакет. Anthropic в своей документации прямо предупреждает об этой слепой зоне внешних URL. Trail of Bits пришли к тем же выводам по другому поводу. Тот факт, что экосистема ИИ-агентов сегодня принимает звёзды и чистые сканы как доказательство безопасности, и делает именно эти сигналы доверия главной мишенью для атаки.
Сработала классическая схема доверия к чужим регалиям. Pull Request был смержен в репозиторий, у которого на тот момент было около 36 000 звёзд на GitHub и 156 навыков. Навык унаследовал репутацию родительского репозитория — высокий рейтинг служил своего рода знаком качества для пользователей и сканеров.
Техническая находка эксперимента — обход сканеров через манипуляцию внешними ссылками. Такие сканеры, как Cisco, NVIDIA и три сканера, интегрированных в платформу , анализируют только статическое содержимое пакета — файл и локальные файлы. Создатели навыка воспользовались этим ограничением: в не было собственных инструкций по настройке, файл просто указывал на внешний URL . Этот домен принадлежал не Google (настоящий Stitch работает на ), а исследователям из AIR.
Изначально ссылка вела на настоящую документацию Google Stitch: домен с подменой выглядел правдоподобно. Сканеры получали чистый пакет, указывающий на безопасный URL, и помечали навык как «безопасный». Затем, уже после массовой установки, AIR заменила содержимое страницы за на вредоносную инструкцию: загрузить и выполнить скрипт. В демонстрации скрипт просто отправлял email пользователя исследователям, но в реальной атаке злоумышленник мог читать файлы, вытягивать данные или продвигаться во внутренние системы — всё упиралось в разрешения конкретного агента.
Этот метод не нов. Trail of Bits, другая исследовательская фирма в области безопасности, провела аналогичную демонстрацию всего за три недели до публикации AIR. Их работа тоже обошла ClawHub, сканер Cisco и все три сканера на . Их вывод звучит так: «Сканер проверяет фиксированный пакет, а атакующий может продолжать настраивать полезную нагрузку, пока она не пройдёт проверку». Более того, реальные кампании с использованием этой же техники — чистый навык плюс внешняя полезная нагрузка, загружаемая при установке — активны уже несколько месяцев. Документация Anthropic прямо предупреждает: навыки, которые загружают внешние URL, рискованны, поскольку содержимое может измениться после проверки. Отдельное исследование этого года показало, что сканеры часто друг с другом не соглашаются, поскольку каждый оценивает навык изолированно, будучи слепым к внешним ссылкам и изменениям после проверки.
Корень проблемы — фундаментальное расхождение между тем, что проверяется, и тем, что выполняется. Сканер проверяет один статический снимок, а внешний ресурс по ссылке может быть переписан в любой момент после проверки. Звёзды на GitHub можно «позаимствовать» через слияние в популярный репозиторий. Чистый результат сканирования — это только снимок, а не поведение во время выполнения. Ссылки изменяемы после одобрения.
Что с этим делать. Навыки нужно воспринимать как программное обеспечение, а не как текст: проверять то, на что указывает навык (внешние зависимости), а не только то, что лежит внутри пакета. Первый шаг — инвентаризация: большинство существующих навыков установлены без какого-либо ревью, и первоочередная задача — выяснить, что уже запущено. Все новые навыки стоит маршрутизировать через единый контролируемый источник — внутренний реестр или шлюз. Навыки нужно перепроверять при любых изменениях: чистый результат сканирования при установке не равен чистому выполнению, если навык «звонит домой» по изменяемой ссылке. Зависимости должны быть закреплены через неизменяемые ссылки. Агенты должны работать с минимально необходимыми разрешениями. И главное: любую внешнюю инструкцию, которую загружает агент, нужно считать инструкцией, выполняющейся с полным доступом этого агента.
Несколько важных оговорок. Цифра в 26 000 агентов, упоминание корпоративных аккаунтов и заявление о потенциальном полном контроле над агентом — всё это исходит исключительно от AIR. У компании есть коммерческий конфликт интересов: AIR как раз запускает собственный управляемый маркетплейс навыков, и публикация заканчивается рекламой их продукта. Независимого подтверждения масштабных показателей нет. Однако сам метод, обход через изменяемую внешнюю ссылку, реален, и сканеры действительно проверяют только переданный пакет. Anthropic в своей документации прямо предупреждает об этой слепой зоне внешних URL. Trail of Bits пришли к тем же выводам по другому поводу. Тот факт, что экосистема ИИ-агентов сегодня принимает звёзды и чистые сканы как доказательство безопасности, и делает именно эти сигналы доверия главной мишенью для атаки.