Skip to content

Latest commit

 

History

History
108 lines (76 loc) · 4.33 KB

SECURITY.md

File metadata and controls

108 lines (76 loc) · 4.33 KB

安全策略

支持范围

项目 支持版本 说明
xmtool(小马远程桌面) v1.0.x WPF / .NET 8,Windows 10+
pmvault(密码管理器) 当前 main Go 1.23+,Windows / Linux / macOS(构建层面)
work-reminder(工作提醒助手) v2.0.x Rust + Tauri 2,Windows 10+
team-planner(团队协作台) 当前 main 纯前端,任意现代浏览器

历史版本不主动打补丁。发现旧版本有严重漏洞时,请直接报告,我们会评估是否需要 提供修复版本。


报告安全漏洞

请不要用公开 Issue 报告安全问题,包括 GitHub Issue、Discussions 和 PR 描述。

请通过 GitHub 的 Security Advisory 私下报告(仓库页面的 Security 标签 → Report a vulnerability)。这样报告内容只有你和维护者可见。

报告中请包含:

项 说明
受影响项目与版本 如 pmvault v1.2.0
漏洞类型 如「解密失败后错误信息泄露本地路径」
复现步骤 尽量给出最小复现路径
影响面 攻击者能拿到什么、能做什么
你的联系方式 便于确认修复后回访

我们的响应承诺:

阶段 时限
确认收到 3 个工作日内
初步评估(是否有效、影响多大) 7 个工作日内
修复发布 视严重程度,严重漏洞优先

若你希望漏洞公开,我们会在修复发布的同日通知你,并在 CHANGELOG.md 中记录该问题。除非你明确要求延迟,我们不会主动披露细节。


我们的安全基线

本项目遵守以下安全要求。违反其中一条都视为缺陷:

凭据与密钥

  • 密码、连接凭据、令牌一律加密后入库,不得明文落盘
  • 加密必须使用认证加密(AES-256-GCM 等),不允许仅加密不校验
  • 密钥派生使用内存硬算法(Argon2id / PBKDF2),参数不低于安全基线
  • 主密钥不落盘,或落盘时使用平台凭据保护(DPAPI / Keychain / Secret Service)
  • 口令与主密钥分离存储,校验口令不得直接等于主密钥

网络

  • 默认不发起任何外部网络请求
  • 确需联网的功能(如远程主机在线状态探测)必须:
    • 由用户显式开启或逐次触发
    • 目标地址不携带任何本地数据
    • 有超时与失败降级,不阻塞主流程
  • 零遥测:不采集使用统计、不上报崩溃、不含任何第三方统计 SDK

输入与输出

  • 所有外部输入(文件、数据库、网络响应、命令行参数)均需校验
  • 拼接到 shell 命令或 SQL 的内容必须参数化,禁止字符串拼接
  • 导出 / 导入功能需防止路径穿越
  • 文件写入采用原子替换(临时文件 + rename),避免中断产生半截文件

错误处理

  • 内部错误细节不得进入用户可见响应体。路径、数据库表名、系统错误码 只写日志,不回显给用户
  • 错误信息面向用户时使用稳定错误码 + 可读文案,便于检索与国际化

本地数据

  • 数据存放在应用目录或用户目录,卸载即删
  • 不写入注册表等隐蔽位置(Windows 下如需注册表项,须在文档中明示)
  • 提供数据导出 / 备份能力,并在文档中说明确切路径

已知的架构性限制

以下是有意为之的设计取舍,不是待修缺陷,但了解它们有助于判断是否适合你的场景:

项目 限制 影响
team-planner 数据存于浏览器本地存储,无服务端 多设备不同步;清浏览器数据即丢失,请用内置导出备份
pmvault 主密钥在内存中,进程结束即失效 每次重启需重新解锁;这是「主密钥不落盘」的代价
work-reminder 数据文件为 JSON,非数据库 任务量级到数千条后读写性能会下降
xmtool 密码用 Windows DPAPI 保护 换机器 / 换用户后无法解密,属预期行为

依赖安全

  • 依赖一律走语言原生的包管理(PackageReference / go.mod / Cargo.toml), 仓库内不放第三方二进制
  • 新增依赖必须在 PR 中说明用途、许可证与维护状态,并登记到 THIRD-PARTY-NOTICES.md
  • 自动化依赖更新(Dependabot)配置的更新在 PR 中逐条评估后合并