生命周期结束 (EOL)
Node.js 版本为何以及如何到达生命周期结束
Node.js 的主版本会按照可预测的时间表进行发布、修补和指定生命周期结束。由于永久维护所有版本系列并不可行,因此在计划的维护期结束后,Node.js 的某个主版本系列将停止由项目维护。
当一个版本系列到达 EOL 时会发生什么
当一个版本到达生命周期结束时,意味着它将不再接收更新,包括安全补丁。这可能使运行在这些版本上的应用程序容易受到安全问题和永远不会被修复的错误的影响。
- 不再修复漏洞:当新的安全版本揭示了较新主版本系列中的问题和补丁时,即使相同的漏洞也影响 EOL 版本系列,也不会为它们发布任何新版本。仍在使用 EOL 版本系列和受影响代码路径的用户将立即面临利用这些已披露漏洞的攻击风险。
- 工具链中断:EOL 版本可能不再动态链接到其所依赖的共享库的较新版本,从而阻塞或破坏系统更新。
- 生态系统偏离:随着时间的推移,许多流行的用户端软件包会放弃对 EOL Node.js 版本的支持。当应用程序固守过时的软件包时,它可能会遭受更多未修复的漏洞和错误,从而进一步偏离生态系统规范。
- 合规性警示:许多行业审计禁止使用未经维护的运行时。
EOL 版本
版本 (代号) | 最后更新 | 漏洞 | 详情 |
---|---|---|---|
v23 | 2高危2中危 | ||
v21 | 7高危5中危 | ||
v19 | 1高危3中危2低危 | ||
v18 (Hydrogen) | 15高危19中危4低危 | ||
v17 | 1高危3中危1低危 | ||
v16 (Gallium) | 11高危18中危4低危 | ||
v15 | 1严重6高危1中危1低危 | ||
v14 (Fermium) | 2严重16高危16中危5低危 | ||
v13 | 1严重2高危 | ||
v12 (Erbium) | 2严重13高危6中危3低危 | ||
v11 | 3高危1中危 | ||
v10 (Dubnium) | 1严重12高危3中危1低危 | ||
v9 | 1严重4高危1中危1低危 | ||
v8 (Carbon) | 1严重11高危2中危1低危 | ||
v7 | 3高危2中危 | ||
v6 (Boron) | 16高危12中危 | ||
v5 | 15高危8中危 | ||
v4 (Argon) | 2严重17高危9中危 | ||
v0 | 2严重 |
商业支持
尽管使用 EOL 版本有明显的缺点,但在实践中,组织会面临阻止立即升级的限制,例如遗留代码库、合规性要求或复杂的依赖链。通过 OpenJS 基金会生态系统可持续性计划,Node.js 得到 HeroDevs 和 NodeSource 的支持,为安全修复提供商业服务。
HeroDevs 为已过官方维护阶段的 Node.js 版本提供 永不终止的支持 (NES)。这包括安全补丁、合规性援助和技术支持,以在您规划升级策略时帮助填补空白。
NodeSource 为运行较旧、不受支持的 Node.js 版本提供安全支持,从而为团队提供更多时间和灵活性来过渡到较新版本,同时保持安全态势。
通过商业支持使用 EOL 版本应被视为一种临时解决方案——目标应始终是升级到受积极支持的版本。