SECURITY_SELF_ASSESSMENT.zh-CN.md
Rama main · réplica de lectura del repositorio original.
# BailingHub Core 安全自评
[English](SECURITY_SELF_ASSESSMENT.md)。本文件与英文版评估同一源码范围、使用同一证据,不是另一次扫描。
本文按 OpenSSF 书面自评结构,说明项目设计、开发实践、威胁与剩余缺口。完成这份文档不等于所有 OSPS 需求通过,不代表独立审计完成,也不代表任何部署实例已经验收。
## 元信息
| 项目 | 自评范围 |
| --- | --- |
| 自评状态 | 该范围的完整书面自评;控制覆盖与整改仍不完整。 |
| 自评日期 | 2026-10-12 |
| 软件 | [BailingHub Core](https://github.com/bailinghub/bailinghub) |
| 源码基线 | `d3073cc3700343f6367b8914b1e6753ec9e9d645`;公开包版本 0.9.0。 |
| 是否提供安全能力 | 是,提供受治理的业务能力接入;不替代业务授权。 |
| 语言与平台 | TypeScript/JavaScript、SQL、Vue、参考 SDK;Node.js 22 与 MySQL。 |
| 依赖清单 | [Core 锁文件](package-lock.json)、[控制台锁文件](web-admin/package-lock.json)、[第三方声明](THIRD_PARTY_NOTICES.md)。锁文件不等于生成的 SPDX/CycloneDX SBOM。 |
| 自评责任人 | [治理文档](GOVERNANCE.md)所列仓库维护者。 |
### 安全文档
[安全政策](SECURITY.md)、[治理](GOVERNANCE.md)、[贡献流程](CONTRIBUTING.md)、[Security Insights](security-insights.yml)、[工具治理](docs/TOOLS.en.md)、[Kernel Host API](docs/KERNEL_HOST_API.md)、[Agent Client 授权](docs/AGENT_CLIENT_QUICKSTART.md)、[原调用只读回执](docs/INVOCATION_RECEIPTS.md)、[模型网关](docs/MODEL_BILLING.md)、[依赖例外政策](https://github.com/bailinghub/bailinghub/blob/d3073cc3700343f6367b8914b1e6753ec9e9d645/security/dependency-audit-exceptions.json)。
## 项目概况
Core 将明确声明的业务能力接入受治理的智能体调用,并保存运行证据。本次范围为这个仓库的运行时、管理控制台、参考 demo、schema、迁移与 SDK 源码。ACC、独立发布的适配器、客户端、官网与独立宿主各有自己的评估范围。
### 背景
自然语言可能选错目标、携带不可信内容或要求超出用户权限的动作。Core 为调用提供执行与身份约束,业务系统仍拥有业务事实和最终权限决定。0.9.0 的可选模型网关负责供应商接入、用量计量和异步结算;使用该网关的推理与工作编排继续由本地客户端或宿主承担。
### 参与方与隔离
- 管理员控制路由、凭据、模型服务和政策,其账号及机器管理凭据权限很高。
- Client 与 Agent Session 取得受限凭据和 scope;浏览器不应获得业务后台 Client Token 或供应商密钥。
- Core、控制台与状态数据库共享一个管理信任域。进程或数据库被攻陷可能暴露凭据与记录,这些组件并不是相互独立的安全隔离边界。
- 业务工具提供方是独立网络服务,需要验证签名,并重新核对所绑定主体的当前业务权限。
- 模型与外部执行器属于外部信任域,输出只能成为受治理执行的输入,不能授予业务权限。
- 可信嵌入宿主可注入允许的人类身份并运行多个 Kernel,必须提供独立数据库 schema 与运行目录。同进程 Kernel 不能防御进程或宿主已经被攻陷的情况。
默认开源部署是一个组织共享一个管理边界。Client、route 或 workspace 不构成多个组织之间的安全隔离;需要这类隔离时,应使用独立管理的部署,或由宿主实现并验证其隔离边界。
### 动作与数据流
1. 验证入口请求、Client 或 Agent Session,绑定允许的主体与 scope,拒绝未经授权的管理或执行访问。
2. 确认已声明工具并交集检查 route、workspace 与 session 约束。Agent Client 直接写操作使用精确操作标识。
3. 应用执行政策、风险和审批要求。审批冻结预期参数,不免除当前业务授权。
4. 对出站业务请求签名并传递行为主体。接收端验证签名,另行检查业务权限。
5. 保存调用、派发、结果、审批与审计记录。回执查询只读取原记录,既不继续执行,也不因为原结果未知而授权替代派发。
6. 模型服务保留原请求标识、用量与价格/倍率快照。生成与结算状态分开;缺失计量保持待结算,不虚构零费用。
敏感资料包括管理及客户端凭据、供应商密钥、对话、工具参数、附件与业务主体上下文。访问和留存由部署方负责;不能默认把审计记录当成匿名、适合公开的资料。
### 目标
保留执行时的身份和 scope;防止审批意图被静默替换;区分回执读取与执行派发;保留可复核状态与证据;必要凭据、政策绑定或迁移完整性无效时拒绝继续。
### 非目标
Core 不裁定用户的法定业务权利,不保证模型正确,不是任意业务 URL 的沙箱,也不能仅凭模型回复证明外部效果发生。分配不同 client/route 不会自动隔离组织。网关套餐不接管宿主编排,不恢复旧轮次限制。本自评不认证独立宿主、适配器或生产服务。
## 自评用途
本文帮助维护者和使用方识别前提与缺口,是维护者分析,不是第三方证明或完整渗透测试。源码基线便于对后续运行时、依赖和政策改动复核。生产部署前,使用方仍需评估自己的凭据、网络、备份、权限、留存和业务集成。
## 安全功能与威胁分析
### 关键组件
| 威胁 | 已有设计或证据 | 剩余责任与限制 |
| --- | --- | --- |
| 伪造或越权业务调用 | 签名、主体绑定、scope 交集与受治理执行;见工具与 Agent Client 文档。 | 业务 API 跳过签名或权限检查会破坏集成边界。 |
| 提示注入或编造工具结果 | 声明暴露、风险、审批与执行证据独立于模型文本。 | 已允许的动作仍可能有害,需要限制工具与核对高风险政策。 |
| 审批复用或批准后更改参数 | 冻结意图和原调用状态;回执读取与执行继续为不同契约。 | 查询不能证明业务系统从未记录的事实,未知效果需要核对。 |
| 嵌入宿主跨实例访问 | 可信实例身份、独立 schema/运行目录、受限身份注入和显式生命周期。 | 宿主路由、凭据、文件权限和进程妥协不由 Core 保证。 |
| 凭据或敏感记录泄露 | 生产 token 要求、凭据职责分离、私有报告与源码分发检查。 | 数据库、管理者、备份与日志需要受保护访问及恰当留存。 |
| 供应链或迁移替换 | 锁文件、版本制品、顺序迁移校验和与显式迁移入口。 | 使用方仍应核实制品与镜像身份,digest 不等于独立审查。 |
| 模型回执丢失或计量不可靠 | 原请求身份、结果查询、生成与结算分离。 | 定价与计量映射需要运营方验证,并发可能产生已记录的超额。 |
### 安全相关配置
保护管理入口,使用源码之外的强根凭据,限制数据库权限和网络出站,并由可信管理员维护 TLS 与代理配置。依据真实业务配置工具 allowlist、主体要求、审批和留存。验证暂停/恢复与备份。公开 demo 或测试配置不等于生产安全配置。
## 标准与符合性
本文不声称 PCI-DSS、ISO、GDPR、CRA 或其他认证。ACC 兼容性属于声明和运行互操作,不是安全认证。首次扫描使用 `osps-baseline-2026-08`,仅采集成熟度 Level 1 项;这个采集选择没有确定最终成熟度或整体符合性。
2026-10-10 的[首次公开扫描](https://github.com/bailinghub/bailinghub/actions/runs/38016927247)共有 65 个需求:20 Passed、1 Failed、3 Needs Review、41 Not Run。流水线绿色只说明采集与保存成功,不意味着全部通过。分支和安全设置需要独立管理员证据。SDK 源码归档触发 `OSPS-QA-05.02` Failed,人工逐文件源码比较可支持复核,但不改变原扫描判定。
## 安全开发实践
### 开发、依赖与发行
贡献遵循贡献流程与维护职责。当前 main 保护要求检查通过、禁止强推与删除,并约束管理员。所记录配置要求的批准 reviewer 数为 0:这是单维护者项目,没有独立双人复核门禁。分支保护不能证明独立审查;仓库也没有覆盖所有贡献者提交的强制签名政策。
[CI](.github/workflows/ci.yml)按配置执行类型、单元/契约、控制台、参考 demo、包/导出边界和依赖检查。Actions 固定完整提交,checkout 不保留凭据。仓库 secret scanning、push protection 与依赖提醒已核启用,不能因此保证没有泄密或漏洞。
[Baseline 工作流](.github/workflows/osps-baseline.yml)使用固定 digest 的 Privateer GitHub scanner v0.31.0 和只读 job token,配置每周及手动触发,制品留存 14 天。已有手动运行;截至 2026-10-12 自评核验仍未观察到首次定时运行。本文件没有触发扫描,不重写原发现以求通过。
发行和镜像流程独立于治理文档维护。Tag、镜像 digest 与迁移清单标识制品,但本文不保证所有制品均签名或来源均经独立核验。新发行仍需正常制品和运行验收。安全自评与 Security Insights 是仓库治理资料,排除在 npm runtime 包和 Docker 构建上下文之外。
### 沟通与生态
普通开发使用仓库 Issues 与 PR,敏感报告使用私有漏洞渠道。安全协调由维护者负责,没有另行记录的独立安全团队或事件热线。发行说明、仓库 Releases 和协调后的公告用于通知用户。与业务 API、ACC、参考 SDK 和独立适配器兼容,不能证明生产采用,也不把这些项目纳入本仓评估。
## 安全问题处理
### 负责任披露
安全政策要求通过 GitHub 私有报告提交受影响版本、部署方式、复现、影响及已去除秘密的日志。维护者目标是三个工作日内确认收到,并在分析后协调修复、披露及报告者署名。最新公开发行线获得安全修复;没有付费悬赏或保证解决时限。
### 事件响应
确认仓库问题后,维护者应保存脱敏复现、确定受影响版本和信任边界、准备修复及回归覆盖,并协调更新指导和披露。部署凭据泄露或入侵由运营方限制访问、轮换/撤销凭据、保护证据,并按需要使用已验证制品与备份恢复。这里描述责任与建议步骤,不是曾经演练成功的证据;本自评尚未建立单独验证的事件手册、响应覆盖或恢复时间目标。
## 附录
### 已知问题与剩余工作
后续源码说明(2026-10-15):下列依赖例外描述保留 0.9.0 自评基线,链接固定到该基线。当前源码已采用[库分发消链及严格零例外审计](docs/DOCX_DEPENDENCY.md);这不改变旧版本评估,也不代表旧部署已升级。
- `sprintf-js` 的 GHSA-hp3w-g68c-fv3c 在已复核 Mammoth CLI 依赖链中仍未修复。精确、源码绑定的[例外政策](https://github.com/bailinghub/bailinghub/blob/d3073cc3700343f6367b8914b1e6753ec9e9d645/security/dependency-audit-exceptions.json)于 2026-11-09 到期,不是漏洞修复,也不允许使用 CLI;新发现、路径/源码消费变化或到期继续阻断。
- 需要用管理员证据和 SDK 归档内容复核对应需求,不替换原扫描结果。
- 41 Not Run 需按适当成熟度确认适用性与证据,既不是 41 个已确认缺陷,也不是自动通过。更广威胁测试、独立复核、生成 SBOM、制品签名覆盖与事件演练仍需补证。
- 观察定时扫描,及时保留将过期的扫描制品。凭据、执行/审批、宿主边界、迁移、依赖或发行实践变化时更新自评。
### 最佳实践
本文不声称 OpenSSF Best Practices 徽章或完整 OSPS 符合性。政策、自动检查与现有证据是起点,任何外部评估都应另行满足真实标准和审核要求。
### 说明性使用场景
1. 客服智能体读取已声明订单并申请高风险售后动作。Core 管理 scope 与审批,订单系统仍负责权限与实际资金效果。
2. 本地智能体丢失工具回复后重连,凭仍有效授权查询原调用;保留未知状态,而不是创建替代写操作。
3. 运营者提供美元额度模型服务,本地宿主编排,Core 保存请求、计量和结算证据,不把缺失用量当成零费用。
这些是设计示例,不是客户部署或采用证据。
### 相关项目与评估限制
[ACC](https://github.com/agent-capability/agent-capability-contract)是独立中立的声明契约。网关、客户端和宿主各自负责实现与运营安全。SDK/demo 只说明集成,不让任意业务后台自动可信。模型质量和本文自评都不能授予业务动作权限。