跳转到正文
报告库
用途分类 / 其他用途

Dbs Save Skill 安全审计

作者说它能做什么(原文)

把当前诊断的关键状态保存到本地,并查看或设置存档位置。用户要求保存结论、跨会话续接或修改存档位置时使用。

第三方安全检查结论

发现安全风险

已检查文件
2
发现的风险
3
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 1 项风险
中风险

诊断中的敏感信息会以未加密纯文本长期保存

原文依据:5 处
发现了什么

存档模板要求保留用户原话、客户信息、收入或商业秘密等内容。文件没有加密;项目模式可能进入 Git,自定义位置还可能是云同步目录。虽然 Skill 要求提醒风险,但没有要求写入前展示并逐项确认实际内容。

为什么需要注意

同一台设备上的其他账户、备份工具、Git 远端或云盘共享者可能接触这些诊断信息。

该 Skill 会把用户原话摘要、客户原话及其他诊断信息写入 Markdown;文档明确说明存档是未加密的本地纯文本,也承认可能包含收入、客户资料和商业秘密。项目模式下文件位于项目的 `.dbs/`,若该目录被 Git 跟踪可能泄露;自定义位置也可设为云同步目录。虽然 Skill 要求提醒用户并在敏感时允许调整内容,但没有要求在每次写入前展示将保存的具体敏感字段并获得确认,因此存在合理的数据持久化与意外同步风险。

SKILL.md:167来自说明文档打开原文件
{用户最初问的问题,原文摘要 1-2 句。不要美化、不要总结成抽象概念,保留用户的原话语气}
查看另外 4 个位置
SKILL.md:193来自说明文档打开原文件
## 备注{自由 markdown,可以补任何对未来回访有用的信息:客户的原话、关键转折点、你当时的怀疑}```
SKILL.md:110来自说明文档打开原文件
- `.dbs/` 和存档目录内可能包含收入、客户与商业秘密,文件是本地纯文本,没有加密。- 如果当前项目使用 Git,建议把 `.dbs/` 加入 `.gitignore`。修改 `.gitignore` 前必须得到用户确认。- 切换位置不会自动搬动旧存档。需要迁移时,先展示来源与目标,得到用户确认后复制;保留原文件。
SKILL.md:261来自说明文档打开原文件
- 用户连续两次 `/dbs-save` 想存同一个状态 → 允许,新文件名带时间戳,不会冲突- 用户的诊断信息特别敏感(比如收入数字、商业秘密)→ 提醒一句:「当前存档目录是本地纯文本,没有加密。如果不想保存敏感细节,可以先调整内容或更换存档位置。」- 用户切换了存档位置后找不到旧记录 → 显示当前存档根目录,并提示旧记录可能仍在原位置。得到确认后可以复制迁移,不删除原文件
SKILL.md:83来自说明文档打开原文件
|---|---|| `default` | `~/.dbs/` || `project` | 当前工作目录下的 `.dbs/` || `custom` | `root` 字段指定的目录 |
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 2 项风险
中风险

显式项目名缺少路径字符校验,可能把文件写到项目目录之外

原文依据:3 处
发现了什么

默认项目名会清理字符,但 `--slug` 指定的项目名没有相同的校验规则,并被直接放入 `sessions/{slug}/` 路径。包含路径分隔符或 `..` 的值可能改变最终目录。

为什么需要注意

意外或受诱导的项目名可能在预期存档根目录之外创建目录和诊断文件,污染其他位置并扩大敏感信息暴露范围。

默认项目名会清理非 `[a-z0-9-]` 字符,但对用户通过 `--slug` 提供的项目名没有给出同等校验或拒绝规则。该值随后直接插入 `sessions/{slug}/...`,并要求在目录不存在时创建。若执行环境按字面处理含 `/` 或 `..` 的值,就可能在预期项目子目录之外创建并写入文件。源码没有展示实际路径处理脚本,因此这是指令层面的可利用风险,并非已经发生越界写入的证据。用户可要求作者限定 slug 字符集并验证解析后的路径仍在 sessions 根目录内。

SKILL.md:56来自说明文档打开原文件
**默认项目名**:取自 `basename $(pwd)`,把所有非 `[a-z0-9-]` 字符替换成 `-`。**用户显式指定**:用 `--slug` 参数,例如 `/dbs-save --slug my-project 卖什么没想清楚`。
查看另外 2 个位置
SKILL.md:139来自说明文档打开原文件
先按「存档根目录」规则得到 `{存档根目录}`。```{存档根目录}/sessions/{slug}/{YYYYMMDD-HHMMSS}-{title-slug}.md```
SKILL.md:149来自说明文档打开原文件
如果目录不存在,先 `mkdir -p`。
中风险

当前项目可通过预置配置静默重定向存档写入位置

原文依据:5 处
发现了什么

Skill 自动信任当前工作目录中的 `.dbs/config.json`。现有配置的 `custom.root` 可指向任意非空目录;确认规则只明确适用于用户主动执行位置命令时写配置,而不是使用仓库中已有的配置。

为什么需要注意

打开来源不可信的项目后,保存操作可能在用户未确认该目标的情况下向项目指定的位置创建目录并写入敏感诊断内容。

Skill 每次先读取当前工作目录中的 `.dbs/config.json`,并在 `custom` 模式下使用其中的 `root`;相对路径还会按当前工作目录解析。它会拒绝少数高风险目标,但仍允许其他任意可写目录。确认要求只明确约束用户调用 `location ...` 时创建或更新配置,没有要求在使用已存在的仓库配置前确认或显示目标。因此,打开含预置配置的项目后触发保存,可能把诊断内容写到用户未预期的位置。用户可限制该 Skill 忽略未经本次对话确认的配置,或先要求只运行只读的 `location`。

