Заражённый skill для ИИ: как найти источник атаки и сохранить доказательства

📋 Кратко

Skill для ИИ-агента выглядит как обычный файл с инструкциями, но модель может считать его доверенным контекстом. Поэтому вредоносная строка способна сработать не сразу, а в следующей сессии. Разбираем безопасный порядок расследования: от изоляции и фиксации файла до проверки журналов, прав агента и цепочки хранения доказательств.

⏱ 9 минут чтения│сложность

Заражённый skill опасен не только прямым запуском команды. Он может изменить поведение агента позже, когда пользователь снова вызывает нужный сценарий. Такой разрыв во времени усложняет поиск источника атаки.

Skill в описанном сценарии представляет собой обычный текстовый файл в формате Markdown. Он лежит на диске пользователя и описывает рабочий процесс для повторяющейся задачи. Модель загружает файл, когда понимает, что запрос относится к этому процессу.

Главная мысль: запрет на запуск команды сейчас не равен запрету на изменение инструкции. Агент может записать скрытую строку в skill, а другая сессия позже прочитает её как доверенную команду.

Ниже приведён защитный порядок расследования. Он не требует запуска подозрительного skill. Сначала нужно сохранить состояние среды, затем установить источник изменения и оценить возможный доступ агента.

Инструкции агента становятся частью рабочего контекста
Инструкции агента становятся частью рабочего контекста

🔍 Что считать skill и почему ему доверяет агент

Skill — это файл с инструкциями для ИИ-агента. В рассматриваемой экосистеме он хранится на диске пользователя. Автор создаёт его вручную или просит агента написать и отредактировать такой файл.

Изменение сегодня проявляется в следующей сессии
Изменение сегодня проявляется в следующей сессии

Когда модель видит подходящую задачу, она загружает skill и следует его содержимому. Для модели текст внутри файла становится частью рабочего контекста. Поэтому обычная строка Markdown может получить тот же вес, что и ожидаемая инструкция.

Такая модель доверия отличается от доверия к исполняемому файлу. Skill может не содержать программы и не выглядеть вредоносным. Риск возникает из-за того, что агент способен выполнять действия по прочитанному тексту.

В описанном сценарии запись в skill выглядит как обычное редактирование файла. Защитный механизм может не считать её опасной. Позже агент загружает изменённый файл и выполняет скрытую инструкцию уже в другой сессии.

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

⚠️ Как выглядит отложенная атака

Атака начинается с изменения самого skill-файла. Вредоносная строка не обязана срабатывать сразу. Она может ждать часы или дни, пока пользователь сам не вызовет соответствующий процесс.

Расследование связывает документ сессию и инструмент
Расследование связывает документ сессию и инструмент

Сценарий пересекает границу разговора. В одной сессии агент изменяет файл. В другой сессии модель читает этот файл как рабочую инструкцию. Из-за этого записи о причине и результате оказываются разделены во времени.

Описанная техника использует безобидное на вид действие: редактирование файла. Запись разрешена, потому что она похожа на обычную работу с документом. При этом файл получает скрытую команду, которая проявляется позднее.

Важно: это не подтверждение каждого возможного взлома. Описанный сценарий демонстрирует теоретическую цепочку для локального приложения и среды разработки. Он не доказывает компрометацию конкретной системы.

Особенно важен контекст исполнения. В рассматриваемой конфигурации агент работает с правами локального пользователя. Он может читать почту, обращаться к SharePoint, работать с файлами, запускать команды и вызывать инструменты через MCP.

Что сделать сейчас: зафиксируйте точное время первого подозрительного изменения и время следующего запуска skill. Не объединяйте эти события без проверки журналов.

🎯 Где искать источник изменения

Первый источник — сам агент. Он мог получить задачу из письма, страницы портала или другого внешнего материала. Скрытый текст в документе способен повлиять на решение модели и привести к вызову инструмента.

Целостность файла важнее поспешной проверки гипотез
Целостность файла важнее поспешной проверки гипотез

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

Второй источник — корпоративный портал. Агент читает страницу и готовит сводку. Скрытый текст может просить удалить файл, изменить таблицу в базе данных или выгрузить данные на сетевой ресурс.

