先说背景。我在办公室给本地 Agent 接了几个只读工具:读指定文件夹、搜资料库、列日程。目标很朴素——帮同事汇总项目进展,不要让它改任何东西。
上周四,设计组的小薇私下找我,脸色不太好看:“它总结项目进展的时候,把我桌面上一个还没给领导看的草稿标题也写进去了。那份东西根本不该被它看见。”
我心里咯噔一下。按理说工具只能读我划定的“项目共享目录”。桌面不在名单里。
一、先复现,不猜
我让小薇把那次对话时间点告诉我,翻 Agent 调用日志。清楚写着:调用了“读文件”,路径却指向她用户目录下的桌面。不是资料库,是桌面。
再查工具配置,问题在“路径允许规则”写得太宽:当时图省事,写了“允许读用户目录下若干子路径”,正则稍松,桌面被一并放行了。演示那天我用自己账号试过,桌面空空如也,没爆出来;小薇桌面堆着草稿,一次就中招。
小薇问:“那它是不是能读我所有文件?我还有合同扫描件在下载目录。”我说:“按现在的规则,比我们以为的宽。先收口,再谈别的。下载目录也一并检查。”
这事也提醒我:权限事故往往出在“演示环境太干净”。
二、怎么收的
我们做了四步,都不神秘:
- 允许路径改成白名单:只留项目共享盘和资料库导出目录,去掉用户主目录通配。
- 工具层加“路径规范化 + 前缀校验”,相对路径、
..跳转、符号链接指到白名单外,一律拒绝。 - 写操作本来就没开;读操作每次在日志里打完整路径,方便事后审计。
- 用一份“故意放在桌面的诱饵文件”做回归:改完后再问同样的总结题,日志里不应再出现桌面路径。
另外把 Agent 的系统说明改成一句人话:只能读共享项目目录;看不到就说看不到,不许猜测桌面上有什么。
三、验收
诱饵文件测了十次,零次命中桌面。小薇又用真实项目问题问了几轮,总结里只出现共享目录里的周报和纪要。她说:“我要的是助手,不是隐形同事翻我桌面。”
我还让另一位同事用他的账号再跑一遍诱饵测试,避免“只在我环境没问题”。同样干净。
四、留给后来的人
- 工具权限按目录白名单,不按“用户目录下随便逛”
- 改权限后用诱饵文件回归,别只看功能演示欢不欢
- 日志里要有路径,出事才能定位
- 演示账号桌面空,不代表真实同事桌面空
还有一件事后补的:白名单变更要留变更记录(谁改、何时、允许哪些前缀)。不然过两周又有人图省事加回“用户目录”,事故会重演。小薇建议把诱饵测试写进每次改权限的检查清单,我照做了。
你们本地 Agent 有没有遇到过“读到不该读的路径”?最后怎么收的白名单?欢迎评论区交流。
一些部署备忘我记在 evafang.com ,写得比较散,有兴趣可以看看。