Skip to content

Security: luck2026228/DeclineLens

SECURITY.md

安全策略

支持的版本

版本 是否仍在修
3.1.x ✅ 是
3.0.x ⚠️ 只修高危
2.x 及更早 ❌ 否,请升级

版本号在扩展的 manifest.json 里,油猴版在脚本头部的 @version。面板底部也会显示。

这个项目的威胁模型

先说清楚边界,这样你能判断自己发现的问题算不算安全问题。

它做什么

  • 在页面里包装 window.fetch只读取 URL 匹配 PAY_URL 的那些响应体
  • 从响应体里取 11 个诊断字段,存进本地存储(扩展是 chrome.storage.local,油猴是 GM_setValue
  • 把这些字段渲染成一个浮动面板

它绝不做什么

  • 不发任何网络请求 —— 没有更新检查、没有统计、没有错误上报。这是硬承诺,见 PRIVACY.md
  • 不存原始响应体 —— 只存那 11 个白名单字段
  • 不修改请求或响应 —— 它是只读旁听者,不会替你重试、不会改金额、不会拦截
  • 不碰 Cookie、localStorage、DOM 表单值 —— 卡号、CVV、持卡人姓名从来没进过它的作用域

真正的攻击面在哪

这个工具最要命的一点,值得单独讲:

记录会存下来,并在之后打开的每一个页面上重新渲染。

也就是说,一个恶意站点如果能让工具存下一条含 <img src=x onerror=...> 的记录,这段代码会在你下一次打开 checkout.stripe.com 时,在那个页面的上下文里执行。这是一条跨站点、跨时间的注入路径。

防线是 esc():所有插进 HTML 的字段一律转义,自检第 4 节专门喂恶意 payload 验这件事。任何绕过 esc() 的写法都是高危漏洞,请务必报告。

其他值得关注的方向:

方向 为什么危险
PAY_URL 正则被绕过或范围过宽 这行正则就是隐私边界,读得比它宽 = 读了不该读的响应体
两个版本的 PAY_URL 不一致 意味着某一版的读取范围悄悄大于另一版(自检第 5 节逐字比对)
存储里出现白名单之外的字段 说明有隐私字段泄漏进了本地记录
Shadow DOM 逃逸 面板样式或脚本影响到宿主页面
权限扩大 清单里出现 tabs / webRequest / 多余 host_permissions

不算安全问题的情况

  • 面板显示了拒付信息 —— 这是它的功能。信息本来就在响应里,只是页面不给你看
  • 恶意网站能看到浮球 —— 面板在 Shadow DOM 里,宿主页面读不到内容,但知道你装了这个工具。这一点我们接受,见 PRIVACY.md
  • 本机上有权限的人能读你的记录 —— 数据在本地存储里,明文。能读浏览器配置目录的人本来就能读你所有 Cookie,这不是本项目能解决的层级
  • CSP 挡住了注入 —— 这是站点的安全策略在起作用,属于正常现象,换油猴版即可

怎么报告

发现漏洞请不要开公开 issue。

按优先顺序选一个:

  1. GitHub 私密报告(推荐) —— 打开仓库的 Security → Report a vulnerability。 全程私密,修好之前外人看不到。
  2. 邮件 —— luck2026228@users.noreply.github.com,标题带上 [security]

报告里请包含

  • 受影响的版本和形态(插件版 / 油猴版 / 两个都是)
  • 浏览器和版本
  • 复现步骤,越具体越好
  • 你认为的影响面(能读到什么?能执行代码吗?在哪个站点的上下文里?)
  • 有 PoC 最好,但请用 Stripe 官方测试卡号构造,不要用真卡

你会得到什么

时间 我会做什么
3 天内 确认收到
7 天内 给出初步判断:是漏洞 / 不是 / 需要更多信息
确认是漏洞后 30 天内 发出修复版本
修复发布时 在 CHANGELOG 和 Release 里致谢(你不想具名的话说一声)

这是个人维护的小项目,没有赏金,但每一条报告我都会认真看

装它之前你该知道的

  • 验一下你装的是不是原版。 油猴版的唯一官方地址是 https://github.com/luck2026228/DeclineLens/raw/main/DeclineLens.user.js。 从别处拿到的副本请自己比对内容 —— 这是个纯文本单文件,肉眼可读。
  • 扩展版请从 Releases 下载。 每个 zip 里的文件都能在仓库里逐字对上。
  • 零依赖是刻意的。 build.py 只用 Python 标准库,test.js 只用 Node 标准库,运行时不加载任何第三方代码 —— 这个项目没有供应链可以被投毒。

There aren't any published security advisories