权限清理 sanitize-permissions

这是一个用于审计AI助手权限配置的安全工具,主要功能包括:权限安全检查、危险模式识别、安全钩子绕过检测、配置注入向量分析、重复权限清理。关键词:AI安全审计、权限管理、安全钩子、配置安全、注入防护、DevOps安全、自动化安全检查、权限清理工具。

安全审计 0 次安装 0 次浏览 更新于 2/27/2026

名称: 权限清理 描述: “审计settings.local.json中的危险权限。在授予权限后定期使用,或在安全卫生重要时使用。”

审计.claude/settings.local.json权限中绕过安全钩子、授予过度广泛访问权限或创建注入向量的条目。这是一项深度防御措施——钩子在运行时阻止危险命令,但预先批准的权限会跳过使钩子可见的确认步骤。

何时使用

  • 定期(每周或在繁忙会话后)
  • 在会话中授予多个权限后
  • 提交设置更改前
  • 当用户询问"我的权限安全吗?"时
  • 如果注意到允许列表快速增长,主动使用

何时不使用

  • 用户正在积极调试权限问题时
  • 当用户明确表示"我知道我在做什么"时 n

使用示例

/权限清理
/权限清理(在那次长会话后)

执行步骤

步骤1:读取当前权限

cat .claude/settings.local.json

解析permissions.allow数组。

步骤2:检查危险模式

标记匹配以下类别的任何权限:

类别A:钩子绕过(关键)

这些预先批准了安全钩子设计用于拦截的命令。钩子仍然运行,但用户永远不会看到确认对话框——因此他们无法拒绝它。

模式 危险原因
Bash(git push:*) 绕过block-git-push.sh钩子确认
Bash(git push) 相同——精确匹配变体
Bash(git push --force:*) 强制推送,无需确认

类别B:破坏性命令(高)

模式 危险原因
Bash(rm -rf:*) 递归删除,无需确认
Bash(git reset --hard:*) 丢弃未提交的工作
Bash(git checkout .:*) 丢弃所有未暂存的更改
Bash(git clean -f:*) 删除未跟踪的文件
Bash(git branch -D:*) 强制删除分支
Bash(sudo:*) 提升权限

类别C:配置注入向量(高)

这些允许代理修改控制其自身行为的文件——通过提示注入可能被利用的自我修改向量。

模式 危险原因
任何可能写入.claude/settings.local.jsonBash(...) 代理修改自身权限
任何可能写入CLAUDE.mdBash(...) 代理修改自身指令
任何可能写入.claude/hooks/*.shBash(...) 代理修改安全钩子
任何可能写入.context/CONSTITUTION.mdBash(...) 代理修改自身硬规则

这些仅通过模式更难检测。寻找过度广泛的权限,如Bash(echo:*)Bash(cat:*)Bash(tee:*)Bash(cp:*),这些可能组合成对敏感路径的写入。将它们标记为信息性——它们有合法用途但值得注意。

类别D:过度广泛(中)

模式 危险原因
Bash(*:*)Bash(*) 允许任何命令
Bash(curl:*) 任意网络请求
Bash(wget:*) 任意下载
Bash(pip install:*) 任意包安装
Bash(npm install:*) 任意包安装

步骤3:检查重复项

查找冗余的权限:

  • 完全重复项
  • 更广泛模式已覆盖较窄条目的条目(例如,Bash(git:*)使Bash(git status:*)冗余)

步骤4:报告

按严重性格式化发现:

## 权限审计结果

### 关键(钩子绕过)
- `Bash(git push:*)` — 绕过block-git-push.sh

### 高(破坏性/注入向量)
- `Bash(rm -rf:*)` — 递归删除,无需确认

### 中(过度广泛)
- `Bash(curl:*)` — 任意网络访问

### 信息性
- `Bash(cat:*)` — 可能组合成配置文件写入
- 发现3个重复条目

### 干净
- 已审查45个权限,未发现问题

步骤5:提供修复建议

对于每个发现,提供具体操作:

  • 关键/高:“删除此权限?(是/否)”
  • :“此权限较广泛——您想保留它吗?”
  • 重复项:“删除N个重复条目?”
  • 信息性:仅作记录,无需操作

删除权限时,直接编辑.claude/settings.local.json。显示更改前后的差异。

重要说明

  • 切勿在不向用户显示将删除内容并获得确认的情况下删除权限
  • 用户在本会话中刚刚授予的权限更可能是故意的——记录它们但不要警告
  • 某些广泛权限对于开发工作流程是合法的(例如,Bash(go test:*))——使用判断力
  • 目标是提高意识,而非锁定。标记风险,让用户决定

质量检查清单

运行审计后,验证:

  • [ ] 读取了实际设置文件(未猜测)
  • [ ] 检查了所有四个类别(绕过、破坏性、注入、广泛)
  • [ ] 检查了重复项
  • [ ] 按严重性报告了发现
  • [ ] 为关键/高提供了具体修复操作
  • [ ] 未经确认未删除任何内容