# 安全模型 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`