SKILLEMALL.ai

FD arc-shield

Санитизация вывода для ответов агента — предотвращает случайные утечки секретов.

машинный переводПоказать оригиналСкрыть оригинал«Output sanitization for agent responses - prevents accidental secret l…»

Output sanitization for agent responses - prevents accidental secret leaks

Не рекомендуетсяесть критические или высокие находки безопасности · низкая оценка F
modbender/skill-library-mcp Hermes автор: modbender MIT 13 файлов · 6 скриптов тело ≈ 2 013 токенов Открыть источникgithub.com проанализирован 29 ч назад

Санитизация вывода для ответов агента — предотвращает случайные утечки секретов.

Как процесс D 48/100 · Процесс не доведён — слабые места: результат и критерий готовности, когда включается, входы и предусловия

ИнтеграцияGitHubDiscordИИ и агентыРазработкатип и темы размечены автоматически по тексту скилла
Запускается в: OpenClaw Hermes Agent
JSON
Технический рейтинг
F
39/100
безопасность, качество, тесты
Безопасность 60%
22
Качество 40%
65
Прогон на моделях
не было
Процессный рейтинг
D
48/100
Процесс не доведён
Результат и критерий готовности вес 14
0
Входы и предусловия вес 11
0
Отчётность по ходу вес 2
0
три самых слабых из десяти параметров · все десять

Чем это грозит

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

Секреты в коде
Если установить

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

Автору

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

Рискованное назначение средняя серьёзность

Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.

Если установить

Назначение скилла само по себе рискованное: работа с кошельками, паролями браузера, наступательная безопасность. Даже честная реализация даёт агенту доступ к тому, что стоит денег.

Автору

Объясните в description, зачем нужен доступ и как он ограничен; добавьте тесты, которые показывают отказ на опасных запросах.

Как улучшить

  1. Разберите находки высокой серьёзности: каждая стоит 18 баллов безопасности. Если это ложное срабатывание, добавьте код правила в guard.allow в spec.yaml.
  2. Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
  3. Для Hermes description должен быть одним предложением до 60 символов; условия применения вынесите в раздел «When to Use».
Для прогона на моделях — необязательно
  • Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
  • spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.

Находки guard · 11

  • высокая Секреты в коде secret-github-token examples/demo.sh:44
    Токен GitHub (тестовый файл / пример)
    url = https://ghp_…:x-…@….com/user/repo.git"
    тестовый файл
  • высокая Секреты в коде secret-github-token INSTALLATION.md:172
    Токен GitHub (определение детектора / чёрного списка)
    echo "Token: ghp_…pqr" | scripts/arc-shield.sh --strict
    детектор
  • высокая Секреты в коде secret-github-token QUICKREF.md:69
    Токен GitHub (определение детектора / чёрного списка)
    echo "Token: ghp_…pqr" | arc-shield.sh --strict
    детектор
Средние и низкие: 8
  • средняя Секреты в коде secret-private-key COMPLETION_SUMMARY.md:102
    Приватный ключ (определение детектора / чёрного списка; заголовок ключа без тела; строка таблицы в документации)
    | PGP Key | `-----BEGIN PGP PRIVATE KEY BLOCK-----` | PGP blocks |
    детектортолько заголовоктаблица
  • средняя Рискованное назначение intent-wallet-secrets COMPLETION_SUMMARY.md:267
    Работает с секретами криптокошелька (сид-фраза / приватный ключ) — классическая цель стилеров
    3. ✅ Wallet recovery phrase when listing file contents
  • средняя Секреты в коде secret-private-key scripts/arc-shield.sh:114
    Приватный ключ (определение детектора / чёрного списка; заголовок ключа без тела)
    echo "$INPUT" | grep -E -- '-----BEGIN PGP PRIVATE KEY BLOCK-----' || true
    детектортолько заголовок
  • средняя Секреты в коде secret-private-key scripts/output-guard.py:49
    Приватный ключ (определение детектора / чёрного списка; заголовок ключа без тела)
    "PGP Private Key": re.compile(r'-----BEGIN PGP PRIVATE KEY BLOCK-----'),
    детектортолько заголовок
  • низкая Секреты в коде secret-aws-key COMPLETION_SUMMARY.md:97
    AWS access key ID (значение-заглушка)
    | AWS | `AKIA*` | `AKIA…PLE` |
    заглушка
  • низкая Рискованное назначение intent-wallet-secrets examples/demo.sh:55
    Работает с секретами криптокошелька (сид-фраза / приватный ключ) — классическая цель стилеров (тестовый файл / пример; в кавычках — упоминание, а не команда)
    demo_catch "Wallet recovery phrase" \
    тестовый файлв кавычках
  • низкая Секреты в коде secret-aws-key examples/demo.sh:60
    AWS access key ID (значение-заглушка)
    "export AWS_ACCESS_KEY_ID=AKIA…PLE
    заглушка
  • низкая Секреты в коде secret-high-entropy-token SKILL.md:159
    Строка, похожая на токен (может быть id, хеш или секрет)
    kJ8n…hI0  # Novel API key format

Просканировано файлов: 10. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.

По спецификации Agent Skills

  • предупреждение description-long-hermes description 74 символов, а стандарт Hermes требует ≤ 60 (одно предложение, с точкой)
  • предупреждение description-no-when ни description, ни раздел "## When to Use" не говорят, когда применять скилл
  • заметка frontmatter-key неизвестное поле фронтматтера "requires"

Процессный рейтинг: все десять параметров 48/100

  • 0Результат и критерий готовности. Не сказано, что считать результатом
  • 0Входы и предусловия. Не сказано, что нужно иметь на входе
  • 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
  • 20Когда включается. Не сказано, при каком запросе скилл включается
  • 30Повторный запуск. Изменяющих операций: 2, без проверки текущего состояния
  • 50Ошибки и развилки. Развилок: 0, есть раздел про ошибки
  • 60Инструменты и файлы. Используются инструменты (bash, python), но во frontmatter они не объявлены
  • 100Шаги. Шагов: 41
  • 100Согласованность. Имя и обязательные поля на месте
  • 100Стоимость исполнения. Тело инструкции 2013 токенов
  • low Разделов верхнего уровня: 15. Похоже на несколько доменов в одном скилле

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

Сигналы качества

  • +5В description нет примеров фраз, по которым скилл должен срабатывать
  • +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
  • +3Длина description 74: рекомендуется 120–800 символов
  • +3Формат ответа не описан: модель каждый раз решает сама
  • +1Лицензия не указана
  • +2Инструкции на одном языке
  • +4Структура: 24 заголовков
  • +3Пошаговые инструкции: 41 пунктов
  • +4Есть примеры (11 блоков кода)
  • +3Все 2 скриптов описаны в инструкциях

База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 65.