HD-2024-2201

指令注入
影响
Vue 2、Nuxt 2
Vue 2.6、Vue 2.7 和 Nuxt 2
Vue 2 NES
Nuxt NES
感叹号圆圈图标
补丁可用
HeroDevs 提供的 Never-Ending Support (NES) 版本已修复此漏洞。

概述

CVE-2021-23337lodash.template@4.5.0 中的高严重性命令注入漏洞,Vue 2.6、Vue 2.7 和 Nuxt 2 都依赖于lodash.template@4.5.0。 此依赖漏洞已在最新的 Vue NES 版本中得到解决。我们已测试并部署了 Vue core 及其所有相关子软件包(最重要的是 Nuxt 用户所依赖的vue-server-renderer)的新补丁版本。

缓解

NES Nuxt 客户采用新版vue-server-renderer 的说明可在NES Nuxt 文档中获取。

此 Lodash 漏洞不会影响 Vue 3 或 Nuxt 3 用户。不过,对于尚未完成向 Vue 3 或 Nuxt 3 迁移的 HeroDevs NES 客户,您需要安装这个新补丁。

自行修补这个问题可能比较棘手,因为直接依赖的lodash.templatelodash.uniq已不再作为单独的软件包发布在 NPM 上。因此,在不重建所有软件包的情况下覆盖依赖关系并不简单。旧版本的 Vue 必须重新构建才能使用 Lodash 的新打包结构。虽然我们 HeroDevs NES 团队拥有完成这项工作的基础架构,但许多团队并不愿意亲自动手。除了功能上的正确性,我们还会分析打补丁后的 Vue 版本,以验证是否重复了任何新的传递依赖关系,并优化应用程序的捆绑包大小。

NES Vue 和 Nuxt 用户说明

最新的使用说明和版本号,以及如何首次设置 NES Vue 和 Nuxt,都可以在VueNuxt入门页面上找到。您只需更新 package.json 以指向新发布的版本即可。

验证补丁

要验证 Nuxt 或 Vue 不再依赖 lodash.template软件包,可以使用软件包管理器的 why 命令。通常是npm whyyarn whypnpm why

npm why lodash.template # 不应打印出 "nuxt "或 "vue"。

现在,当运行npm why时,你应该会看到一个更新版本的 Lodash(而不是lodash.template@4.5.0)已被解析。

npm why lodash # 应返回成功响应,并解析为满足 ^4.17.21 的版本。

接近该补丁

在 NES 团队中,我们努力成为项目的管理者,并做出不破坏现有用户利益的修改。由于在 npm 上发布的lodash.template 软件包已不再发布,因此从技术上讲没有 "最新 "版本可供升级。

不过,Lodash 本身仍然得到了很好的维护。我们选择升级 Lodash,以接收所有当前的非破坏性更改和补丁修复。我们现在也直接依赖于它,并遵循他们推荐的现代(但向后兼容!)导入语法。

这有几个原因。

首先,最新版本的 Lodash 已经修补了不少漏洞。今后,可能还会有更多。由于我们选择使用公开维护的软件包,并定义了接受补丁更新的版本范围,因此在合并任何 Renovate 或 Dependabot 拉取请求(Pull Requests)时,你都能自动接收未来的补丁。这意味着,你无需明确触及项目的 Vue 依赖关系,就能自动接收未来的补丁!

其次,Vue 直接或临时依赖多个 Lodash 软件包。Lodash 项目及其众多子软件包、函数和模块被设计为一起构建,并在整个应用程序中固定为一个单一版本,这样就不会出现代码重复的情况。通过升级到最新的非破坏性 Lodash 版本,我们能够确保您的构建工具能够正确树形化您的依赖关系,而不会重复包含一些更基本的实用程序包。

摘要

我们对 Vue 和 Nuxt 进行了修补,以解决之前的大量 Lodash 问题,并扩大了版本范围,以包括未来的修补程序。我们在确保向后和向前兼容性、功能生产奇偶性和捆绑大小方面非常谨慎。

通过使用我们发布的版本更新package.json文件,您可以保持 Vue 和 Nuxt 应用程序的安全性、合规性和最新性。

  • Vue 2.7 NES 用户:确保所有 Vue 核心软件包版本均解析为@neverendingsupport/vue2@2.7.21 以上的版本。
  • Vue 2.6 NES 用户:确保所有 Vue 核心软件包版本解析到@neverendingsupport/vue2@>=2.6.19以上的版本(但注意不要更新到未打补丁的 Vue 2.7 版本)。
漏洞详情
身份证
HD-2024-2201
受影响的项目
Vue 2、Nuxt 2
受影响的版本
Vue 2.6、Vue 2.7 和 Nuxt 2
出版日期
2024 年 10 月 8 日
≈ 固定日期
2024 年 10 月 3 日
固定在
严重性
类别
指令注入