# 安全策略 ## 报漏洞 **不要开公开 issue。** 用 GitHub 的私密报告通道:仓库页 → Security → [Report a vulnerability](https://github.com/slow-stack/baleen/security/advisories/new)。 请带上:受影响的版本(`package.json` 的 version 或提交哈希)、能复现的最小步骤、你判断的影响面。三个工作日内给第一次回复;修好之前不在公开渠道描述细节。 ## 这个插件会碰到的敏感面 它不是纯读的工具——它替你持有凭据、跑网络请求、开 HTTP 路由。三块边界值得单独说清。 ### 1. B 站 cookie 字幕增强通道需要登录态 cookie。设计上: - 只存在插件家目录的 `credentials/bili-cookie.txt`(`chmod 600`),**不进仓库**(`.gitignore` 已挡 `credentials/`)、**不进日志**、**不进任何汇报**。 - 只用于读字幕接口,不注册任何写操作(评论 / 私信 / 点赞 / 关注 / 发布 / 收藏到平台,一个都没有)。 - 没有这个文件时通道整体降级为「只取简介」,不报错、不阻断其它源。 如果你怀疑 cookie 泄漏:B 站网页端退出登录即令其失效,然后重新导出一份覆盖旧文件。**不要**把 cookie 贴进 issue、贴进聊天、贴进提交信息。 ### 2. 网络与外部命令 - 摄取只发 GET(RSS/Atom、B 站只读接口)。YouTube 通道走本机 `yt-dlp` 子进程,参数由适配器拼装,不接受偏好文件里的任意命令。 - 偏好文件(`preference.yaml`)是**纯数据**,不是脚本。它决定抓哪些源、什么关键词、什么时候抓——但不会被当作 shell 或 eval 的输入。 - 判断轮(LLM 那一步)只拿到**只读**工具面:`baleen_query / read_item / candidates / run_status / subtitle`。唯一的写工具 `save_verdicts` 只写本插件自己的两张表(`items` / `digests`),tier 参数是三档枚举锁死,不接受任意 SQL、不接受任意路径。 ### 3. 本地 HTTP 路由 - 面板数据走宿主的 `/api/dsh-baleen` 前缀,**只读**(GET)。收藏、归档、清库这些改动全部走宿主侧的面板动作,不是 agent 工具,也没有平台接口。 - 路由不读请求体里的任意路径:清库/归档清理这类动作只作用于插件自己的 sqlite 文件。 ## 不在威胁模型内的 - **本机已被攻破**:能读你用户目录的攻击者可以直接读 `baleen.sqlite` 和 cookie 文件,插件无法阻止。 - **上游平台风控**:B 站接口带风控指纹,被判定异常可能导致账号受限。插件做了最小化请求(限速、按 `interval_min` 节流、不并发轰炸),但这不构成对平台条款的豁免——用不用、用哪个账号,你自己判断。 - **第三方内容本身**:抓回来的正文是**不可信数据**。插件在把它交给判断轮时按数据处理,但内容里的指令性文字永远不该被当成命令执行。 ## 支持范围 只对 `main` 上的最新提交提供修复。发布到 npm 的版本按 [SemVer](https://semver.org/lang/zh-CN/),0.x 阶段不保证向后兼容——升级前看 `CHANGELOG`(如有)或提交记录。