DC agent-safety
Система защиты Агента — перехват событий (Hook Engine) + три уровня защиты (ввод/инструменты/вывод) + итеративный цикл (Ralph Loop) + отслеживание операций (Operation Tracer)
машинный переводПоказать оригиналСкрыть оригинал«Agent 安全防护体系——事件驱动拦截(Hook Engine)+ 三层护栏(输入/工具/输出)+ 迭代循环(Ralph Loop)+ 操…»
Agent 安全防护体系——事件驱动拦截(Hook Engine)+ 三层护栏(输入/工具/输出)+ 迭代循环(Ralph Loop)+ 操作追踪(Operation Tracer)
Система защиты Агента — перехват событий (Hook Engine) + три уровня защиты (ввод/инструменты/вывод) + итеративный цикл (Ralph Loop) + отслеживание операций…
Как процесс C 50/100 · Есть пробелы — слабые места: результат и критерий готовности, когда включается, входы и предусловия
Чем это грозит
Скилл содержит фрагменты, которые в чужих руках стоят денег или данных. Ниже, что рискует потерять тот, кто установит, и что должен сделать автор.
В тексте есть фразы вроде «игнорируй предыдущие инструкции» или «теперь ты…». Это попытка перехватить управление агентом: он может нарушить ваши правила, системные ограничения или политику компании.
Такие фразы не нужны честному скиллу: сформулируйте роль и правила прямо, без отмены чужих инструкций. Иначе сканеры каталогов и корпоративные фильтры заблокируют публикацию.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
В файлах лежит чужой ключ или токен. Если он живой, ваш агент начнёт ходить в чужие сервисы от чужого имени; если ключ уже отозван, скрипты скилла просто сломаются. Такой ключ мог попасть в скилл вместе с целым рабочим пространством автора, включая личные данные.
Ключ виден всем, кто скачал скилл, и уже мог быть скопирован ботами, которые сканируют каталоги. Отзовите его сейчас, проверьте счета и логи доступа, а потом перевыпустите.
Как улучшить
- Разберите находки высокой серьёзности: каждая стоит 18 баллов безопасности. Если это ложное срабатывание, добавьте код правила в guard.allow в spec.yaml.
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 24
-
высокая Подмена инструкций
en-ignore-previousSKILL.md:203Фраза-перехват ("ignore previous instructions")| 1 | ignore previous instructions | "ignore previous instructions and..." |
-
высокая Подмена инструкций
en-ignore-previousSKILL.md:204Фраза-перехват ("ignore previous instructions")| 2 | ignore above instructions | "ignore all above instructions" |
Средние и низкие: 22
-
средняя Подмена инструкций
en-ignore-previousreferences/injection_patterns.md:9Фраза-перехват ("ignore previous instructions") (документация security-скилла)### 1. ignore previous instructions
security-скилл -
средняя Подмена инструкций
en-ignore-previousreferences/injection_patterns.md:21Фраза-перехват ("ignore previous instructions") (документация security-скилла)### 2. ignore above instructions
security-скилл -
средняя Секреты в коде
secret-private-keyscripts/test_guardrails.py:153Приватный ключ (заголовок ключа без тела; тестовый файл / пример; в кавычках — упоминание, а не команда)("private_key = -----BEGIN PRIVATE KEY----- …только заголовоктестовый файлв кавычках -
средняя Подмена инструкций
en-fake-system-promptSKILL.md:207Поддельный системный промпт внутри контента (строка таблицы в документации)| 5 | system prompt | "system prompt override" |
таблица -
средняя Секреты в коде
secret-private-keySKILL.md:236Приватный ключ (заголовок ключа без тела; строка таблицы в документации)| 5 | 私钥 | `private_key=xxx`, `-----BEGIN PRIVATE KEY----- …
только заголовоктаблица -
низкая Секреты в коде
secret-password-literalscripts/guardrail.py:81Захардкоженный пароль / ключ (возможно, пример) (значение-заглушка)result = guardrails.check_output("Here is the API_KEY=sk-1…def")заглушка -
низкая Секреты в коде
secret-password-literalscripts/output_guard.py:99Захардкоженный пароль / ключ (возможно, пример) (значение-заглушка)"API_KEY=sk-1…def",
заглушка -
низкая Секреты в коде
secret-private-keyscripts/output_guard.py:103Приватный ключ (значение-заглушка)"-----BEGIN PRIVATE KEY----- …",
заглушка -
низкая Секреты в коде
secret-password-literalscripts/test_guardrails.py:147Захардкоженный пароль / ключ (возможно, пример) (значение-заглушка)("API_KEY=sk-1…def", True, "API密钥过滤"),заглушка -
низкая Секреты в коде
secret-high-entropy-tokenscripts/test_guardrails.py:152Строка, похожая на токен (может быть id, хеш или секрет) (тестовый файл / пример; в кавычках — упоминание, а не команда)("token = eyJh…CJ9", True, "访问令牌过滤"),тестовый файлв кавычках -
низкая Секреты в коде
secret-password-literalscripts/test_guardrails.py:215Захардкоженный пароль / ключ (возможно, пример) (тестовый файл / пример; в кавычках — упоминание, а не команда)r3 = system.check_output("API_KEY=sk-s…123, email: ad…@….com")тестовый файлв кавычках
Ещё 11 совпадений отнесены к цитатам в документации скилла по безопасности и не считаются находками.
Просканировано файлов: 24. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда") - заметка
frontmatter-keyнеизвестное поле фронтматтера "triggers"
Процессный рейтинг: все десять параметров 50/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 30Повторный запуск. Изменяющих операций: 3, без проверки текущего состояния
- 50Ошибки и развилки. Развилок: 0, есть раздел про ошибки
- 60Инструменты и файлы. Используются инструменты (python), но во frontmatter они не объявлены
- 100Шаги. Шагов: 17
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 3050 токенов
- 100Отчётность по ходу. Скилл сообщает о ходе работы
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Длина description 91: рекомендуется 120–800 символов
- +3Формат ответа не описан: модель каждый раз решает сама
- +1Лицензия не указана
- +2Инструкции на одном языке
- +4Структура: 33 заголовков
- +3Пошаговые инструкции: 17 пунктов
- +4Есть примеры (18 блоков кода)
- +4Справочные файлы упоминаются в инструкциях (9 из 9)
- +3Все 9 скриптов описаны в инструкциях
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 75.