Skip to content

Security: aiyang-zh/zhenyi

Security

SECURITY.md

安全策略(SECURITY)

报告安全漏洞

如果你发现了可能影响安全的问题(例如远程代码执行、权限绕过、信息泄露、DoS 等),请不要直接公开发 Issue。

请通过邮件私下报告:1093993119@qq.com

邮件建议包含:

  • 漏洞描述与影响范围
  • 复现步骤或 PoC(如方便请提供最小复现)
  • 受影响版本/提交信息
  • 可能的修复建议(可选)

处理流程(尽力而为)

  • 我们会尽快确认收到并进行复现与评估。
  • 修复完成后,会在发布说明中注明安全修复(必要时为受影响用户提供升级建议)。

部署与安全使用要点(Hardening)

以下说明默认威胁模型:攻击者可连接对外服务、可访问与业务同权的消息总线或 etcd,除非你在部署层做了隔离。框架层不替代网络 ACL、mTLS、密钥管理。

跨进程消息总线(zbus / NATS 等)

  • zbus.DefaultBus 上的载荷为明文字节,框架不对跨进程 Message 做签名或 MAC;能够向 topic 写入的实体,等价于能向 Actor 注入任意反序列化后的信封(若与你的业务处理逻辑结合,风险由业务评估)。
  • 建议:对消息中间件启用认证与授权、topic 隔离、TLS;仅将总线暴露在内网或零信任网络内。

服务发现(Etcd 等)

  • Discoverer 所读写的注册信息若被篡改,可能导致流量被导向错误实例。建议:etcd 访问控制、TLS、只信最小权限的客户端证书。

JavaScript 引擎(zjs)与 require

  • 默认行为:若 EngineConfig.ScriptDir 为空,require() 会失败(防止无目录沙箱时任意读文件)。生产环境请始终设置 ScriptDir,将可加载脚本限制在固定根目录下。
  • 历史兼容:仅当你明确接受风险时,可设置 EngineConfig.AllowRequireWithoutScriptDir = true(legacy:require 路径按 filepath.Abs 解析,相对路径依赖进程工作目录,且无目录沙箱)。
  • 向脚本暴露的宿主 API 应最小化;脚本超时、内存等仍由 EngineConfig 约束。

RPC 熔断(CallActor

  • 熔断状态按 「当前发送方 Actor 实例 × 目标 actorId」 维护,不是进程级或「目标服务全局」熔断。多源 Actor 同时调用同一下游时,彼此计数不共享;若需要全局限流,应在业务或网关层额外实现。

示例与 TLS

  • 示例客户端可能出现「跳过证书校验」等选项(如 -gmInsecure),仅用于本地/演示;生产环境必须校验证书与主机名。

仓库洁净(贡献者)

  • 勿提交:logs/*.log.env、IDE 元数据、含真实密钥的配置。示例证书若保留在仓库中,须仅为演示用途,并在示例 README 中注明禁止用于生产。

There aren't any published security advisories