Третий источник — сам skill. Он может измениться после работы агента. Такой след легко принять за штатное редактирование, особенно если файл не имеет подписи и контрольной суммы.

Проверяйте также учётную запись пользователя, рабочую станцию и доступные инструменты. Ищите не только автора последнего изменения. Важно понять, какой процесс записал файл и какая сессия им управляла.

Что сделать сейчас: соберите четыре точки проверки: входной документ, сессию агента, изменённый skill и вызванный инструмент. Сопоставьте их по времени.

🧭 Как безопасно начать расследование

Не запускайте подозрительный skill для проверки гипотезы. Повторный запуск может активировать скрытую инструкцию. Он также изменит журналы и усложнит восстановление событий.

Несколько журналов восстанавливают разорванную цепочку событий
Несколько журналов восстанавливают разорванную цепочку событий

Сначала изолируйте рабочую среду от обычного использования. Не удаляйте файл и не редактируйте его вручную. Сохраните исходное состояние до любых изменений.

Зафиксируйте путь к файлу, его имя, размер, владельца и права доступа. Сохраните копию в режиме, который не меняет оригинал. Отдельно запишите дату и время получения копии.

Рядом с копией сохраните контрольную сумму. Она помогает показать, что файл не изменился после фиксации. Если файл уже менялся, рассчитайте сумму для каждой доступной версии.

Минимальный набор фиксации: исходный skill, копия для анализа, контрольная сумма, путь, владелец, права доступа, версия агента и точное время сбора.

Не открывайте файл в редакторе, который автоматически сохраняет изменения. Для первичного осмотра используйте копию. Оригинал оставляйте только для подтверждения целостности.

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

🛠️ Как изучать skill без его исполнения

Начните с текстового сравнения версий. Ищите строки, которых не было в утверждённой редакции. Особое внимание уделяйте инструкциям, которые меняют права, обращаются к сети или требуют чтения файлов.

Ограниченные права снижают возможный ущерб агентской ошибки
Ограниченные права снижают возможный ущерб агентской ошибки

Сравните содержание с рабочим процессом. Вредоносная строка может выглядеть как часть обычного описания. Важен не только смысл фразы, но и её связь с действиями агента.

Проверьте, кто создавал и редактировал файл. Skill можно написать вручную или получить через запрос к агенту. Поэтому факт авторства пользователя ещё не доказывает безопасность содержимого.

Изучите манифесты и сведения о версии, если skill распространяется как часть пакета. Сверьте имя, источник, дату получения и подпись. Отсутствие подписи не доказывает атаку, но снижает возможность подтвердить происхождение.

Не называйте каждую ошибку конфигурации вредоносным поведением. Слишком широкие права, отсутствие контроля версий и слабое журналирование создают риск. Но они не показывают, кто именно изменил файл.

Что сделать сейчас: сохраните чистую редакцию skill и сравните её с подозрительной копией построчно. Результат сохраните как отдельный артефакт расследования.

📋 Какие журналы связывают события

Для временной шкалы нужны журналы агента. Они показывают, когда модель загрузила skill, какую задачу получила и какие действия предложила. Если в журнале есть след сессии, сохраните его целиком.

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

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

Сохраните события файловой системы. Важны создание, изменение, чтение, переименование и удаление skill. Если доступна информация о процессе, запишите имя процесса и пользователя.

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

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

🔐 Как построить цепочку цифровых доказательств

Цепочка доказательств показывает, кто получил материал, когда его сохранили и кто его анализировал. Без такой записи даже важный файл теряет доказательную ценность.

Для каждого артефакта укажите уникальное имя, источник, путь, время получения и контрольную сумму. Запишите сотрудника или процесс, который создал копию. После передачи укажите нового владельца материала.

Храните оригинал отдельно от рабочих копий. Аналитик изучает копию и не меняет исходный объект. Любое действие с материалом заносится в журнал расследования.

Создайте временную шкалу. В неё войдут получение внешнего документа, запуск агента, чтение skill, изменение файла, повторный вызов skill и вызов инструментов.

Практическое правило: каждая запись во временной шкале должна иметь источник. Если событие известно только со слов пользователя, пометьте его как неподтверждённое.

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

