mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-10 14:28:43 +02:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,180 @@
|
||||
# 安全模型
|
||||
|
||||
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`
|
||||
Reference in New Issue
Block a user