# 安全策略

regolith 是进程内嵌入式键值引擎，代码全部为 MoonBit 且零 FFI。本文件
说明支持版本、报告渠道，以及引擎与"安全"相关的事实边界——**诚实优先于
承诺**，本项目的立场与 docs/durability.md 一致：写出来的都经得起核验。

## 支持版本

仅最新发布版本（mooncakes.io 上的最新版，见
[CHANGELOG.md](CHANGELOG.md)）接受安全修复。旧版本请先升级复现。

## 威胁模型与边界

引擎的安全相关面集中在**数据完整性**，而不是网络/进程边界：

- **在范围内**：存储格式缺陷导致静默错数据（CRC 漏检、语义损坏放行）、
  恢复算法缺陷导致已确认写入丢失、损坏文件引发未定义行为（越界读写、
  崩溃之外的错乱状态）。
- **在范围外**：依赖项（moonbitlang/x、core、moon 工具链）自身的漏洞；
  恶意进程直接改文件权限/内容后再要求引擎"识别投毒"——CRC 检测的是
  意外损坏，不是对抗篡改（无密钥，攻击者可重算校验和）。
- **已知限制（如实的工程取舍）**：数据库文件属不受信任输入，引擎逐层
  校验格式（varint 越界、块内偏移、键序）并拒绝损坏文件，但解析深度
  攻击（精巧构造文件引发超大分配/长时间解析）未做专门加固——嵌入场景
  假定数据目录由应用自己管理。掉电级持久性边界见
  [docs/durability.md](docs/durability.md)。

## 报告渠道

发现疑似安全问题（尤其静默错数据、已确认写入丢失、损坏文件引发崩溃
以外的异常行为）时：

1. 优先用 GitHub 私有漏洞报告（Security → Report a vulnerability），
   附上最小复现（构造文件/操作序列）与版本号；
2. 或发邮件至仓库 owner（GitHub 个人页可见），主题注明
   `[regolith security]`。

请在公开 issue 前先行私下报告。确认后按常规贡献流程修复（见
CONTRIBUTING.md），修复随 CHANGELOG 记录并在 90 天内公开细节。

## 处置偏好

- 数据完整性问题按最高优先级处理；修复须附带回归测试并同步
  docs/format.md 与 docs/durability.md 的相关声明。
- 不承诺对「范围外」项（依赖漏洞、对抗篡改）出修复，但会如实
  在 issue 中说明并转交对应上游。
