给本地磁盘做一次全盘扫描,结果被 Codex 翻出了所有隐藏的凭据
.env 文件或者一些临时备份的 config.json 随手丢在项目根目录甚至用户目录下,觉得只要不提交到 Git 就安全。但这次实测证明,如果给 AI Agent 足够的权限,它扫描文件的能力比你想象中要强得多。我这次复现的场景是给 Codex 开放了较大的文件读取权限,结果它在检索上下文的时候,直接把我的 AWS Secret Key 和几个数据库连接字符串给“抓”出来了。更绝的是 Grith 的处理逻辑,它在识别到敏感信息后直接执行了冻结操作。
这里分享一下我踩坑后的排查路径和一个简单的凭据隔离方案,建议大家在部署 AI Agent 工作流之前先自检一遍。
凭据泄露的触发链路
AI Agent 在执行复杂任务时,为了寻找相关配置,会启动递归搜索。如果你的项目结构是这样的:/home/user/projects/my-app//home/user/.aws/credentials (这里存了密钥)
当 Codex 在处理 my-app 的 Bug 时,如果 Prompt 中包含类似“检查环境配置”或“查找相关认证信息”的指令,它可能会尝试向上级目录检索。一旦匹配到特定的关键词(如 AKIA 开头的 AWS 密钥),它就会将其加载到上下文窗口中。
避坑指南:如何正确隔离 AI 访问权限
为了防止 AI 像扫描仪一样把你的硬盘翻个底朝天,建议采用以下三种方案:
1. 使用 .gitignore 的增强版:.aiignore
虽然很多 AI 工具不原生支持 .aiignore,但你可以通过在启动命令中限制路径来实现。如果你是用 Docker 部署的,绝对不要挂载整个 /home 目录,只挂载当前项目的 src 文件夹。
2. 环境变量动态注入
不要把密钥写在文件里,改用系统环境变量。实测发现,AI 访问 process.env 的频率远低于它扫描 .txt 或 .json 文件的频率。
3. 编写一个简单的凭据检查脚本
在给 AI Agent 授权前,可以用这个 Bash 脚本快速扫描一下当前目录下是否有明文密钥,防止被 AI “捡漏”:
# 快速扫描当前目录下是否包含疑似 AWS 密钥或 API Key 的文件
grep -rE "AKIA[0-9A-Z]{16}|(api_key|secret|password)\s*=\s*['\"].*['\"]" . --exclude-dir={.git,node_modules}性能与安全权衡
在这次实操中,我记录了 Codex 扫描磁盘的时间开销。在 500MB 的项目源码文件夹中,它定位到隐藏凭据的时间仅用了 1.4 秒。这说明 AI 对模式匹配的效率极高。
如果你们在构建 AI Agent 工作流,千万不要给它 sudo 权限或者根目录读取权限。最稳妥的部署方式是:
- 限定路径: 仅允许访问
/app/workspace - 只读挂载: 配置文件采用 Read-Only 模式
- 掩码处理: 在将日志传给 AI 之前,用简单的正则把 Key 的中间 8 位替换成
****
这种“最小权限原则”虽然在刚开始配置时麻烦一点,但总比被 Grith 冻结所有账号然后花半天时间去重置密钥要高效得多。