ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Node.js 22.22.2(Jod LTS)安全发布深度解析:7 个 CVE 修复、提交清单与升级校验指南

Node.js 22.22.2(Jod LTS)安全发布深度解析:7 个 CVE 修复、提交清单与升级校验指南 Node.js 22.22.2Jod LTS安全发布深度解析7 个 CVE 修复、提交清单与升级校验指南【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org本文基于 nodejs.org 官方仓库中的 v22.22.2 发布公告全面解读 2026-03-24 发布的 Node.js 22.22.2Jod LTS安全版本逐一拆解本次修复的 7 个 CVE含高危 2 个、中危 3 个、低危 2 个及 16 条提交记录整理各平台安装包与完整的 SHASUMS 校验信息并给出可落地的升级、校验与验证步骤帮助你判断是否立即升级、如何安全地完成升级。版本概览一次典型的 LTS 安全发布Node.js 22.22.2 属于 22.x Jod LTS长期支持版本线于2026-03-24正式发布。与常规功能版本不同这是一次security release安全发布即版本内容以安全漏洞修复为主不引入新功能。公告作者为 Rafael GonzagaRafaelGSS由 aduh95 代为准备发布对应文件头部的 Front Matter 如下date: 2026-03-24T20:43:26.981Z category: release title: Node.js 22.22.2 (LTS) layout: blog-post author: Rafael Gonzaga从仓库结构看此类发布公告统一存放在 apps/site/pages/en/blog/release/ 目录下与 v22.22.0、v22.22.1、v22.22.3 等相邻版本形成连续的版本线记录category: release与layout: blog-post会被网站侧 博客数据生成脚本 消费用于渲染发布日志列表页。值得说明的是发布公告本身并非手工编写仓库中提供了专用的发布文章生成脚本 apps/site/scripts/release-post/index.mjs它会自动从官方发布源拉取 changelog、作者信息、SHASUMS 与下载链接再套用 template.hbs 模板渲染成 vX.md。本文后续对 SHASUMS 与下载清单的分析也将结合该脚本的底层逻辑展开。安全修复全景7 个 CVE 一览本次发布共修复7 个 CVE覆盖 TLS、HTTP、Web Crypto、HTTP/2、V8 引擎与权限模型等核心模块。按严重级别汇总如下CVE 编号模块核心修复内容严重级别CVE-2026-21637TLS将SNICallback调用包裹在try/catch中High高危CVE-2026-21710HTTP为headersDistinct/trailersDistinct使用 null 原型对象High高危CVE-2026-21713Web CryptoHMAC 比较改用 timing-safe 比较Medium中危CVE-2026-21714HTTP/2处理NGHTTP2_ERR_FLOW_CONTROL错误码Medium中危CVE-2026-21717构建/测试测试数组索引哈希碰撞Medium中危CVE-2026-21715Permission为realpath.native补充权限检查Low低危CVE-2026-21716Permission在lib/fs/promises中补充权限检查Low低危下面逐一深入解读每个 CVE 的技术背景与修复方式。高危 · CVE-2026-21637TLSSNICallback异常处理SNICallback是 TLS 握手阶段根据客户端 SNIServer Name Indication选择证书的回调函数。若该回调抛出异常且未被捕获可能导致进程异常行为甚至崩溃被攻击者利用。修复方式非常直接将SNICallback的调用包裹进try/catch确保异常被转换为规范的错误处理流程而非向上冒泡破坏握手状态。对应提交由 Matteo Collina 完成提交哈希91b970886f见 发布公告。值得注意的是该版本还同步回迁了_tls_common与_tls_wrap的重构提交哈希73deff77c1对应 PR #57643属于为后续 TLS 代码质量与稳定性打基础的配套改动。高危 · CVE-2026-21710HTTP 头对象原型污染headersDistinct与trailersDistinct是 Node.js HTTP 模块中用于获取重复出现的同名请求/响应头的 API。若它们返回的对象使用普通Object原型攻击者可通过构造特殊头名称如__proto__触发原型污染prototype pollution进而影响应用运行时行为属于典型的高危安全问题。修复方案是让这两个 API 返回以 null 为原型的对象null prototype从根上切断原型链污染路径这也是 JavaScript 生态中防御原型污染的推荐做法。对应提交哈希为a2fe9fd81a由 Matteo Collina 提交PR nodejs-private/node-private#821。中危 · CVE-2026-21713Web Cryptography HMAC 时序侧信道Web Crypto APIcrypto.subtle是浏览器与 Node.js 通用的密码学接口。HMAC 签名/验签过程中若使用普通的字符串比较而非恒定时间比较timing-safe comparison攻击者可通过测量比较耗时来逐字节推断密钥或签名信息即时序侧信道攻击timing side-channel。修复由 Filip Skokan 完成提交哈希52a52ef619PR nodejs-private/node-private#822将 Web Crypto HMAC 内部的 MAC 比较替换为恒定时间比较使比较耗时与内容无关。Node.js 内部实现中此类安全比较一般通过crypto.timingSafeEqual或底层的恒定时间内存比较原语完成。中危 · CVE-2026-21714HTTP/2 流控错误码处理NGHTTP2_ERR_FLOW_CONTROL是底层 nghttp2 库返回的流控flow control错误码。流控机制用于防止单个流耗尽接收端窗口从而保护连接与内存资源。此前若该错误码未得到显式处理可能触发错误路径处理不当造成连接异常关闭或资源被错误回收。修复由 RafaelGSS 完成提交哈希2a6105a63bPR nodejs-private/node-private#832在srcC 侧为NGHTTP2_ERR_FLOW_CONTROL增加了明确的错误分支处理。中危 · CVE-2026-21717数组索引哈希碰撞该 CVE 涉及 V8 引擎内部对数组索引的哈希处理。哈希碰撞hash collision攻击可通过构造大量哈希值相同的键将本应 O(1) 的哈希表操作退化为 O(n)从而引发拒绝服务DoS。修复以构建/测试build,test维度呈现核心动作包括在 V8 中 cherry-pick/backport 多个上游补丁aac14dd95e5b、1361b2a49d02、185f0fe09b72、0a8b1cdcc8b2分别对应提交哈希30a3ab11e2、e3f4d6a42e、7dc00fa5f4、076acd052d并配套新增了数组索引哈希碰撞的测试用例提交哈希6f14ee5101。从仓库的发布记录可见这组补丁统一回迁自 V8 上游确保 LTS 版本线及时获得引擎级的安全加固。低危 · CVE-2026-21715realpath.native缺失权限检查Node.js 的权限模型Permission Model通过--permission启动参数启用用于限制文件系统、子进程等资源访问。fs.realpath.native是返回规范化绝对路径的同步方法此前未纳入权限检查意味着即便在权限模型开启时应用仍可通过它探测受保护路径是否存在。修复由 RafaelGSS 完成提交哈希db48d9c675PR nodejs-private/node-private#794为realpath.native增加了权限校验使路径解析行为与权限模型保持一致。低危 · CVE-2026-21716lib/fs/promises权限检查补充与上一条类似fs/promisesPromise 版文件系统 API中的部分路径操作此前未经过权限模型校验存在绕过风险。修复提交为06fc3436f6PR nodejs-private/node-private#795在lib/fs/promises中补齐权限检查确保 Promise API 与回调 API 的权限语义对齐。从仓库中负责漏洞数据聚合的 apps/site/next-data/generators/vulnerabilities.mjs 可以看到网站会按主版本号如22.x对官方漏洞数据进行分组解析将每个 CVE 关联到受影响的主版本线——本次修复即归属于 v22.x 线的安全记录。提交记录解读16 条变更明细本次发布共包含 16 条提交除上述 7 个 CVE 对应的安全修复外还包含若干依赖升级与配套重构。完整明细如下提交哈希与 PR 编号均来自 发布公告提交哈希模块变更内容关联6f14ee5101build,test测试数组索引哈希碰撞CVE-2026-2171752a52ef619cryptoWeb Crypto HMAC 使用 timing-safe 比较CVE-2026-2171330a3ab11e2depsV8cherry-pickaac14dd95e5bCVE-2026-21717e3f4d6a42edepsV8backport1361b2a49d02CVE-2026-217177dc00fa5f4depsV8backport185f0fe09b72CVE-2026-21717076acd052ddepsV8backport0a8b1cdcc8b2CVE-2026-21717963c60a951depsV8覆盖depot_tools版本PR #62344常规a688117d5ddeps升级 npm 至 10.9.7PR #62330常规859c8c761bdeps更新 undici 至 v6.24.1PR #62285常规d5ed384a2fdeps升级 npm 至 10.9.6PR #62215常规a2fe9fd81ahttpheadersDistinct/trailersDistinct 使用 null 原型CVE-2026-2171073deff77c1lib回迁_tls_common与_tls_wrap重构PR #57643常规06fc3436f6permissionlib/fs/promises 补充权限检查CVE-2026-21716db48d9c675permissionrealpath.native 补充权限检查CVE-2026-217152a6105a63bsrc处理 NGHTTP2_ERR_FLOW_CONTROL 错误码CVE-2026-2171491b970886ftlsSNICallback 调用包裹 try/catchCVE-2026-21637值得关注的依赖变化npm 10.9.6 → 10.9.7同一次发布中出现两次 npm 升级d5ed384a2f先至 10.9.6a688117d5d再至 10.9.7说明该版本线在安全窗口内连续合并了 npm 的补丁版本建议升级后确认实际 npm 版本为 10.9.7。undici v6.24.1Node.js 内置的 HTTP 客户端库 undici 同步更新859c8c761b与本次 HTTP 相关安全修复如 headersDistinct 原型污染共同构成了对网络层安全的整体加固。V8 四连 backport30a3ab11e2、e3f4d6a42e、7dc00fa5f4、076acd052d四条提交将 V8 上游关于哈希碰撞的修复完整移植到 22.x 线属于引擎级安全修复的典型回迁模式。各平台安装包清单本次发布覆盖 Windows、macOS、Linux、AIX 及多种 ARM 架构。以下为公告列出的 16 个下载项 1 个源码包的完整清单文件均位于官方发行目录dist/v22.22.2/下平台文件Windows 32-bit Installernode-v22.22.2-x86.msiWindows 64-bit Installernode-v22.22.2-x64.msiWindows ARM 64-bit Installernode-v22.22.2-arm64.msiWindows 32-bit Binarywin-x86/node.exeWindows 64-bit Binarywin-x64/node.exeWindows ARM 64-bit Binarywin-arm64/node.exemacOS 64-bit Installernode-v22.22.2.pkgmacOS Apple Silicon 64-bit Binarynode-v22.22.2-darwin-arm64.tar.gzmacOS Intel 64-bit Binarynode-v22.22.2-darwin-x64.tar.gzLinux 64-bit Binarynode-v22.22.2-linux-x64.tar.xzLinux PPC LE 64-bit Binarynode-v22.22.2-linux-ppc64le.tar.xzLinux s390x 64-bit Binarynode-v22.22.2-linux-s390x.tar.xzAIX 64-bit Binarynode-v22.22.2-aix-ppc64.tar.gzARMv7 32-bit Binarynode-v22.22.2-linux-armv7l.tar.xzARMv8 64-bit Binarynode-v22.22.2-linux-arm64.tar.xzSource Codenode-v22.22.2.tar.gz仓库中 apps/site/scripts/release-post/downloadsTable.mjs 定义了上述下载项模板并通过 semver 规则按版本过滤平台resolveDownloads函数downloadsTable.mjs 16.0.0才提供 macOS Apple Silicon 二进制 19.9.0才提供 Windows ARM 64-bit 安装包/二进制 23.0.0起移除 Windows 32-bit 安装包与二进制22.x 仍保留 32 位支持 24.0.0起移除 ARMv7 32-bit 二进制。这解释了为何 v22.22.2 的清单中同时包含 x86/x64/arm64 的 Windows 产物与 ARMv7 产物——它们都由版本线对应的平台支持策略决定。此外发布脚本会通过 HEAD 请求逐项探测每个下载链接verifyDownloads见 index.mjs若某项尚未就绪则标记为Coming soon确保公告发布时清单是经过实际验证的。SHASUMS 校验与 PGP 签名验证安全发布最关键的一步是验证下载文件的完整性。公告内嵌的 SHASUMS 块由 SHA256 校验和与 PGP 签名两部分组成完整内容如下摘自 发布公告-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 31e8cdaf9921589c2978fd224aa5ae51e470577df63435ebfff16b715ed8d4d3 node-v22.22.2-aix-ppc64.tar.gz 1ec02aeb76d716ce15915bed10c0a4dcf9a6224e9a4f4d1645ddca4985a7bc06 node-v22.22.2-arm64.msi db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000 node-v22.22.2-darwin-arm64.tar.gz f8655beb4b86ff6588ed7e02c37f8574b58557bd3e880012814b1a4956fd9d88 node-v22.22.2-darwin-arm64.tar.xz 12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba node-v22.22.2-darwin-x64.tar.gz b6a384bba1a7ec585e5a91a452b63f676b940584ff57b5c9cf0541c8db60023e node-v22.22.2-darwin-x64.tar.xz 90e5ef0fdf02f88487f904a798836b35bd44896046d502873bc625ac2baeded2 node-v22.22.2-headers.tar.gz b4dde76c01769ae141de9228cc47dd53853cde2fd94f7d40192273ec79dd405b node-v22.22.2-headers.tar.xz b2f3a96f31486bfc365192ad65ced14833ad2a3c2e1bcefec4846902f264fa28 node-v22.22.2-linux-arm64.tar.gz e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe node-v22.22.2-linux-arm64.tar.xz 465162c9e1821b2168b2740351ae8f191b24b58313f0cf9873a7ccd200a66e12 node-v22.22.2-linux-armv7l.tar.gz 2ebc6746e517f345da340ec76a108203eb6c2365391eb525c0e0dd6135b0b9df node-v22.22.2-linux-armv7l.tar.xz f661dd525231faf113bd484129169d222b84ef40c091b5dca04a104d43e25d07 node-v22.22.2-linux-ppc64le.tar.gz 14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9 node-v22.22.2-linux-ppc64le.tar.xz 4c28684a4c75683c491464f7fa168cd37752ed343fc27fb85b75806517e340cb node-v22.22.2-linux-s390x.tar.gz 9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb node-v22.22.2-linux-s390x.tar.xz 978978a635eef872fa68beae09f0aad0bbbae6757e444da80b570964a97e62a3 node-v22.22.2-linux-x64.tar.gz 88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a node-v22.22.2-linux-x64.tar.xz ed1b73ffb642978e669786f9115d2579e890a3f9bf3dcd7c73272047b4895a17 node-v22.22.2-win-arm64.7z 380d375cf650c5a7f2ef3ce29ac6ea9a1c9d2ec8ea8e8391e1a34fd543886ab3 node-v22.22.2-win-arm64.zip c87622c838f312d1fcc635e09034013e983ebe8df039a62ab46c22b34b9b8a0c node-v22.22.2-win-x64.7z 7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c node-v22.22.2-win-x64.zip d73718f162d286d1deaf911d8bf224ba823a877cd0ed23c0d09b43923f6bd699 node-v22.22.2-win-x86.7z ca892f829a733109e341c43585fd2094177e9d2f2c45f97c7ed3cf329d5427c5 node-v22.22.2-win-x86.zip 57456aa33fcd6fb6a9418e09227de0b0ca604f7b2123566acc66b555cb2f42e5 node-v22.22.2-x64.msi e43cf42f461cbfea23a079925cfdd132a18cf66d4e30f64ec5ab4ec31dbb41f3 node-v22.22.2-x86.msi ff08ad19678de4ca2af34b58b73b272c555449c6f2d91487ca6fe0a697f9eabe node-v22.22.2.pkg f4b9606f33aef725a77b6292460102b48b80902571a8bb94cd769837ee0577df node-v22.22.2.tar.gz b6bedd3a8cacd5df7df015a5088264b12c74a277ba60684cb9642ae8eb743132 node-v22.22.2.tar.xz 1a338f2467a566197ed8b309240a3a372f5d72458f9c7e5c9613ad6ccae1e0c0 win-arm64/node.exe 9b75bbc3be72c84f1d41cd6abb6e5ecc333836015e40a6267ce755554874a13a win-arm64/node.lib d8439627dd1081c37267c77a79cf7f21c0a7cfd85c582fc3d6361d4b6a720388 win-arm64/node_pdb.7z 76a309aae5afd000b87359a4d26c2392dfc231ef626c1a77ec103452677edad4 win-arm64/node_pdb.zip ae1a50511be58e987483fdbc12125407443926d2d394669ade2352776e920dd3 win-x64/node.exe 0d8d8bcc11daea60f5dd4da414e72ccb785718345ec8fbec52cfc7d1a2326293 win-x64/node.lib 0431a2383c9ceec6bd46d5d96fec1342c0adf7bd57528312fe4812e32e1d2e5c win-x64/node_pdb.7z 7a5071732adc414638f4a8e06926820410dfd6421badbe0221dfa594ec2a766f win-x64/node_pdb.zip ed2aff66c21ea111e517b3c8a6857c35d222cc83e12ff66d9c03b61e2e0558e7 win-x86/node.exe a07e94777fb491c1a59103b6987417df35a1dd0a9682220bba43d3c602b8b414 win-x86/node.lib 0f43bd6b98aa25bc7067cf374de59ec853035778ff4b6ce2fb118dc67f5eaee9 win-x86/node_pdb.7z ffd472e223a8dbde11867016e51744dadb3e55af8dc3d663fb605a1560a63017 win-x86/node_pdb.zip -----BEGIN PGP SIGNATURE----- iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbiq0389VXvQFAmnC9gcACgkQiq0389V XvR1ugwAiiv5SVNLVMJa5ww1CtXHbVX7Kd1vGXw9INsK1iIUrwT4T2lZaKnztYx ngwaxIa8h4/x9IS262tRYJUHqcQtRPJ8pD7ahnfJW5BZN9HQC1jEy6TWrH5rt zQfFUYrRM7jbWPXlDmFecBPpOC48mZyOe8I7UzDjQGY1KYx6HHutUi28bAbPxzi CzcpgsdhD/y/qhQW/DtlmFj4AWh1oFzZZW3C0mNRNgC96FVs61Xp4CXfiPO9vFwY VjB2JHYkxVx2K1m5O4CcrtEEtg7LBpuzCNke/INnKXdh4UDqSBGXm/oAvl71VLgH aICjDIKcS4TXmWmaSbPN4y6Lfe30a8CESRolX/5nvzAyQy/pVmmhyi1l15IzAQDu b/efW5bZn7wJTcNJz64vqXNPE1eKfJES7cAabDkvxnAWQhf9JtZf406QH5cYgig Yo/97a00Pv6/nBJLF4woxYBjG5/2hKxuhkOKQ9QnDqCXW0ACpWHn1aXStv5s6Ps JNKkGS1v uiHn -----END PGP SIGNATURE-----如何验证下载文件第一步核对 SHA256 校验和。下载完成后在本地对文件计算 SHA256 并与上表比对# macOS / Linux shasum -a 256 node-v22.22.2-linux-x64.tar.xz # 或使用 openssl跨平台通用 openssl dgst -sha256 node-v22.22.2-linux-x64.tar.xz # Windows PowerShell Get-FileHash .\node-v22.22.2-x64.msi -Algorithm SHA256输出应与上表中对应行的哈希完全一致不一致则说明文件在传输中被破坏或被篡改切勿安装。第二步校验 PGP 签名。SHASUMS 块是经过 PGP 签名的签名指纹iQwI24V5Fi/uDfnbiq0389VXvQF对应发布密钥。将-----BEGIN PGP SIGNED MESSAGE-----到-----END PGP SIGNATURE-----的完整内容保存为SHASUMS256.txt.asc后执行gpg --verify SHASUMS256.txt.asc若公钥尚未导入需要先从可信渠道获取 Node.js 官方发布公钥并导入再重新验证。签名校验通过后上表中的哈希值才真正可信。值得一提的是apps/site/scripts/release-post/index.mjs 中的fetchShasums正是从官方发布源抓取SHASUMS256.txt.asc即上述带 PGP 签名的 SHA256 文件后原样嵌入公告——公告内的 SHASUMS 块与官方发布目录中的签名文件是一一对应的。升级与验证步骤对于运行在 Node.js 22.x 线尤其是 22.22.1 及更早版本的生产环境强烈建议尽快升级因为其中包含 2 个高危 CVETLS SNICallback 异常处理、HTTP 头原型污染与 3 个中危 CVE。1. 检查当前版本node -v若输出v22.22.1或更早属于受影响范围。2. 通过版本管理器升级以 nvm 为例nvm install 22.22.2 nvm use 22.22.2 nvm alias default 22.22.23. 或直接下载安装包依据上文各平台清单选择对应文件如 Linux x64 使用node-v22.22.2-linux-x64.tar.xz解压后将bin目录加入PATH。macOS 用户可使用.pkg安装器Windows 用户可使用.msi。4. 升级后二次确认node -v # 应输出 v22.22.2 npm -v # 应为 10.9.7本版本线最终升级到的 npm 版本 node -p process.versions.undici # 应为 6.24.15. 回归验证重点模块本次修复涉及 TLSSNICallback、HTTPheadersDistinct/trailersDistinct、Web CryptoHMAC、HTTP/2流控与 fs 权限模型。升级后建议针对使用这些 API 的业务路径做一轮回归测试尤其是多域名 TLS 部署SNI 场景、依赖重复响应头的代理/网关类应用、使用crypto.subtle.sign/verify的认证服务、启用--permission的沙箱应用。附发布公告是如何自动生成的最后回到仓库本身理解这份公告的来源有助于你判断其可信度与后续查阅方式。nodejs.org 网站的发布公告并非逐字手写而是由 apps/site/scripts/release-post/index.mjs 半自动生成数据源脚本从官方发布源拉取dist/index.json最新版本号、对应版本线的CHANGELOG、SHASUMS256.txt.asc并调用 GitHub 用户 API 解析发布作者index.mjs渲染数据注入 template.hbs 模板生成标题 Front Matter changelog 下载清单 SHASUMS的标准结构经 Prettier 格式化后写入pages/en/blog/release/vX.mdindex.mjs下载清单由 downloadsTable.mjs 按 semver 规则过滤各平台产物并对每个链接做 HEAD 探测未就绪的标记为Coming soon发布后的呈现公告文件进入网站内容管线后配合 blog 数据生成脚本 与 漏洞数据生成器 呈现在官方博客与下载/EOL 相关页面中。因此本文解读的 v22.22.2 公告在结构上与其他版本线公告完全一致你可以用同样的方式阅读 v22.22.1、v22.22.3 等相邻记录横向对比安全修复节奏与依赖变化建立对 22.x LTS 线整体维护状况的完整认知。【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表