FC lobsterguard
Двуязычный аудитор безопасности для OpenClaw. 68 проверок по 6 категориям, 11 автоматических исправлений, охват OWASP Agentic AI Top 10, криминалистическое обнаружение, перехват угроз в реальном времени и управляемое усиление безопасности.
машинный переводПоказать оригиналСкрыть оригинал«Bilingual security auditor for OpenClaw. 68 checks across 6 categories…»
Bilingual security auditor for OpenClaw. 68 checks across 6 categories, 11 auto-fixes, OWASP Agentic AI Top 10 coverage, forensic detection, real-time threat interception, and guided hardening.
Двуязычный аудитор безопасности для OpenClaw.
Как процесс C 60/100 · Есть пробелы — слабые места: результат и критерий готовности, когда включается, входы и предусловия
Чем это грозит
Скилл содержит фрагменты, которые в чужих руках стоят денег или данных. Ниже, что рискует потерять тот, кто установит, и что должен сделать автор.
Инструкции или скрипты отправляют данные наружу: переменные окружения, ключи, содержимое файлов, историю чата. Вы можете не заметить этого в диалоге, потому что агент выполнит отправку как «часть задачи».
Если отправка не нужна для задачи, уберите её: каталоги помечают такие скиллы как подозрительные и снимают с выдачи. Если нужна, назовите адрес явно, объясните, что именно уходит, и дайте пользователю выключатель.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Скилл содержит команды, которые удаляют файлы, переписывают диски или исполняют код, скачанный из сети. Агент может выполнить их без вопроса, если считает, что так требует инструкция.
Замените разрушительные команды на безопасные аналоги с подтверждением, ограничьте область действия конкретной папкой и не тяните код через curl | bash: укажите версию и контрольную сумму.
Как улучшить
- Разберите находки высокой серьёзности: каждая стоит 18 баллов безопасности. Если это ложное срабатывание, добавьте код правила в guard.allow в spec.yaml.
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 52
-
высокая Утечка данных
exfil-post-credential-filescripts/check.py:58Загрузка файла с учётными данными на удалённый сервер (определение детектора / чёрного списка)r"curl.*-d.*\.env", # Credential exfiltration via curl
детектор
Средние и низкие: 51
-
средняя Опасные команды
cmd-persistenceinstall.sh:201Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строковый литерал в коде, не выполняется)su - "$OC_USER" -c "(crontab -l 2>/dev/null; echo '$CRON_LINE') | crontab -"
строка в коде -
средняя Опасные команды
cmd-persistencescripts/check.py:1558Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строковый литерал в коде, не выполняется)("ls /etc/cron.daily/*backup* 2>/dev/null", "daily backup script"),строка в коде -
средняя Опасные команды
cmd-persistencescripts/check.py:1793Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строковый литерал в коде, не выполняется)("ls /etc/cron.d/ 2>/dev/null", "cron.d directory"),строка в коде -
средняя Опасные команды
cmd-persistencescripts/check.py:1817Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (комментарий в коде)# Check /etc/cron.d for unusual files
комментарий -
средняя Опасные команды
cmd-persistencescripts/check.py:1818Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строковый литерал в коде, не выполняется)cron_d_stdout, _, _ = run_command("ls -la /etc/cron.d/ 2>/dev/null")строка в коде -
средняя Опасные команды
cmd-pipe-to-shellscripts/check.py:4215Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (строковый литерал в коде, не выполняется)" curl -fsSL https://get.docker.com | sudo sh",
строка в коде -
средняя Опасные команды
cmd-pipe-to-shellscripts/check.py:4240Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (строковый литерал в коде, не выполняется)" curl -fsSL https://get.docker.com | sudo sh",
строка в коде -
средняя Опасные команды
cmd-persistencescripts/fix_engine.py:720Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строковый литерал в коде, не выполняется)"command": "(crontab -l 2>/dev/null; echo '0 2 * * * ~/.openclaw/backup.sh') | crontab -",
строка в коде -
средняя Утечка данных
exfil-webhook-urlscripts/telegram_utils.py:60URL вебхука / коллбэка, типичный для эксфильтрации (проверьте адрес) (в кавычках — упоминание, а не команда)url = f"https://api.telegram.org/bot{bot_token}/sendMessage"в кавычках -
низкая Опасные команды
cmd-privilegedocs/docker-setup-guide.md:35Повышение привилегий / права на запись для всех (документация security-скилла)sudo chmod a+r /etc/apt/keyrings/docker.gpg
security-скилл -
низкая Опасные команды
cmd-privilegedocs/docker-setup-guide.md:41Повышение привилегий / права на запись для всех (документация security-скилла)sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
security-скилл -
низкая Опасные команды
cmd-privilegedocs/docker-setup-guide.md:179Повышение привилегий / права на запись для всех (документация security-скилла)sudo bash install.sh
security-скилл -
низкая Опасные команды
cmd-privilegeinstall.sh:35Повышение привилегий / права на запись для всех (строковый литерал в коде, не выполняется)log_info "Uso: sudo bash install.sh"
строка в коде -
низкая Опасные команды
cmd-cron-mentioninstall.sh:198Упоминание редактирования crontab (строковый литерал в коде, не выполняется)if su - "$OC_USER" -c "crontab -l 2>/dev/null" | grep -q "cleanup.py"; then
строка в коде -
низкая Опасные команды
cmd-cron-mentioninstall.sh:201Упоминание редактирования crontab (строковый литерал в коде, не выполняется)su - "$OC_USER" -c "(crontab -l 2>/dev/null; echo '$CRON_LINE') | crontab -"
строка в коде -
низкая Опасные команды
cmd-cron-mentioninstall.sh:255Упоминание редактирования crontab (строковый литерал в коде, не выполняется)if su - "$OC_USER" -c "crontab -l 2>/dev/null" | grep -q "cleanup.py"; then
строка в коде -
низкая Опасные команды
cmd-cron-mentioninstall.sh:256Упоминание редактирования crontab (определение детектора / чёрного списка; строковый литерал в коде, не выполняется)su - "$OC_USER" -c "crontab -l 2>/dev/null | grep -v cleanup.py | crontab -"
детекторстрока в коде -
низкая Опасные команды
cmd-privilegeinstall.sh:302Повышение привилегий / права на запись для всех (строковый литерал в коде, не выполняется)printf " ${YELLOW}Desinstalar: sudo bash install.sh --uninstall${NC}\n\n"строка в коде -
низкая Опасные команды
cmd-privilegeREADME.es.md:78Повышение привилегий / права на запись для всех (документация security-скилла)sudo bash install.sh
security-скилл -
низкая Опасные команды
cmd-privilegeREADME.es.md:94Повышение привилегий / права на запись для всех (документация security-скилла)sudo bash install.sh --uninstall
security-скилл -
низкая Опасные команды
cmd-privilegeREADME.md:78Повышение привилегий / права на запись для всех (документация security-скилла)sudo bash install.sh
security-скилл -
низкая Опасные команды
cmd-privilegeREADME.md:94Повышение привилегий / права на запись для всех (документация security-скилла)sudo bash install.sh --uninstall
security-скилл -
низкая Опасные команды
cmd-privilegescripts/check.py:802Повышение привилегий / права на запись для всех (строковый литерал в коде, не выполняется)" echo 'PermitRootLogin no' | sudo tee /etc/ssh/sshd_config.d/99-n…onf",
строка в коде -
низкая Опасные команды
cmd-privilegescripts/check.py:820Повышение привилегий / права на запись для всех (строковый литерал в коде, не выполняется)" echo 'PermitRootLogin no' | sudo tee /etc/ssh/sshd_config.d/99-n…onf",
строка в коде -
низкая Опасные команды
cmd-privilegescripts/check.py:868Повышение привилегий / права на запись для всех (строковый литерал в коде, не выполняется)" echo 'PasswordAuthentication no' | sudo tee /etc/ssh/sshd_config.d/99-n…onf",
строка в коде -
низкая Опасные команды
cmd-privilegescripts/check.py:874Повышение привилегий / права на запись для всех (строковый литерал в коде, не выполняется)" echo 'PasswordAuthentication no' | sudo tee /etc/ssh/sshd_config.d/99-n…onf",
строка в коде -
низкая Опасные команды
cmd-background-processscripts/check.py:985Запуск фонового / автозапускаемого процесса (строковый литерал в коде, не выполняется)" sudo systemctl enable fail2ban",
строка в коде -
низкая Опасные команды
cmd-background-processscripts/check.py:993Запуск фонового / автозапускаемого процесса (строковый литерал в коде, не выполняется)" sudo systemctl enable fail2ban",
строка в коде -
низкая Опасные команды
cmd-privilegescripts/check.py:1107Повышение привилегий / права на запись для всех (строковый литерал в коде, не выполняется)" sudo cp -r ~/.openclaw /home/openclaw/.openclaw",
строка в коде -
низкая Опасные команды
cmd-background-processscripts/check.py:1391Запуск фонового / автозапускаемого процесса (строковый литерал в коде, не выполняется)" sudo systemctl enable fail2ban",
строка в коде -
низкая Опасные команды
cmd-background-processscripts/check.py:1397Запуск фонового / автозапускаемого процесса (строковый литерал в коде, не выполняется)" sudo systemctl enable fail2ban",
строка в коде -
низкая Опасные команды
cmd-cron-mentionscripts/check.py:1555Упоминание редактирования crontab (строковый литерал в коде, не выполняется)("crontab -l 2>/dev/null | grep -i 'backup\\|rsync\\|tar\\|borg\\|restic\\|duplicity'", "cron backup job"),строка в коде -
низкая Опасные команды
cmd-cron-mentionscripts/check.py:1588Упоминание редактирования crontab (строковый литерал в коде, не выполняется)" sudo crontab -e",
строка в коде -
низкая Опасные команды
cmd-cron-mentionscripts/check.py:1600Упоминание редактирования crontab (строковый литерал в коде, не выполняется)" sudo crontab -e",
строка в коде -
низкая Опасные команды
cmd-cron-mentionscripts/check.py:1792Упоминание редактирования crontab (определение детектора / чёрного списка; строковый литерал в коде, не выполняется)("crontab -l 2>/dev/null", "root crontab"),детекторстрока в коде -
низкая Опасные команды
cmd-cron-mentionscripts/check.py:1797Упоминание редактирования crontab (строковый литерал в коде, не выполняется)stdout, _, code = run_command("crontab -l 2>/dev/null")строка в коде -
низкая Опасные команды
cmd-background-processscripts/check.py:6144Запуск фонового / автозапускаемого процесса (строковый литерал в коде, не выполняется)" sudo systemctl enable auditd",
строка в коде -
низкая Опасные команды
cmd-privilegescripts/fix_engine.py:302Повышение привилегий / права на запись для всех (строковый литерал в коде, не выполняется)"command": "sudo bash -c 'XDG_RUNTIME_DIR=/run/user/0 systemctl --user is-active openclaw-gateway' && sudo bash -c 'XDG_RUNTIME_DIR=/run/user/0 systemctl --user stop openclaw-gateway' && sudo kill $(p
строка в коде -
низкая Опасные команды
cmd-privilegescripts/fix_engine.py:304Повышение привилегий / права на запись для всех (определение детектора / чёрного списка; строковый литерал в коде, не выполняется)"rollback": "sudo bash -c 'XDG_RUNTIME_DIR=/run/user/0 systemctl --user start openclaw-gateway'",
детекторстрока в коде -
низкая Опасные команды
cmd-privilegescripts/fix_engine.py:313Повышение привилегий / права на запись для всех (строковый литерал в коде, не выполняется; демонстрация атаки / пример)"command": f"sudo rm -f /root/.config/systemd/user/openclaw-gateway.service && sudo rm -f /root/.config/systemd/user/default.target.wants/openclaw-gateway.service && sudo bash -c 'XDG_RUNTIME_DIR=/run
строка в кодедемонстрация -
низкая Опасные команды
cmd-privilegescripts/fix_engine.py:315Повышение привилегий / права на запись для всех (строковый литерал в коде, не выполняется; демонстрация атаки / пример)"rollback": f"sudo bash -c 'mkdir -p /root/.config/systemd/user/default.target.wants'",
строка в кодедемонстрация -
низкая Опасные команды
cmd-privilegescripts/fix_engine.py:324Повышение привилегий / права на запись для всех (определение детектора / чёрного списка; строковый литерал в коде, не выполняется)"command": f"mkdir -p {target_openclaw} && sudo bash -c 'cp -r /root/.openclaw/* {target_openclaw}/' && sudo chown -R {target_user}:{target_user} {target_openclaw}",детекторстрока в коде -
низкая Опасные команды
cmd-disable-securityscripts/fix_engine.py:661Отключение средства защиты (Defender, Gatekeeper, SIP, firewall, execution policy) (определение детектора / чёрного списка; строковый литерал в коде, не выполняется)"rollback": "ufw disable",
детекторстрока в коде -
низкая Опасные команды
cmd-cron-mentionscripts/fix_engine.py:720Упоминание редактирования crontab (строковый литерал в коде, не выполняется)"command": "(crontab -l 2>/dev/null; echo '0 2 * * * ~/.openclaw/backup.sh') | crontab -",
строка в коде -
низкая Опасные команды
cmd-cron-mentionscripts/fix_engine.py:721Упоминание редактирования crontab (строковый литерал в коде, не выполняется)"validation": "crontab -l 2>/dev/null | grep -q backup",
строка в коде -
низкая Опасные команды
cmd-cron-mentionscripts/fix_engine.py:722Упоминание редактирования crontab (определение детектора / чёрного списка; строковый литерал в коде, не выполняется)"rollback": "crontab -l | grep -v backup.sh | crontab -",
детекторстрока в коде -
низкая Опасные команды
cmd-background-processscripts/fix_engine.py:881Запуск фонового / автозапускаемого процесса (строковый литерал в коде, не выполняется)"command": "sudo systemctl enable auditd && sudo systemctl start auditd",
строка в коде -
низкая Опасные команды
cmd-background-processscripts/fix_engine.py:1224Запуск фонового / автозапускаемого процесса (строковый литерал в коде, не выполняется)"command": "sudo systemctl enable openclaw",
строка в коде -
низкая Утечка данных
exfil-webhook-urlscripts/quarantine_watcher.py:19URL вебхука / коллбэка, типичный для эксфильтрации (проверьте адрес) (значение-заглушка)TELEGRAM_API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"заглушка -
низкая Утечка данных
exfil-webhook-urlscripts/skill_scanner.py:350URL вебхука / коллбэка, типичный для эксфильтрации (проверьте адрес) (значение-заглушка)f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",заглушка
Ещё 1 совпадений отнесены к цитатам в документации скилла по безопасности и не считаются находками.
Просканировано файлов: 17. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда")
Процессный рейтинг: все десять параметров 60/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 30Повторный запуск. Изменяющих операций: 3, без проверки текущего состояния
- 85Шаги. Шагов: 60, расплывчатых формулировок: 3
- 100Инструменты и файлы. Внешние инструменты не нужны
- 100Ошибки и развилки. Развилок: 2, есть раздел про ошибки
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 1673 токенов
- 100Отчётность по ходу. Скилл сообщает о ходе работы
- medium Правила безопасности и запреты внутри скилла: их место в системном промпте, здесь они не защищают
- low Разделов верхнего уровня: 10. Похоже на несколько доменов в одном скилле
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- -37 из 8 скриптов не упомянуты в SKILL.md
- +1Лицензия не указана
- +2Инструкции на одном языке
- +3Длина description 193 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 14 заголовков
- +3Пошаговые инструкции: 60 пунктов
- +4Есть примеры (2 блоков кода)
- +4Справочные файлы упоминаются в инструкциях (1 из 1)
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 73.