Skip to content

Security: slow-stack/baleen

Security

SECURITY.md

安全策略

报漏洞

不要开公开 issue。 用 GitHub 的私密报告通道:仓库页 → Security → Report a vulnerability。

请带上:受影响的版本(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,0.x 阶段不保证向后兼容——升级前看 CHANGELOG(如有)或提交记录。

There aren't any published security advisories