Vue 2 EOL 之后还在跑生产?这个开源安全分支已修主流 CVE,一行依赖即可接入

一、你正在面对的问题

Vue 2 已于 2023-12-31 EOL,最终版本 2.7.16。这意味着:

  • 官方不再合并任何 PR,包括安全漏洞
  • 新披露的 CVE-2024-9506CVE-2024-6783 等永远不会在上游被修;
  • 公司内 SCA 扫描会一直亮红,合规上线越来越难过。

但大多数中后台 Vue 2 项目跑了五六年,组件库、Vuex、路由全是 Vue 2 生态------整体升 Vue 3 的 ROI 极低,不是不想升,是升不动。

夹在中间,最常见的三种做法都不舒服:

你现在的做法 痛点
patch-package / pnpm patch 自己贴 每个仓库贴一份,难追溯,新人接手懵
内网发 @xxx/vue 业务方所有 import Vue from 'vue' 都得改
锁版本忽略告警 合规过不去,审计追责

二、这个分支直接解决了什么

一句话:只修 CVE,不改任何 API,长期维护。

当前版本已经修掉的漏洞:

CVE 类型 影响
CVE-2024-9506 ReDoS(正则灾难性回溯) 模板编译器在恶意输入下被卡死
CVE-2024-6783 XSS / 原型污染 codegen 出来的代码可被注入
多项传递依赖 CVE 多种 构建链拉警报

pnpm audit 在装上这个分支之后只剩 1 个 low(elliptic,上游本身没修,整个 npm 生态都消不掉),红灯转绿

对你意味着:

  • 合规扫描不用再做"例外申报";
  • 不需要改任何业务代码、不需要测全量回归;
  • 跟着 tag 走,每次有新 CVE 修复就升一个版本号即可。

三、接入有多简单

package.jsonvue 替换成 git tag,仅此一步

jsonc 复制代码
{
  "dependencies": {
    "vue": "git+https://github.com/joygqz/vue.git#v2.7.16-security.1",
    "vue-template-compiler": "git+https://github.com/joygqz/vue.git#template-compiler-v2.7.16-security.1",
    "vue-server-renderer": "git+https://github.com/joygqz/vue.git#server-renderer-v2.7.16-security.1",
    "@vue/compiler-sfc": "git+https://github.com/joygqz/vue.git#compiler-sfc-v2.7.16-security.1"
  }
}

只装用得到的子包即可,npm / pnpm / yarn 通用,不需要任何 patchoverrides

装完跑一行验证:

sh 复制代码
node -p "require('vue/package.json').version"
# 2.7.16-security.1

业务代码里所有 import Vue from 'vue' 一行都不用动。仓库里附了一个 demo-vue/(webpack + vue-loader@15)作为集成示例,clone 下来能直接跑通。

四、为什么可以放心用

安全分支最大的成本是"信任",所以这个仓库刻意做了几件事:

  1. 完全开源、MIT 协议,沿用 Vue 原作者 Yuxi You 的授权;

  2. 每个 tag 对应一个 commit hash ,公司安全/合规同事可以直接 diff 上游 2.7.16 看改了什么------你能确切知道引入了什么、没引入什么;

  3. 边界明确 :只修已披露的 CVE,不引入任何新特性、不修改任何 API------这是它能被信任、能被安全团队过审的前提;

  4. 审计示例 :以 CVE-2024-9506 为例,核心修复就一行------给正则加个 ^ 锚点:

    diff 复制代码
    - new RegExp('([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i')
    + new RegExp('^([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i')

    diff 干净到可以让安全同事一眼看完,不存在"夹带私货"的空间。

五、它适合谁

适合:

  • 跑在生产、短期内升不到 Vue 3 的 Vue 2 项目;
  • 被 SCA 红灯卡住合规上线的团队;
  • 政企交付项目,需要"明确维护方"作为答复证据;
  • 想在内网维护一份私有 fork 的团队(仓库里附了发布脚本,整套流程可以迁到公司 GitLab)。

不适合:

  • 新项目(请直接上 Vue 3 + Vite);
  • 希望持续拿到新特性的项目(这里永远不会有新特性,这是设计)。

六、最后

Vue 2 不该因为 EOL 就在生产环境裸奔,但也不值得为它再投入大量精力升级。

只修 CVE、不动 API、长期维护、开源免费、一行接入------这是这个仓库能给你的全部,也是它能被信任的全部。

  • 仓库 github.com/joygqz/vue/
  • 直接接入版本号:v2.7.16-security.1
  • 新 CVE 持续跟进,欢迎 issue 上报

如果对你有帮助,点个 Star,让更多还在跑 Vue 2 的团队能搜到它。

相关推荐
Lkstar2 小时前
Vue 3 Composition API 进阶:自定义 Hooks 与 provide/inject 的高级玩法
vue.js·面试
前端若水3 小时前
在 Vue 2 与 Vue 3 中使用 markdown-it-vue 渲染 Markdown 和数学公式
前端·javascript·vue.js
Aolith3 小时前
用 Vue 递归组件实现嵌套回复,我的评论系统升级全记录
vue.js·全栈
叫我少年4 小时前
Vue3 状态管理 Pinia 入门指南
vue.js
yqcoder6 小时前
Vue 的心脏:深度解析 Vue 2 vs Vue 3 响应式机制
前端·javascript·vue.js
wand codemonkey6 小时前
【第五步+前后分离调】最后的联动调试--java+Vue3项目
java·开发语言·vue.js
骑自行车的码农7 小时前
react hooks原理:为什么不能在条件中使用 hook ?
vue.js·react.js
Aolith7 小时前
从一堆 Bug 到一行代码:我是如何用 keep-alive 优雅解决 Vue 滚动位置恢复的
vue.js·全栈
独泪了无痕7 小时前
利用vue-pdf-embed实现PDF文件的预览
前端·vue.js