ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Node.js v20.8.1(Current)安全发布全解析:六项 CVE 修复、提交清单与升级验证指南

Node.js v20.8.1(Current)安全发布全解析:六项 CVE 修复、提交清单与升级验证指南 Node.js v20.8.1Current安全发布全解析六项 CVE 修复、提交清单与升级验证指南【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org导读Node.js v20.8.1 是 2023 年 10 月 13 日发布的 v20.xCurrent安全补丁版本一次性修复了 nghttp2、undici、权限模型、策略机制与 WebAssembly 模块等六个方向的安全漏洞含 4 项高危。本文以仓库中的官方发布文档 v20.8.1.md 为主体结合同期的 2023 年 10 月安全公告 逐条拆解 CVE 成因与影响面并给出制品清单、SHA-256/PGP 校验方法与升级验证步骤帮助你在生产环境中安全、快速地上线此版本。发布背景基于 v20.8.0 的安全补丁版本Node.js v20.8.1 位于 v20.x Current 发布线是对两周前发布的 v20.8.0 的纯安全修补版本。v20.8.0 本身是一次功能性发布引入了三组值得关注的能力Stream 性能优化可写/可读流的创建与销毁性能提升约 ±15%并降低每个流的内存开销可读 WebStream 的异步迭代器消费性能提升约 ±140%pipeTo消费性能提升约 ±60%相关 PR 见 v20.8.0 文档vmAPI 内存管理重构围绕支持importModuleDynamically的vm.Script、vm.compileFunction、vm.SyntheticModule、vm.SourceTextModule修复了一系列长期存在的内存泄漏与 use-after-free 问题其他改进test_runner新增 junit reporter、run()接受testOnly参数、允许 embedder 覆盖NODE_MODULE_VERSION等。而 v20.8.1 本身不包含任何新功能其全部变更都用于收敛安全风险。同期Node.js 项目还发布了 v18.x LTS 线的对应安全版本 v18.18.2两个版本共享同一批底层依赖nghttp2、undici修复。本次修复的六项安全漏洞CVE总览依据官方发布文档v20.8.1 共修复 6 项 CVE严重程度分布为 4 项高危High、1 项中危Medium、1 项低危LowCVE 编号组件/功能严重级别主要影响面CVE-2023-44487nghttp2HTTP/2High所有使用 HTTP/2 的 18.x / 20.x 用户CVE-2023-45143undicifetch 实现High所有 18.x / 20.x 用户CVE-2023-39332node:fs 权限模型High使用实验性权限模型的 20.x 用户CVE-2023-39331权限模型High使用实验性权限模型的 20.x 用户CVE-2023-38552策略机制PolicyMedium使用实验性策略机制的 18.x / 20.x 用户CVE-2023-39333WebAssembly 模块Low使用--experimental-wasm-modules的 18.x / 20.x 用户以下结合 2023 年 10 月安全公告 逐项说明漏洞机理。CVE-2023-44487nghttp2 HTTP/2 Rapid Reset高危这是 2023 年影响面最广的 HTTP/2 协议级漏洞即 HTTP/2 Rapid Reset。攻击者可以无限制地快速创建流并立即取消HEADERS帧后紧跟RST_STREAM使服务端不断分配与回收资源最终造成拒绝服务DoS。影响范围所有运行 18.x 与 20.x 发布线、对外提供 HTTP/2 服务的用户修复方式将依赖nghttp2升级至 1.57.0对应提交c86883e844。CVE-2023-45143undici 跨域重定向 Cookie 泄漏高危undici 是 Node.js 内置fetch的底层实现。按照 Fetch 规范Cookie 属于禁止的请求头forbidden request header浏览器环境中不允许通过RequestInit.headers设置但 undici 对请求头的处理比规范更宽松导致跨源重定向时Cookie 头未被清除可能把用户 Cookie 泄漏给第三方站点或泄露给可控制重定向目标如开放重定向器的恶意攻击者。影响范围所有 18.x / 20.x 用户只要使用fetch/undici 并涉及跨域重定向修复方式将依赖undici升级至 v5.26.3对应提交2860631359。CVE-2023-39331权限模型路径穿越防护不充分高危此前公开的 CVE-2023-30584 修补不完整实现未防护应用用自定义实现覆盖内置工具函数的场景攻击者可以通过替换内置工具函数绕开路径穿越防护。报告与修复均来自 Tobias Nießen。影响范围使用 Node.js 20.x实验性权限模型的用户修复方式提交cd35275111improve path traversal protection。CVE-2023-39332经 Uint8Array 存储路径的穿越高危node:fs的多项函数允许以字符串或Uint8Array对象指定路径。Node.js 中Buffer继承自Uint8Array此前已分别封堵了字符串路径CVE-2023-30584与Buffer路径CVE-2023-32004的穿越问题但非 Buffer 的普通Uint8Array对象仍可绕过防护属于同一模式在Uint8Array上的残留。影响范围使用 Node.js 20.x 实验性权限模型的用户修复方式提交fa5dae1944fix Uint8Array path traversal。CVE-2023-38552策略完整性校验可被绕过中危当 Node.js 策略Policy机制依据受信任清单校验资源完整性时应用可以拦截校验操作并向策略实现返回伪造的校验和从而实际禁用完整性检查。该机制同样属于实验特性。影响范围使用实验性策略机制的所有 18.x / 20.x 用户修复方式提交a4cb7fc7c0use tamper-proof integrity check function。CVE-2023-39333WebAssembly 导出名代码注入低危恶意构造的 WebAssembly 模块导出名可注入 JavaScript 代码使注入代码能够访问 WASM 模块自身本无法访问的数据与函数效果近似于把该模块当作 JS 模块使用。影响范围使用--experimental-wasm-modules命令行选项的 18.x / 20.x 用户修复方式提交f5c90b2951fix code injection through export names。提交清单与修复落点v20.8.1 共包含 7 个提交覆盖依赖升级、权限模型、策略机制与模块系统四条修复线提交哈希模块内容关联 CVEc86883e844deps更新 nghttp2 至 1.57.0CVE-2023-444872860631359deps更新 undici 至 v5.26.3CVE-2023-45143cd37838bf8lib允许依赖以node:前缀引入内置模块undici 更新的前置改动—f5c90b2951module修复经导出名的代码注入CVE-2023-39333fa5dae1944permission修复 Uint8Array 路径穿越CVE-2023-39332cd35275111permission增强路径穿越防护CVE-2023-39331a4cb7fc7c0policy改用防篡改的完整性校验函数CVE-2023-38552值得注意的是权限模型与策略机制在 2023 年 10 月当时仍属实验特性其安全问题虽然已修复但使用前仍应评估实验 API 的稳定性预期。受影响范围与升级建议安全公告给出了明确的影响矩阵18.x 与 20.x 全发布线受 nghttp2Rapid Reset高危与 undiciCookie 泄漏高危影响20.x 发布线额外受 2 项高危权限模型路径穿越、1 项中危策略完整性、1 项低危WASM 注入影响18.x 发布线额外受 1 项中危策略完整性、1 项低危WASM 注入影响。因此v20.x 用户应升级至v20.8.1v18.x 用户应升级至v18.18.2。升级方式可参考本仓库 下载页安装方法文档 与 英文版安装片段 所维护的官方安装方式nvm参考 nvm.bashnvm install 20Docker参考 docker.bashdocker pull node:20-slim进入容器docker run -it --rm --entrypoint sh node:20-slim二进制包/安装器直接替换为 v20.8.1 的对应平台制品见下文清单。升级完成后按 node.bash 中的方式验证node -v # 应输出 v20.8.1制品清单与平台覆盖官方发布文档列出了完整的下载制品。依据仓库中发布博文生成脚本 downloadsTable.mjs制品清单由downloadOptions数组定义并在渲染时按版本动态裁剪版本 16.0.0时移除 macOS Apple Silicon 二进制版本 19.9.0时移除 Windows ARM 64 位的安装器与二进制版本 23.0.0时移除 Windows 32 位制品 24.0.0时移除 ARMv7 制品。v20.8.1 处于 v20 线因此完整发布 16 项制品类别制品Windows 32 位安装器node-v20.8.1-x86.msiWindows 64 位安装器node-v20.8.1-x64.msiWindows ARM 64 位安装器node-v20.8.1-arm64.msiWindows 32 位二进制win-x86/node.exeWindows 64 位二进制win-x64/node.exeWindows ARM 64 位二进制win-arm64/node.exemacOS 64 位安装器node-v20.8.1.pkgmacOS Apple Silicon 二进制node-v20.8.1-darwin-arm64.tar.gzmacOS Intel 二进制node-v20.8.1-darwin-x64.tar.gzLinux 64 位二进制node-v20.8.1-linux-x64.tar.xzLinux PPC LE 64 位二进制node-v20.8.1-linux-ppc64le.tar.xzLinux s390x 64 位二进制node-v20.8.1-linux-s390x.tar.xzAIX 64 位二进制node-v20.8.1-aix-ppc64.tar.gzARMv7 32 位二进制node-v20.8.1-linux-armv7l.tar.xzARMv8 64 位二进制node-v20.8.1-linux-arm64.tar.xz源码包node-v20.8.1.tar.gz所有制品统一托管在官方发行目录nodejs.org/dist/v20.8.1/下另有归档文件.tar.xz、.7z、.zip等与 API 文档nodejs.org/docs/v20.8.1/api/可供查阅。校验下载完整性SHASUMS 与 PGP 签名发布文档在SHASUMS一节提供了 PGP 签名的 SHA-256 校验清单-----BEGIN PGP SIGNED MESSAGE-----包裹防止下载制品被中间人篡改。完整清单如下-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 eea26c68c1f4799fc3ac3f2da9bfd4038b987d51d19d9c4ba8b145b3eee53c7d node-v20.8.1-aix-ppc64.tar.gz 93a5796c02c4e97378d6d0e2fcd8ac7b39418d97c21cf9aa6d9aa605814a1bff node-v20.8.1-arm64.msi 5451f3651c89cd8f224e74961c84e68f4c8d63fe288431a3223b0465cc8b961e node-v20.8.1-darwin-arm64.tar.gz 147e700ec86f8dbb8428600675673de303eb8710273b531031e5e9f3cde64644 node-v20.8.1-darwin-arm64.tar.xz 92b00b357c311eb45dd86516b032d80c63894aa069821c3ae3c8b3bbd00fdb9a node-v20.8.1-darwin-x64.tar.gz 679843744b44ac897479fd53340fdc6d96e5b5c139e90b9cdcbad8a403eaf807 node-v20.8.1-darwin-x64.tar.xz b2db83feb961721f17142e792643974b04456cf2da34c22da3ac29cd00123226 node-v20.8.1-headers.tar.gz 298e41b8d7fd17738049f9c5f6e315bb0f935ab90f9b542d1a55cf6488cc3d67 node-v20.8.1-headers.tar.xz c0420fef5f6e637888be3f400e99297bb844932166fbad5ffa4f188ce59cfcdf node-v20.8.1-linux-arm64.tar.gz fec6edefa7ff959b29c7887735582ff2a2211b36a65a539da0f37db6797b7cff node-v20.8.1-linux-arm64.tar.xz 679fb1cc74ecc460b4a8178b90be2847af28ee817fa2f39d986c832405c0ee1e node-v20.8.1-linux-armv7l.tar.gz f8370aaecd2cc2f26f8571aed7ffcf8efb6dc884a9a5e8e7a5e225e5ccfe6b74 node-v20.8.1-linux-armv7l.tar.xz 162bbf69b2c1aefc8163c371324cfd70582b8527e7623436d6e53823987a23d2 node-v20.8.1-linux-ppc64le.tar.gz 648d80fcb4a160e3078a66b3fc8c8eac669d28de3cfa533abed0bf8cb5af5785 node-v20.8.1-linux-ppc64le.tar.xz d6a384293f18ba49b7507b67ce2ca1958050930768cae817d4705c3d3e672af2 node-v20.8.1-linux-s390x.tar.gz 4aa14458f2bac422989cc4526c431b14743c2f07889559fd1f2163cc6f3071f4 node-v20.8.1-linux-s390x.tar.xz a42ac1f81704b14c7d07ddde989a8e290087b0487ee3f47185eb0240ba518195 node-v20.8.1-linux-x64.tar.gz 44096f6276cf735f3b25f47ffaaa1629b0abad4d9932c3a77d9dcdc743a3ff92 node-v20.8.1-linux-x64.tar.xz abd016ae0dd943b196510e67277542c9cd31d24fbfa6834116a485d2c1d2b882 node-v20.8.1-win-arm64.7z fbf7709c815f37577995d04b2cc41764033f06545c2c142d253ed257fe497960 node-v20.8.1-win-arm64.zip 6b3cb0e8d347ac52f0c45ba27a8c6f099b8053f18dfe7f6802e21c0b312aaedf node-v20.8.1-win-x64.7z 90b27dab351a582edd3a8de2e8aaa80d95c41f19fe92ebbef83b9a45bac95d00 node-v20.8.1-win-x64.zip ea692ad4bb1e80156aa6143c39afda2cfd0d46c36e14a1e03064a5bd084f05cc node-v20.8.1-win-x86.7z ba90977d0bee226db2dc89f55a3964eee4d844caef96e4db6994e1800d9c7dce node-v20.8.1-win-x86.zip c364cda2bab611b08404d5f8c93913b0007b3a19830a27dee5ff5d466807f5eb node-v20.8.1-x64.msi 4f3daffb3124c08a31ebeca0a6b9aa4e4effcd5650c1fe1274c61343fb46689c node-v20.8.1-x86.msi 097897aa8489962e955700d75238230e8295fbc02a27bcdd53d4462ead2c8c7e node-v20.8.1.pkg 18aed385341bc16c7802e9d03189d1d0ad17b87923b2cdf11714d36534783b6a node-v20.8.1.tar.gz f799c66f6a6386bb8ac2c75a378f740c455e97f1fe964393dd39c9f9f6efbc70 node-v20.8.1.tar.xz 60a3d73fb1d376e6ed0a8b8e6734ab6c80aaa031fa023fd1be42276cc80dff93 win-arm64/node.exe 90cb9fbf80b276f2ed039533a8b67f1aeaf204f0aaf6396b290ae9c4dcd6d690 win-arm64/node.lib 6887174c70c5ca8941b9e2bad9b02bb5413158590ec5457f4497bb66d685a545 win-arm64/node_pdb.7z 3824fb4b85c8f8086f0c33c4e906c1ac448cd6259949a06d6956e2b1b300befe win-arm64/node_pdb.zip ccc62758d85434502141611b18af5fdbbc5c9087facaf4a7900d454f3d2fdd48 win-x64/node.exe 45d2519b3be3655e7b52ffcee613a484c38e768a59e9b9d4f08a3580d76a768a win-x64/node.lib e98706e1126309275692c0d318a0f1c54a50ae2447c11e3bcc1c6c261dced63a win-x64/node_pdb.7z 9840a61ea4dea5128c20632f367e1bed2d2ace5fa008fe29b3ae28a9f4c21805 win-x64/node_pdb.zip 1c6ddd284a55664f0b2514bed7fcfe1fafcfec06f6dd07e82fefad9bb10aac60 win-x86/node.exe 0809f4b2f415581f7d932d80be4ac3ff7c4344421f7cccb34ff2f30c18c2ba0c win-x86/node.lib 63f95d51077f2dd0360c57cc4286cc74a740391b04b63fd04914583007e8cf10 win-x86/node_pdb.7z 108b21fc46465197cb4c07df4b25143b2a5d348b30e0d64c2536472fd94cba3e win-x86/node_pdb.zip -----BEGIN PGP SIGNATURE----- iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbiq0389VXvQFAmUpqjgACgkQiq0389V XvSSNwv/aDHgRKQ2/HEZVnltLMB3LPbjdchXBDMluHrJjNq75qcGyOCfSbG8S3 gWv4gI3glp8qfQLzOceMjqB2wXE7sGldfn9ppyDTX9Ppk5kMLnUxrjVqIC91QRzv XsBrpMhAgeoatJDCOyPHUjWbXBQRqMGxsfCdt73PJpUYlNk7c7n/PL4y8mZToikg u/km17/jxHYHnl7lbSSHBCKbW3JnFsaMuZkiHMUNTA3eiMWbTCQTUXiJG4iP6cNm 8oTCQ/hYQi4SEbe5hGicAMCwnSaCB0U9BsSdw2p6o04evTygWG0GQi9YUfDhDxU ITuYgtupA5P1pRkAACrti9jmHSRqV50VYU2L50I3Ex4LeBOio9WwJYkqKs4BAl dOH02aVoZpQvSOhOEOg1zIe18Q4QwG1NHnjxqcdUYgZpNiniLGdCL5LnjmsF/E8 4pGNMerLlNL57KRVspIK84q0kVPOFoLK25gw3Mo36U9JV2F0AUI74yMIA4Ccu24l jbDxn6K gdqA -----END PGP SIGNATURE-----实际下载时可拉取官方发布的SHASUMS256.txt及 PGP 签名文件SHASUMS256.txt.asc并按如下流程校验# 1. 校验 SHA-256 清单与制品一致性 sha256sum -c SHASUMS256.txt # 2. 可选用 GPG 验证清单本身的 PGP 签名确认清单未被篡改 gpg --verify SHASUMS256.txt.asc SHASUMS256.txt在安全补丁版本中制品被篡改的后果尤其严重——因为攻击者通常会利用已知漏洞的窗口期进行供应链投毒因此强烈建议在 CI/发布流水线中固化上述校验步骤。发布博文的自动化生成机制v20.8.1 这篇发布文档本身也是由本仓库的自动化脚本产出的理解其生成机制有助于你快速定位某个版本有哪些改动。仓库在 scripts/release-post/ 下维护了一套完整的生成管线index.mjs主入口。运行node index.mjs 20.8.1或省略版本号时自动从发行索引拉取最新版即可生成博文它依次完成从对应发布线的 CHANGELOG 中提取版本区块fetchChangelog、解析版本策略Current/LTS与作者fetchVersionPolicy、fetchAuthor拉取官方SHASUMS256.txt.asc作为校验清单fetchShasums失败时以[INSERT SHASUMS HERE]占位逐一对下载制品发起 HEAD 请求确认可下载后写入博文verifyDownloads失败项标记为*Coming soon*template.hbsHandlebars 模板定义了发布文档的固定骨架——frontmatterdate/category/title/layout/author、changelog 正文、下载清单、### SHASUMS代码块downloadsTable.mjs维护 16 项制品 URL 模板%version%占位符并按 semver 范围动态过滤制品前文已述。也就是说你在发布文档里看到的下载清单、SHASUMS 代码块都来自上述自动化流程这保证了多版本之间格式与内容的一致性也便于社区协作核对。持续跟进 Node.js 安全发布安全类版本如 v20.8.1通常发布节奏紧凑且影响面广建议通过以下方式保持同步关注本仓库 安全漏洞公告目录其中按月份归档了历次安全发布详情如 2023 年 10 月公告每次公告均包含影响矩阵、修复版本与报告致谢订阅官方低流量的 nodejs-sec 公告邮件列表获取漏洞与安全版本的一手通知发现疑似漏洞时遵循 Node.js 项目官方安全披露流程提交报告公告文档末尾附有详细指引。小结Node.js v20.8.1 是一个小而重的安全补丁版本7 个提交、6 项 CVE却同时覆盖了协议层HTTP/2 Rapid Reset、依赖层undici Cookie 泄漏、实验特性层权限模型、策略机制与模块层WASM 注入四类攻击面。对于 20.x 用户尤其是启用了实验性权限模型、策略机制或--experimental-wasm-modules的部署应立即升级至 v20.8.1LTS 用户对应升级 v18.18.2并在升级后按上文流程完成制品校验与版本验证。【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表