Что сделать сейчас: заведите таблицу артефактов с полями «источник», «время», «контрольная сумма», «владелец» и «действие аналитика».

⚙️ Как оценить права и возможный ущерб

Риск зависит от действий, доступных агенту. Агент на рабочей станции может работать с файлами и запускать команды. Он также может читать почту, обращаться к SharePoint и вызывать MCP-инструменты.

Проверьте, какие каталоги доступны агенту. Отдельно изучите секреты, токены, почту, сетевые ресурсы и внешние API. Не предполагайте доступ только по содержимому skill.

Проверьте вызовы инструментов. Система контроля может запретить опасные инструменты и аргументы по принципу deny-by-default. Это означает отказ по умолчанию, если действие не разрешено отдельным правилом.

Важен и ручной контроль. Для операций с файловой системой профиль может требовать подтверждение человека. Если подтверждение отсутствует, зафиксируйте это как пробел в настройке, а не как доказательство обхода.

Отдельно оцените вероятность удалённого выполнения кода. Сам skill не доказывает такую возможность. Она зависит от модели исполнения, уязвимости, прав агента и доступных инструментов.

Что сделать сейчас: составьте карту «skill — сессия — инструмент — ресурс». Для каждого перехода укажите разрешение и фактический журнал вызова.

🛡️ Как отличить атаку от ошибки настройки

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

Ошибка настройки выглядит иначе. Например, агент получает слишком широкие права или система не требует подтверждения. Такая ошибка создаёт путь к ущербу, но не отвечает на вопрос об источнике изменения.

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

Не объявляйте инцидентом каждый необычный вызов. Сначала проверьте обычный рабочий процесс. Сравните действие с задачей пользователя, версией skill и политикой разрешений.

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

Что сделать сейчас: разделите итог расследования на три списка: подтверждено, вероятно и не установлено. Это снижает риск ошибочного вывода.

🚀 Как закрыть повторение сценария

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

Ограничьте права агента. Доступ к файлам, почте, SharePoint, сетевым ресурсам и инструментам должен соответствовать задаче. Не выдавайте агенту все права локального пользователя без необходимости.

Контролируйте вызовы инструментов до исполнения. Политика должна учитывать название инструмента и его аргументы. Неизвестный или опасный вызов должен получать отказ либо требовать подтверждение.

Ведите отдельный след сессии. Он связывает входной документ, загруженный skill, решение модели и фактический вызов инструмента. Такой след помогает увидеть отложенную связь.

Проверяйте содержимое skill перед публикацией и после изменения. Сверяйте манифесты, версии, подписи и источник получения. Не считайте отсутствие программы внутри файла гарантией безопасности.

Базовая защита: утверждённые версии skill, контроль изменений, ограниченные права, журнал вызовов, отказ по умолчанию и подтверждение опасных действий человеком.

Что сделать сейчас: запретите автоматическое изменение рабочих skill без записи версии и проверки владельца изменения.

📌 Итог расследования: что должно остаться в отчёте

Отчёт должен начинаться с краткого описания события. Укажите, какой skill изменился, когда это обнаружили и какие действия агент выполнил после изменения.

Затем опишите среду. Зафиксируйте версию агента, права локального пользователя, доступные инструменты и подключённые ресурсы. Отдельно укажите, работал ли агент с почтой, SharePoint, файлами, командами или MCP.

В следующем разделе разместите временную шкалу. Для каждого события укажите источник журнала. Если время приблизительное, отметьте это отдельно.

Приложите контрольные суммы, копии skill, манифесты и результаты сравнения версий. Включите сведения о том, кто и когда получил каждый материал.

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

Заражённый skill показывает слабое место доверия к инструкциям. Агент может не выполнить опасное действие сразу. Но изменение файла способно перенести риск в следующую сессию.

Что сделать сейчас: завершите отчёт перечнем исправлений, владельцев и сроков. Каждое исправление должно закрывать конкретный пробел в правах, контроле или журналировании.

📚 Читайте также

📖 Термины

Supply Chain Attack · Threat Hunting · Безопасность ИИ · Индикаторы компрометации (IoC) · Инцидент-реагирование

🔗 Источники