security-review
核对日期:2026-05-13。
1. 系统信任边界
需要明确:
- 哪些输入来自不可信用户。
- 哪些文档可能被污染。
- 哪些工具具备读写或外发能力。
- 哪些日志可能包含敏感信息。
2. 数据分类
| 数据类型 | 示例 | 风险等级 | 处理方式 |
|---|---|---|---|
| 公开数据 | 产品说明、公开文档 | 低 | 可进入 prompt |
| 内部数据 | 内部流程、代码片段 | 中 | 权限过滤、日志脱敏 |
| 敏感数据 | 密钥、个人信息、客户数据 | 高 | 默认不入模、不落日志 |
3. Prompt Injection 防护
| 场景 | 风险 | 控制方式 |
|---|---|---|
| 用户直接输入恶意指令 | 覆盖系统规则 | 系统指令隔离、输出校验 |
| RAG 文档含恶意指令 | 间接注入 | 文档作为数据而非指令、引用隔离 |
| 工具结果包含指令 | 工具污染上下文 | 工具输出标注来源、限制可执行动作 |
4. 工具权限
| 工具 | 权限级别 | 默认行为 | 高风险动作 |
|---|---|---|---|
| search_docs | 只读 | 允许 | 无 |
| read_file | 只读 | 允许受限路径 | 读取敏感路径 |
| run_query | 只读 | dry-run / limit | 大表扫描、敏感字段 |
| send_message | 外发 | 默认禁用 | 未经确认外发 |
| write_action | 写入 | 需要审批 | 修改生产数据 |
5. 人工确认
以下动作必须人工确认:
- 外发消息。
- 写入业务系统。
- 执行不可逆操作。
- 访问高敏数据。
- 使用低置信度结果影响真实用户。
6. 日志和缓存
检查项:
- 日志不记录密钥、token、密码。
- 用户输入进入日志前做脱敏或摘要化。
- 模型输出中的敏感信息不会进入公开样例。
- 缓存按用户、权限和数据版本隔离。
- 评测样例使用合成数据或脱敏数据。
7. 事故响应
| 事故 | 发现方式 | 立即动作 | 后续修复 |
|---|---|---|---|
| 错误回答 | 用户反馈、eval 回归 | 标记失败样例 | 修复 prompt / 检索 / 工具 |
| 数据泄漏 | 日志审计、安全告警 | 停用功能、清理日志 | 增加脱敏和权限过滤 |
| 工具越权 | trace 检查 | 关闭工具 | 重设权限和审批 |
| 成本异常 | 成本告警 | 限流、降级 | 优化上下文和缓存 |
8. 发布结论
选择一种结论:
- 可灰度:风险已被控制,剩余风险可接受。
- 仅内部演示:仍需人工保护,不对真实用户开放。
- 不可发布:存在数据、权限或安全阻塞项。