原文(日本語に翻訳)
セキュリティ: Bashの拒否ルールが、env/sudo/watch/ionice/setsidおよび類似の実行ラッパーでラップされたコマンドにもマッチするようになりました。
原文(英語)
Security: Bash deny rules now match commands wrapped in env/sudo/watch/ionice/setsid and similar exec wrappers
概要
これまでBashの拒否ルールは直接実行されるコマンドにのみ適用されていましたが、env、sudo、watch、ionice、setsidなどのラッパーコマンドで包まれた場合にはルールが適用されない問題がありました。このセキュリティ修正により、実行ラッパーを使ってコマンドを隠蔽しても拒否ルールが正しく機能するようになります。
基本的な使い方
json
// .claude/settings.json での設定例
{
"permissions": {
"deny": [
"Bash(rm:*)"
]
}
}この設定により、以下のコマンドがすべて拒否されます:
bash
# 直接実行(従来から拒否されていた)
rm -rf /tmp/test
# ラッパー経由(今回から拒否されるようになった)
sudo rm -rf /tmp/test
env rm -rf /tmp/test
watch rm -rf /tmp/test
ionice rm -rf /tmp/test
setsid rm -rf /tmp/test実践例
sudo経由での危険なコマンド実行を防ぐ
json
// 設定例: 危険なコマンドを拒否
{
"permissions": {
"deny": [
"Bash(chmod:*)",
"Bash(chown:*)",
"Bash(dd:*)"
]
}
}bash
# これらはすべて拒否される
chmod 777 /etc/passwd
sudo chmod 777 /etc/passwd # sudoでも拒否
env chmod 777 /etc/passwd # envでも拒否watchコマンドでの繰り返し実行を防ぐ
json
{
"permissions": {
"deny": [
"Bash(curl:*)"
]
}
}bash
# 以下はすべて拒否される
curl https://example.com
watch curl https://example.com # 繰り返し実行も拒否
watch -n 5 curl https://example.com # インターバル付きも拒否複数のラッパーを組み合わせた場合
bash
# ネストされたラッパーも拒否ルールが適用される
sudo env rm -rf /tmp/dangerous
# ↑ rm が拒否ルールにある場合、これも拒否されるプロジェクト設定での実践的な例
json
// .claude/settings.json
{
"permissions": {
"allow": [
"Bash(npm:*)",
"Bash(git:*)",
"Bash(ls:*)"
],
"deny": [
"Bash(rm:*)",
"Bash(curl:*)",
"Bash(wget:*)",
"Bash(nc:*)",
"Bash(ssh:*)"
]
}
}注意点
- 対応するラッパーコマンド:
env、sudo、watch、ionice、setsidおよびこれらに類似した実行ラッパー - ラッパーコマンドを何重にネストしても、内部のコマンドにルールが適用されます
- 拒否ルールはセキュリティの観点から許可ルールより優先されます
- この変更により、意図的・非意図的なルール回避を防止できます
- ラッパー自体(
sudoやenvなど)に対してルールを設定することも引き続き可能です