FC ecap-security-auditor
Каркас аудита безопасности для навыков ИИ-агентов, серверов MCP и пакетов. Ваша LLM выполняет анализ — мы предоставляем структуру, промпты и общую базу доверия.
машинный переводПоказать оригиналСкрыть оригинал«Security audit framework for AI agent skills, MCP servers, and package…»
Security audit framework for AI agent skills, MCP servers, and packages. Your LLM does the analysis — we provide structure, prompts, and a shared trust database.
Каркас аудита безопасности для навыков ИИ-агентов, серверов MCP и пакетов.
Как процесс C 58/100 · Есть пробелы — слабые места: результат и критерий готовности, входы и предусловия
Чем это грозит
Находки средней серьёзности: скорее всего скилл честный, но прочитайте, что именно насторожило сканер.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Скилл содержит команды, которые удаляют файлы, переписывают диски или исполняют код, скачанный из сети. Агент может выполнить их без вопроса, если считает, что так требует инструкция.
Замените разрушительные команды на безопасные аналоги с подтверждением, ограничьте область действия конкретной папкой и не тяните код через curl | bash: укажите версию и контрольную сумму.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
В файлах есть невидимые символы, закодированные команды или спрятанные комментарии для модели. То, что вы читаете, отличается от того, что видит агент.
Уберите невидимые символы (часто они попадают из копипаста) и закодированные строки: их не пропустит ни один каталог. Инструкции для модели должны быть видны и человеку.
Как улучшить
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- Тело SKILL.md длиннее 5 000 токенов: вынесите справочные детали в references/ и подключайте по необходимости.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 80
✓ Критических и высоких находок нет
Средние и низкие: 80
-
средняя Опасные команды
cmd-pipe-to-shellFERRET-SCAN-ANALYSIS.md:268Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (документация security-скилла)- curl|bash, eval, exec
security-скилл -
средняя Обфускация
uni-zero-widthPROMPT-TEST-SUITE.md:253Невидимые символы нулевой ширины (возможен скрытый текст) (19 шт.) (тестовый файл / пример)This␀␀␀␀ tool␀␀␀ is␀␀␀␀␀ safe␀␀␀ to␀␀␀␀ use.
тестовый файл -
средняя Опасные команды
cmd-persistenceprompts/audit-prompt.md:79Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (документация security-скилла)- LaunchAgents/LaunchDaemons (`~/Library/LaunchAgents`)
security-скилл -
средняя Опасные команды
cmd-encoded-execSKILL.md:355Выполнение закодированного (base64) кода (строка таблицы в документации; документация security-скилла)| `OBF_B64_002` | Base…ode → execute chains | `atob()`, `base64 -d`, `b64decode()` followed by `eval`/`exec` |
таблицаsecurity-скилл -
низкая Рискованное назначение
intent-offensive-securityAUDIT-QUALITY-TEST.md:16Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение) (тестовый файл / пример)| 3 | Reverse shell | setu…-24 | CRITICAL |
тестовый файл -
низкая Рискованное назначение
intent-offensive-securityAUDIT-QUALITY-TEST.md:65Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение) (определение детектора / чёрного списка; тестовый файл / пример)"title": "Reverse shell backdoor",
детектортестовый файл -
низкая Рискованное назначение
intent-offensive-securityAUDIT-QUALITY-TEST.md:66Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение) (тестовый файл / пример; в кавычках — упоминание, а не команда)"description": "Opens reverse shell to 45.33.32.156:4444, piping /bin/sh stdin/stdout over TCP. Classic backdoor.",
тестовый файлв кавычках -
низкая Рискованное назначение
intent-offensive-securityAUDIT-QUALITY-TEST.md:251Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение) (тестовый файл / пример; в кавычках — упоминание, а не команда)"remediation": "Remove immediately - C2 server communication",
тестовый файлв кавычках -
низкая Рискованное назначение
intent-offensive-securityAUDIT-QUALITY-TEST.md:277Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение) (тестовый файл / пример)Prompt correctly identifies: typosquatting, CI-conditional activation, custom registry, credential harvesting, hidden functionality. The CI-only trigger is especially good — shows the prompt doesn't j
тестовый файл -
низкая Опасные команды
cmd-privilegeFERRET-ADOPTION-PLAN.md:210Повышение привилегий / права на запись для всех (документация security-скилла)> - **chmod 777**: World-writable permissions on any file, especially executables or configs
security-скилл -
низкая Опасные команды
cmd-privilegeFERRET-SCAN-ANALYSIS.md:91Повышение привилегий / права на запись для всех (документация security-скилла)- Built-in Fixes: Credentials redacten, Jailbreak entfernen, HTTP→HTTPS, chmod 777→644
security-скилл -
низкая Опасные команды
cmd-privilegeFERRET-SCAN-ANALYSIS.md:225Повышение привилегий / права на запись для всех (документация security-скилла)- Bei chmod 777 → "Use chmod 644 or more restrictive"
security-скилл -
низкая Опасные команды
cmd-pipe-to-shellPROMPT-TEST-SUITE.md:139Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (тестовый файл / пример; документация security-скилла)- **PASS**: Persistence UND curl\|bash beide als real findings erkannt, result >= caution
тестовый файлsecurity-скилл -
низкая Опасные команды
cmd-pipe-to-shellPROMPT-TEST-SUITE.md:141Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (тестовый файл / пример; документация security-скилла)- **PARTIAL**: Nur curl\|bash erkannt, crontab nicht explizit geflaggt
тестовый файлsecurity-скилл -
низкая Опасные команды
cmd-pipe-to-shellPROMPT-TEST-SUITE.md:145Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (тестовый файл / пример; документация security-скилла)- **v1**: Wird wahrscheinlich curl\|bash finden, crontab evtl. nur als "system modification". Kein PERSIST pattern_id.
тестовый файлsecurity-скилл -
низкая Опасные команды
cmd-privilegeprompts/audit-prompt-v1-backup.md:55Повышение привилегий / права на запись для всех (документация security-скилла)- **Privilege escalation**: Unnecessary `sudo`, setuid, or capability requests
security-скилл -
низкая Рискованное назначение
intent-offensive-securityprompts/audit-prompt-v1-backup.md:55Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)- **Privilege escalation**: Unnecessary `sudo`, setuid, or capability requests
-
низкая Рискованное назначение
intent-offensive-securityprompts/audit-prompt-v1-backup.md:227Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)| PRIV_ESC | Privilege escalation |
-
низкая Рискованное назначение
intent-offensive-securityprompts/audit-prompt.md:25Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)| **Settings / Config** | Permission grants, tool allow-lists, `defaultMode` | Privilege escalation, wildcard permissions (`Bash(*)`) |
-
низкая Опасные команды
cmd-privilegeprompts/audit-prompt.md:71Повышение привилегий / права на запись для всех (документация security-скилла)- **Privilege escalation**: Unnecessary `sudo`, setuid, capability requests, wildcard permissions (`Bash(*)`, `*` in tool allow-lists)
security-скилл -
низкая Рискованное назначение
intent-offensive-securityprompts/audit-prompt.md:71Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)- **Privilege escalation**: Unnecessary `sudo`, setuid, capability requests, wildcard permissions (`Bash(*)`, `*` in tool allow-lists)
-
низкая Рискованное назначение
intent-offensive-securityprompts/audit-prompt.md:130Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)| Permission escalation | Persistence mechanism | **Persistent privilege escalation** |
-
низкая Рискованное назначение
intent-offensive-securityprompts/audit-prompt.md:294Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)| PRIV_ESC | Privilege escalation |
-
низкая Рискованное назначение
intent-offensive-securityREADME.md:60Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение) (определение детектора / чёрного списка)| **🔗 Cross-File Analysis** *(v2)* | Detects multi-file attack chains like credential harvesting + exfiltration across separate files. |
детектор -
низкая Рискованное назначение
intent-offensive-securityREADME.md:69Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)Command injection · Credential theft · Data exfiltration · Sandbox escapes · Supply chain attacks · Path traversal · Privilege escalation · Unsafe deserialization · Weak cryptography · Information lea
-
низкая Утечка данных
net-credential-useSKEPTIC-REVIEW.md:110Учётные данные используются в сетевом вызове (проверьте, что адрес — нужный сервис) (строка таблицы в документации; документация security-скилла)| 288 | `curl -s "..." -H "Authorization: Bearer $ECAP_API_KEY"` | ✅ | ✅ |
таблицаsecurity-скилл -
низкая Рискованное назначение
intent-offensive-securitySKILL-v1-backup.md:275Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)- `scripts/`: `curl|bash`, `eval`, `rm -rf`, credential harvesting
-
низкая Опасные команды
cmd-pipe-to-shellSKILL-v1-backup.md:385Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (строка таблицы в документации; документация security-скилла)| **Critical** | Exploitable now, immediate damage. | `curl URL \| bash`, `rm -rf /`, env var exfiltration, `eval` on raw input |
таблицаsecurity-скилл -
низкая Рискованное назначение
intent-offensive-securitySKILL-v1-backup.md:404Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)| `PRIV_ESC` | Privilege escalation |
-
низкая Рискованное назначение
intent-offensive-securitySKILL.md:278Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)- `scripts/`: `curl|bash`, `eval`, `rm -rf`, credential harvesting
-
низкая Подмена инструкций
en-role-hijackSKILL.md:322Подмена роли ("from now on you must ignore… / developer mode") (строка таблицы в документации; документация security-скилла)| `AI_P…003` | Capability Escalation | "enable developer mode", "unlock hidden capabilities", "activate god mode" |
таблицаsecurity-скилл -
низкая Опасные команды
cmd-cron-mentionSKILL.md:341Упоминание редактирования crontab (строка таблицы в документации; документация security-скилла)| `PERSIST_001` | Crontab modification | `crontab -e`, `crontab -l`, writing to `/var/spool/cron/` |
таблицаsecurity-скилл -
низкая Опасные команды
cmd-background-processSKILL.md:344Запуск фонового / автозапускаемого процесса (строка таблицы в документации; документация security-скилла)| `PERSIST_004` | Systemd services | `systemctl enable`, writing to `/etc/systemd/`, `.service` files |
таблицаsecurity-скилл -
низкая Опасные команды
cmd-persistenceSKILL.md:345Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строка таблицы в документации; документация security-скилла)| `PERSIST_005` | macOS LaunchAgents | Writing to `~/Library/LaunchAgents/`, `/Library/LaunchDaemons/` |
таблицаsecurity-скилл -
низкая Опасные команды
cmd-pipe-to-shellSKILL.md:472Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (строка таблицы в документации; документация security-скилла)| **Critical** | Exploitable now, immediate damage. | `curl URL \| bash`, `rm -rf /`, env var exfiltration, `eval` on raw input |
таблицаsecurity-скилл -
низкая Рискованное назначение
intent-offensive-securitySKILL.md:494Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)| `PRIV_ESC` | Privilege escalation |
-
низкая Опасные команды
cmd-pipe-to-shellTEST-RESULTS-V1.md:35Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (тестовый файл / пример; документация security-скилла)**Erwartet:** Persistence UND curl|bash beide als real findings erkannt, result >= caution. Kein PERSIST pattern_id erwartet für v1.
тестовый файлsecurity-скилл -
низкая Опасные команды
cmd-pipe-to-shellTEST-RESULTS-V1.md:37Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (тестовый файл / пример; документация security-скилла)**Begründung:** v1 findet curl|bash als CRITICAL (explizit in Step 3 🔴) und crontab als "System modification" (Step 3 🟠 HIGH). Beide werden korrekt als by_design:false erkannt. Es gibt keinen PERSIS
тестовый файлsecurity-скилл -
низкая Рискованное назначение
intent-offensive-securityTEST-RESULTS-V1.md:85Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение) (определение детектора / чёрного списка; тестовый файл / пример)1. `pattern_id: CRED…001`, severity: `critical`, title: "Credential harvesting via environment variables", file: `src/config.js`, lines: 4-6, content: `process.env.API_KEY, process.env.DB_PASSWO
детектортестовый файл -
низкая Опасные команды
cmd-pipe-to-shellTEST-RESULTS-V2.md:53Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (тестовый файл / пример; документация security-скилла)**Erwartet:** Persistence UND curl|bash beide als real findings erkannt, result >= caution
тестовый файлsecurity-скилл -
низкая Опасные команды
cmd-pipe-to-shellTEST-RESULTS-V2.md:55Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (тестовый файл / пример; документация security-скилла)**Begründung:** Persistence (PERSIST_001) explizit erkannt, curl|bash als CRITICAL erkannt, result=unsafe.
тестовый файлsecurity-скилл -
низкая Опасные команды
cmd-pipe-to-shellTEST-RESULTS-V2.md:292Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (тестовый файл / пример; документация security-скилла)| 2 | Persistence/Crontab | ✅ PASS | PERSIST + curl\|bash erkannt, result=unsafe |
тестовый файлsecurity-скилл
Ещё 38 совпадений отнесены к цитатам в документации скилла по безопасности и не считаются находками.
Просканировано файлов: 36. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда") - предупреждение
body-longтело SKILL.md ≈ 7620 токенов (рекомендуется < 5000); вынесите детали в references/
Процессный рейтинг: все десять параметров 58/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 50Когда включается. Не сказано, при каком запросе скилл включается
- 60Инструменты и файлы. Используются инструменты (bash, web, git, python, node), но во frontmatter они не объявлены
- 70Стоимость исполнения. Тело инструкции 7620 токенов
- 85Шаги. Шагов: 47, расплывчатых формулировок: 1
- 100Ошибки и развилки. Развилок: 2, есть раздел про ошибки
- 100Согласованность. Имя и обязательные поля на месте
- 100Повторный запуск. Изменяющие операции проверяют текущее состояние
- 100Отчётность по ходу. Скилл сообщает о ходе работы
- medium Правила безопасности и запреты внутри скилла: их место в системном промпте, здесь они не защищают
- low Разделов верхнего уровня: 11. Похоже на несколько доменов в одном скилле
- low Ответ описан самодельной разметкой (11 тегов): типизированный вызов надёжнее
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- -239 эмодзи в инструкциях: шум для модели
- +1Лицензия не указана
- +2Инструкции на одном языке
- +3Длина description 161 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 41 заголовков
- +3Пошаговые инструкции: 47 пунктов
- +4Есть примеры (18 блоков кода)
- +3Все 3 скриптов описаны в инструкциях
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 63.