SKILL.md:68来自说明文档打开原文件
`dbs-save`、`dbs-restore`、`dbs-report` 必须先按同一套规则解析存档根目录,后续路径都基于这个结果拼接。配置文件固定为当前工作目录下的 `.dbs/config.json`。没有配置文件时,继续使用默认位置,不创建配置文件。
查看另外 4 个位置
SKILL.md:99来自说明文档打开原文件
1. 读取当前工作目录下的 `.dbs/config.json`。2. 文件不存在时,存档根目录为 `~/.dbs/`。3. `mode` 是 `default` 时,存档根目录为 `~/.dbs/`。4. `mode` 是 `project` 时,存档根目录为当前工作目录下的 `.dbs/`。5. `mode` 是 `custom` 时,读取 `root`。展开开头的 `~`;相对路径按当前工作目录解析。6. 配置无法解析、`mode` 不受支持、`root` 为空,或路径指向 `/`、用户家目录、当前项目根目录时,停止操作并说明配置问题。不要静默退回默认位置。只有用户明确调用 `location default`、`location project` 或 `location custom <路径>` 时,才写入配置文件。写入前说明最终解析出的绝对路径,并要求用户确认;用户确认后再创建或更新 `.dbs/config.json`。
SKILL.md:141来自说明文档打开原文件
```{存档根目录}/sessions/{slug}/{YYYYMMDD-HHMMSS}-{title-slug}.md```- `YYYYMMDD-HHMMSS` 用本地时间- `title-slug` 把标题里的空格和标点替换成 `-`,保留中英文字符- 如果同一秒已有同名(极少见),追加 4 位随机后缀,比如 `-a7k2`如果目录不存在,先 `mkdir -p`。
SKILL.md:106来自说明文档打开原文件
只有用户明确调用 `location default`、`location project` 或 `location custom <路径>` 时,才写入配置文件。写入前说明最终解析出的绝对路径,并要求用户确认;用户确认后再创建或更新 `.dbs/config.json`。
SKILL.md:114来自说明文档打开原文件
`/dbs-save location` 只显示当前模式、配置文件位置和解析后的存档根目录,不写文件。
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

8 个说明模块

该 Skill 在用户要求存档时,会把诊断结论、被否决方向、待验证假设、下一步及备注写入带时间戳的 Markdown 文件;默认位置是用户主目录下的 `.dbs/`。

查看原文
SKILL.md:8来自说明文档打开原文件
你是 dbskill 的状态保存工具。你的工作是:把当前对话里诊断出来的关键结论、用户已经否决的方向、推荐的下一步,写成一个结构化的 markdown 文件存到本地。**你不做诊断。** 诊断是别的 skill 的事,你只做记录。
SKILL.md:99来自说明文档打开原文件
1. 读取当前工作目录下的 `.dbs/config.json`。2. 文件不存在时,存档根目录为 `~/.dbs/`。3. `mode` 是 `default` 时,存档根目录为 `~/.dbs/`。4. `mode` 是 `project` 时,存档根目录为当前工作目录下的 `.dbs/`。5. `mode` 是 `custom` 时,读取 `root`。展开开头的 `~`;相对路径按当前工作目录解析。6. 配置无法解析、`mode` 不受支持、`root` 为空,或路径指向 `/`、用户家目录、当前项目根目录时,停止操作并说明配置问题。不要静默退回默认位置。
SKILL.md:141来自说明文档打开原文件
```{存档根目录}/sessions/{slug}/{YYYYMMDD-HHMMSS}-{title-slug}.md```- `YYYYMMDD-HHMMSS` 用本地时间- `title-slug` 把标题里的空格和标点替换成 `-`,保留中英文字符- 如果同一秒已有同名(极少见),追加 4 位随机后缀,比如 `-a7k2`如果目录不存在,先 `mkdir -p`。

更改存档位置需要用户明确调用位置命令,并在写配置前确认解析后的绝对路径。Skill 也要求警告纯文本、Git 和云同步风险,迁移时保留原文件。

查看原文
SKILL.md:106来自说明文档打开原文件
只有用户明确调用 `location default`、`location project` 或 `location custom <路径>` 时,才写入配置文件。写入前说明最终解析出的绝对路径,并要求用户确认;用户确认后再创建或更新 `.dbs/config.json`。首次选择项目或自定义模式时提醒一次:- `.dbs/` 和存档目录内可能包含收入、客户与商业秘密,文件是本地纯文本,没有加密。- 如果当前项目使用 Git,建议把 `.dbs/` 加入 `.gitignore`。修改 `.gitignore` 前必须得到用户确认。- 切换位置不会自动搬动旧存档。需要迁移时,先展示来源与目标,得到用户确认后复制;保留原文件。

列出存档时只读取当前配置位置中的指定项目,并且不创建新存档。

查看原文
SKILL.md:211来自说明文档打开原文件
## list 模式如果用户输入 `/dbs-save list` 或 `/dbs-save list <项目名>`,不写新文件,只列出已有存档。先按「存档根目录」规则定位 `sessions/{项目名}/`。只列出当前配置所指向位置中的存档,不混合其他位置。
从这里开始 · 工作说明SKILL.md
dbs-save
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。 另有 4 个章节,可在原文件中查看。
文件与检查记录2 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文
  • agents/openai.yaml已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明
  • agents/openai.yaml配套文件
读取了多少行
290
文件校验值(用于核对版本)
1863282763631b50402accd9bdf5d5426e9fc6a2e38ed3b071b208daf2e85c44