Files
CyberStrikeAI/docs/zh-CN/security-model.md
T
2026-07-07 14:04:18 +08:00

181 lines
7.0 KiB
Markdown

# 安全模型
CyberStrikeAI 面向授权安全测试场景,内置命令执行、MCP 工具、WebShell、C2、批量任务和多代理编排等能力。部署者必须把它当作高权限安全工具管理,而不是普通聊天应用。
## 信任边界
主要边界:
- Web 登录用户:可以发起对话、调用工具、修改配置、管理 WebShell/C2/知识库。
- Agent:根据角色、工具列表、HITL 策略调用内置或外部工具。
- MCP 工具:可能访问本机文件、执行命令、调用外部服务或操作目标系统。
- 外部 MCP:由第三方进程或远端服务提供,需单独信任。
- 机器人入口:企业微信、钉钉、飞书等回调入口不走 Web 登录,但有平台验签和速率限制。
如果一个账号可以登录 Web,就应视为拥有该 CyberStrikeAI 实例的操作权限。
## 认证与会话
`auth.password` 是 Web 登录密码。建议:
- 首次部署立即修改默认密码。
- 使用长随机密码,并限制分享范围。
- 将服务放在内网、VPN、堡垒机或反向代理认证后面。
- 生产环境开启 HTTPS,避免明文传输 Cookie。
- 结合反向代理限制来源 IP。
登录态有效期由 `auth.session_duration_hours` 控制。
## 工具执行风险
工具来源包括:
- 内置安全执行工具。
- `tools/` 下的 YAML 命令工具。
- Eino Skills 文件系统工具,如 `read_file``write_file``edit_file``execute`
- 外部 MCP 暴露的工具。
- C2 和 WebShell 相关 MCP 工具。
风险控制建议:
- 只启用当前任务需要的工具。
- 高风险命令工具不要加入全局白名单。
- 给角色绑定最小工具集合。
- 对 destructive、持久化、横向移动、凭证操作保持人工审批。
- 外部 MCP 尽量使用本地可信进程,远端 MCP 必须有认证和网络隔离。
## HITL
HITL 是工具调用前的审批层。常见模式:
- `human`:人工审批。
- `audit_agent`:审计 Agent 自动审批。
- `review_edit`:审计 Agent 可改参后放行。
建议策略:
- 新环境默认人工审批。
- 只把只读、低风险、稳定工具加入白名单。
- 扫描类工具按目标范围配置角色和提示词约束。
- 写入、删除、执行 payload、C2、WebShell、账号改动等操作必须谨慎审批。
详见 [HITL 最佳实践](hitl-best-practices.md)。
## 审计
平台审计由 `audit` 配置控制,记录登录、配置、资源管理等平台操作。它不记录完整对话正文,也不等同于取证日志。
工具执行记录由监控模块维护,保留时间由 `monitor.retention_days` 控制。
建议:
- 开启 `audit.enabled`
- 定期导出审计日志。
- 配置合理保留期。
- 对失败登录、配置变更、C2/WebShell 操作重点复核。
## C2 风险
内置 C2 会启动监听器、生成 payload、接收会话并执行任务。仅在明确授权的靶场、内网演练或红队环境中启用。
建议:
- 不使用时设置 `c2.enabled: false`
- 不在公网暴露 C2 监听端口,除非有明确授权和隔离。
- 对 payload 文件、回连地址、任务输出进行访问控制。
- C2 任务建议走 HITL。
## WebShell 风险
WebShell 管理允许对已登记连接执行命令和文件操作。建议:
- 只添加授权目标。
- 给连接使用清晰名称、标签和备注。
- 不在共享环境保存真实生产 WebShell。
- AI 使用 WebShell 前确认目标和命令。
- 清理失效或不再授权的连接。
## 数据与隐私
本地会保存:
- 对话和消息:`data/conversations.db`
- 知识库索引:`data/knowledge.db`
- WebShell、C2、漏洞、项目、任务等业务数据。
- 上传附件:`chat_uploads/`
建议:
- 限制文件权限。
- 备份加密。
- 不上传无授权的敏感数据。
- 清理不再需要的会话、附件、C2 输出和审计日志。
## 生产基线
最低建议:
- 强密码 + HTTPS + 内网访问。
- `audit.enabled: true`
- `mcp.auth_header_value` 设置随机值。
- 不需要时关闭 `c2.enabled`
- 外部 MCP 最小化启用。
- 高风险工具不进白名单。
- 定期备份和更新。
## 真实威胁模型
| 威胁 | 攻击路径 | 影响 | 防护点 |
| --- | --- | --- | --- |
| Web 密码泄露 | 登录管理面,调用终端/WebShell/C2 | 完整接管平台能力 | 强密码、HTTPS、内网、反向代理认证、审计 |
| Prompt Injection | 目标页面或文档诱导 Agent 调高权限工具 | 越权执行工具或泄露数据 | 角色边界、HITL、工具最小化、知识库来源标注 |
| 外部 MCP 恶意 | MCP 服务返回误导描述或执行副作用 | 本机或目标系统受影响 | 只接入可信 MCP、独立运行用户、网络隔离 |
| 工具 YAML 被篡改 | 改写命令模板或参数 | Agent 调用时执行恶意命令 | 文件权限、代码审查、工具白名单 |
| C2 滥用 | 生成 payload 或下发任务到非授权目标 | 法律和业务风险 | 默认关闭、审批、事件保留、网络隔离 |
| WebShell 误操作 | AI 或用户在生产目标执行破坏命令 | 业务中断或数据损坏 | 连接命名、人工确认、只读优先、删除过期连接 |
| 数据库泄露 | 复制 `data/*.db` 或上传目录 | 对话、目标、漏洞、连接信息泄露 | 文件权限、加密备份、最小保留 |
## 授权边界写法
每个高风险角色都应把授权边界写进提示词,而不是只依赖用户口头说明。示例:
```text
你只能在用户明确给出的目标范围内行动。若需要执行写入、删除、爆破、持久化、凭证访问、C2、WebShell 或横向移动相关操作,必须先说明目的、影响、目标和回滚方式,并等待 HITL 审批。
```
这段话不能代替技术控制,但能降低 Agent 在模糊任务中扩张行为边界的概率。
## HITL 不是万能保险
HITL 的风险在于审批者看到的是“工具名 + 参数 + 上下文摘要”,不是完整现实世界影响。下面几类情况要特别保守:
- 参数看似只读,但工具本身会触发大量请求或写缓存。
- 命令通过 `bash -c`、脚本、base64 包装隐藏真实动作。
- 外部 MCP 工具描述不可信。
- WebShell 目标名称模糊,无法确认是否生产环境。
- C2 payload 生成和分发链路不在平台内。
审计 Agent 适合筛掉普通低风险请求,不适合替代人类批准破坏性动作。
## 数据最小化原则
不要把这些内容长期留在平台里:
- 真实客户凭证。
- 未脱敏报告。
- 生产数据库导出。
- 长期有效 Cookie。
- 无关目标的扫描输出。
- 已结束项目的 WebShell/C2 会话。
建议按项目结束流程清理:附件、WebShell 连接、C2 payload、临时 workspace、长输出工具记录。
## 源码锚点
- 认证会话:`internal/security/auth_manager.go`
- 认证中间件:`internal/security/auth_middleware.go`
- 限流:`internal/security/ratelimit.go`
- Shell 执行:`internal/security/executor.go`
- HITL 执行:`internal/handler/hitl_execution.go`
- 审计服务:`internal/audit/service.go`