CF skill-security-checker
Skill Security — сканер безопасности, помогающий быстро выявлять риски безопасности в навыках. Легковесное SAST-отслеживание потоков (Python AST + приближенное лексическое сканирование JS, цепочка доказательств source→sink для снижения ложных срабатываний), движок правил (горячая замена пакетов правил YAML для расширения), общедоступные правила (проверка схемы + запись источника + проверка подписи), обнаружение ML-семантики внедрения подсказок (ONNX + откат к регулярным выражениям), захват системного поведения (eBPF Linux / ETW Windows), динамическое сканирование выполнения в песочнице, анализ рисков цепочки поставок, автономный пакет данных OSV.dev (полное покрытие CVE экосистемы, нулевые ключи) + глубокий анализ файлов блокировки (requirements.txt / package-lock.json / poetry.lock, точное соответствие на уровне интервала версий), база данных отпечатков вредоносных навыков, проверка работоспособности и соответствия требованиям (объединение качества + структуры + разрешений), глобальная конфигурация исключений, интеграция CI/CD, генерация отчетов в формате JSON/HTML/SARIF.
машинный переводПоказать оригиналСкрыть оригинал«Skill Security — 安全审计扫描器,帮助你快速发现 Skill 中的安全风险。轻量 SAST 污点追踪(Python AST…»
Skill Security — 安全审计扫描器,帮助你快速发现 Skill 中的安全风险。轻量 SAST 污点追踪(Python AST + JS 词法近似,source→sink 证据链降误报)、规则引擎(YAML 规则包热插拔扩展)、社区规则(schema 校验 + 来源记录 + 签名验证)、提示注入 ML 语义检测(ONNX + 正则降级)、系统级行为捕获(eBPF Linux / ETW Windows)、动态沙箱执行扫描、供应链风险分析、OSV.dev 离线数据包(全生态 CVE 覆盖,零密钥)+ 锁文件深度解析(requirements.txt / package-lock.json / poetry.lock,版本区间级精确匹配)、恶意 Skill 指纹库、健康度与合规检查(质量+结构+权限合并)、全局排除配置、CI/CD 集成、JSON/HTML/SARIF 报告生成。
Skill Security — сканер безопасности, помогающий быстро выявлять риски безопасности в навыках.
Как процесс F 33/100 · Не запустится — Скилл ссылается на файлы, которых нет в архиве: scripts/rules/*.yaml
Чем это грозит
Находки средней серьёзности: скорее всего скилл честный, но прочитайте, что именно насторожило сканер.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Скилл просит больше прав, чем нужно для задачи: широкий доступ к инструментам, секретные переменные окружения, бинарные файлы. Каждое лишнее право расширяет ущерб при ошибке или взломе.
Сузьте allowed-tools и список переменных до минимума, замените бинарники на исходники или скрипты, которые можно прочитать.
Как улучшить
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- Тело SKILL.md длиннее 5 000 токенов: вынесите справочные детали в references/ и подключайте по необходимости.
- В тексте есть ссылки на отсутствующие файлы: добавьте файлы или уберите ссылки.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 8
✓ Критических и высоких находок нет
Средние и низкие: 8
-
средняя Широкие права
meta-broad-allowed-toolsSKILL.md:1Заранее разрешены широкие инструменты: Bashallowed-tools: Bash Read
-
низкая Секреты в коде
secret-high-entropy-tokenscripts/audit.py:176Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)'Y3Vy…Gwp',
в кавычках -
низкая Опасные команды
cmd-pipe-to-shellscripts/rules/command_injection.yaml:8Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (строковый литерал в коде, не выполняется; документация security-скилла)- 'curl.*(sh|bash|cmd|powershell)'
строка в кодеsecurity-скилл -
низкая Опасные команды
cmd-pipe-to-shellscripts/rules/command_injection.yaml:9Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (строковый литерал в коде, не выполняется; документация security-скилла)- 'wget.*(sh|bash)'
строка в кодеsecurity-скилл
Ещё 4 совпадений отнесены к цитатам в документации скилла по безопасности и не считаются находками.
Просканировано файлов: 32. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда") - предупреждение
body-longтело SKILL.md ≈ 5001 токенов (рекомендуется < 5000); вынесите детали в references/ - предупреждение
missing-refссылка на отсутствующий файл: scripts/rules/*.yaml - заметка
frontmatter-keyнеизвестное поле фронтматтера "slug" - заметка
frontmatter-keyнеизвестное поле фронтматтера "displayName" - заметка
frontmatter-keyнеизвестное поле фронтматтера "icon"
Процессный рейтинг: все десять параметров 33/100
- 0Инструменты и файлы. Не хватает 1 файла(ов): scripts/rules/*.yaml
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Ошибки и развилки. Линейный процесс без обработки сбоев
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 30Повторный запуск. Изменяющих операций: 2, без проверки текущего состояния
- 70Стоимость исполнения. Тело инструкции 5001 токенов
- 100Шаги. Шагов: 58
- 100Согласованность. Имя и обязательные поля на месте
- 100Отчётность по ходу. Скилл сообщает о ходе работы
- low Разделов верхнего уровня: 10. Похоже на несколько доменов в одном скилле
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- -239 эмодзи в инструкциях: шум для модели
- -41 справочных файлов, но SKILL.md на них не ссылается: модель их не откроет
- -32 из 8 скриптов не упомянуты в SKILL.md
- +2Инструкции на одном языке
- +3Длина description 399 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 39 заголовков
- +3Пошаговые инструкции: 58 пунктов
- +4Есть примеры (6 блоков кода)
- +1Лицензия указана
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 45.