尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Node.js v10.19.0 (LTS) 安全版本深度解析:HTTP 解析加固、三大 CVE 修复与 --insecure-http-parser 兼容开关

发布时间:2026/9/17 14:38:45

资讯中心
01
ARTICLE

Node.js v10.19.0 (LTS) 安全版本深度解析:HTTP 解析加固、三大 CVE 修复与 --insecure-http-parser 兼容开关

Node.js v10.19.0 (LTS) 安全版本深度解析:HTTP 解析加固、三大 CVE 修复与 --insecure-http-parser 兼容开关
Node.js v10.19.0 (LTS) 安全版本深度解析HTTP 解析加固、三大 CVE 修复与 --insecure-http-parser 兼容开关【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org本篇指南以 Node.js 官方发布公告 v10.19.0.md 为骨架系统拆解这一 LTS 安全版本的修复内容三个 CVE含一个 Critical 级 HTTP 请求走私漏洞的原理、随版本引入的严格 HTTP 头解析行为以及为互操作性保留的--insecure-http-parser/insecureHTTPParser逃生通道。读完本文你将掌握这批漏洞的影响面、如何在生产环境中通过命令行参数或 HTTP 服务器选项控制解析严格度以及如何用 SHASUMS PGP 校验下载产物的完整性。版本概况这是一次安全发布Node.js v10.19.0 于 2020-02-06 发布属于LTS长期支持版本发布公告作者为 Bethany Nicolle Griggs原公告 中authorfrontmatter 字段。公告开篇即明确This is a security release.这是一次安全发布。该版本并非孤立事件——同一批次还同步发布了 Node.js v12.15.0 (LTS) 与 v13.8.0 (Current)三个版本修复的是同一组安全漏洞差异仅在各自维护分支的依赖版本上例如 v12 线升级的是llhttp2.0.4v10 线则升级http-parser。这一点可以在仓库的二月 2020 安全公告中交叉验证所有受支持的发布线10.x、12.x、13.x均受影响修复版本于 2020 年 2 月 4 日周二或之后数日内推出v10.19.0 公告日期为 2 月 6 日符合安全版本集中发布的节奏。本次修复的三个 CVE 详解原公告以列表形式给出了三个漏洞下面结合二月 2020 安全公告中的严重度与攻击场景逐一定性CVE-2019-15605利用畸形 Transfer-Encoding 头的 HTTP 请求走私Critical受影响的 Node.js 版本可被利用执行HTTP desync去同步攻击攻击者构造畸形的Transfer-Encoding请求头使 Node 解析出的请求边界与下游代理/网关解析出的边界不一致从而把恶意负载走私给最终用户。公告进一步说明恶意负载可被用于劫持用户会话、投毒 Cookie、实施点击劫持以及基于底层系统架构的多种其他攻击。该漏洞由 eBay 软件工程师 Ethan Rubinson 报告对应提交为 [test 提交TE smuggle 不可行性验证]见下文关键提交核心修复落在http-parser依赖升级上。CVE-2019-15606HTTP 头值尾部 OWS 未裁剪HighHTTP 规范要求从头部值中裁剪尾部可选空白OWSOptional Whitespace。此前的实现未执行该裁剪攻击者可利用头部值末尾残留的空白绕过基于 HTTP 头值的安全检查例如 WAF 规则或鉴权逻辑中值精确匹配的判断。该漏洞由 Google 的 Alyssa Wilk 报告修复提交为http: strip trailing OWS from header values剥离头部值尾部 OWS。CVE-2019-15604畸形证书字符串远程触发 TLS 服务器断言High攻击者使用 subjectAltName 中包含type 19 字符串即 IP 地址类型的畸形编码的客户端证书连接 Node.js TLS 服务器当服务器尝试读取对端证书时即触发断言assertion导致进程崩溃形成远程拒绝服务。该漏洞由 Rogier Schouten 与 Melvin Groenhoff 报告修复提交位于crypto模块fix assertion caused by unsupported ext修复由不支持的扩展引发的断言。严格 HTTP 解析默认安全留出兼容开关除修复上述漏洞外v10.19.0 还整体收紧了 HTTP 头解析的严格度。公告明确说明理由宽松的 HTTP 解析历史上一直是各类问题的源头虽然本次没有已知漏洞直接对应此项收紧但严格默认是更安全的基线。然而严格解析可能破坏与不合规non-conformantHTTP 实现的互操作性——部分常见站点会生成非法 HTTP 头。为此 Node.js 提供了两个逃生通道通道形式作用域--insecure-http-parserCLI 命令行参数全局对进程中所有 HTTP 服务器/客户端生效insecureHTTPParserhttp模块的服务器选项按服务器per-server或按流per-stream粒度命令行方式--insecure-http-parser# 全局关闭严格 HTTP 头解析仅建议用于确需兼容非法头的互操作场景 node --insecure-http-parser server.js公告特别强调Using the insecure HTTP parser should be avoided.应避免使用不安全解析器该开关仅是为某些确实产生非法头部的站点提供互操作性兜底不是常规配置。按服务器/按流方式insecureHTTPParser选项从提交记录看该开关的能力经历了两个阶段的演进均为SEMVER-MINOR即向后兼容的新特性http: opt-in insecure HTTP header parsing—— 首次引入选择性开启不安全 HTTP 头解析的能力http: make --insecure-http-parser configurable per-stream or per-server—— 将开关细化为可按单个流或单个服务器配置。因此你可以把影响范围收敛到最小例如只对面向特定老客户端的服务器开启const http require(http); // 仅此服务器使用宽松解析其余服务器保持严格模式 const server http.createServer({ insecureHTTPParser: true }, (req, res) { res.end(legacy client compatible); }); server.listen(8080);把insecureHTTPParser: true限定在确需兼容非法头的端点其余端点保持默认严格解析是兼顾安全与互操作性的推荐姿势。关键提交逐一解读原公告列出的 8 条提交完整刻画了这次安全修复的技术面提交哈希、模块与摘要均来自 v10.19.0.md提交哈希模块内容性质f940bee3b7crypto修复由不支持的扩展引发的断言安全修复49f4220ce5deps升级 http-parser 至 v2.9.3安全修复a28e5cc1eddeps升级 http-parser 至 v2.9.1SEMVER-MINOR0082f62d9chttp--insecure-http-parser可按流/按服务器配置SEMVER-MINORa9849c0ff6http选择性开启不安全 HTTP 头解析SEMVER-MINOR2eee90e959http剥离头部值尾部 OWS安全修复e2c8f89b75test验证无法利用 TE 头走私请求回归测试d616722f65test验证--insecure-http-parser可正常工作回归测试从中可以提炼三点工程信息漏洞根因集中在依赖层http-parser从 v2.9.1 升级到 v2.9.3CVE-2019-15605/15606 的修复主体位于该 C 解析器v10 线复用http-parserv12 才切换到llhttp见 v12.15.0.md 的 deps 提交。两条 SEMVER-MINOR 提交把逃生通道做成了可选能力先有insecureHTTPParser选项再细化到 per-stream / per-server 粒度为后来者如 v12.20.1 等后续安全版本沿用同一机制提供了铺垫。测试先行专门的回归测试TE 走私不可行、--insecure-http-parser生效被同步合入防止修复被后续改动破坏。发行产物与完整性校验各平台下载文件清单原公告按平台列出的安装包/二进制文件名均可从nodejs.org/dist/v10.19.0/目录获取此处仅列文件名便于检索核对平台文件Windows 32-bit 安装包node-v10.19.0-x86.msiWindows 64-bit 安装包node-v10.19.0-x64.msiWindows 32-bit 二进制win-x86/node.exeWindows 64-bit 二进制win-x64/node.exemacOS 64-bit 安装包node-v10.19.0.pkgmacOS 64-bit 二进制node-v10.19.0-darwin-x64.tar.gzLinux 64-bit 二进制node-v10.19.0-linux-x64.tar.xzLinux PPC LE 64-bitnode-v10.19.0-linux-ppc64le.tar.xzLinux s390x 64-bitnode-v10.19.0-linux-s390x.tar.xzAIX 64-bitnode-v10.19.0-aix-ppc64.tar.gzSmartOS 64-bitnode-v10.19.0-sunos-x64.tar.xzARMv6 32-bitnode-v10.19.0-linux-armv6l.tar.xzARMv7 32-bitnode-v10.19.0-linux-armv7l.tar.xzARMv8 64-bitnode-v10.19.0-linux-arm64.tar.xz源码包node-v10.19.0.tar.gz注意该版本清单与后续版本的差异v10.19.0 时代还没有 macOS Apple Siliconarm64二进制、Windows ARM 安装包说明产物矩阵是随发布线演进的——这一点在仓库的下载清单生成脚本中有明确佐证该脚本通过semver.satisfies按版本号过滤产物例如 16.0.0的版本不输出 macOS Apple Silicon 二进制、 19.9.0不输出 Windows ARM 产物这正是本公告文件名的出处逻辑。SHASUMS 与 PGP 签名校验原公告以SHASUMS256.txt.asc的格式给出了全部产物的 SHA-256 摘要并用 PGP 签名包裹-----BEGIN PGP SIGNED MESSAGE-----/-----END PGP SIGNATURE-----校验方式为# 1. 先验证 PGP 签名用 Node.js 官方发布签名公钥 gpg --verify SHASUMS256.txt.asc # 2. 再核对目标文件哈希 grep node-v10.19.0-linux-x64.tar.xz SHASUMS256.txt.asc | sha256sum -c -完整 SHASUMS 原文来自 v10.19.0.md-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 9040615d614cf4039f4abbd62c799877c3c2efd517e4100d6f13064d368a25a0 node-v10.19.0-aix-ppc64.tar.gz b16328570651be44213a2303c1f9515fc506e0a96a273806f71ed000e3ca3cb3 node-v10.19.0-darwin-x64.tar.gz 91725d2ed64e4ccd265259e3e29a0e64a4d26d9d1cd9ba390e0cdec13ea7b02f node-v10.19.0-darwin-x64.tar.xz e664f44dae563abdf9fa1eda0ce404dcc2109eb4d3cb3d5305516dca29f4c3b5 node-v10.19.0-headers.tar.gz 82a1796cc87ce66db92cdaa0e54f67c1e0c130ec4549a9591b9ff0edff618d10 node-v10.19.0-headers.tar.xz 3510172797b63bb6a7247f62a241bdfcf51fef8b1134eb7d3a27973e2008e482 node-v10.19.0-linux-arm64.tar.gz 77bdbf859fc38e6e860efd479b0a7b7b6bd3e7cb05337e5cc5638251eb5d3a59 node-v10.19.0-linux-arm64.tar.xz 96fa937b8d9a8a4e3c606b33e2d71a971f2069dc3fe6a9a038e7fa74f9444568 node-v10.19.0-linux-armv6l.tar.gz 6f650dc7610d7fee1cb6b5bd7339e94858d8d10ab324e17afc4d551008b36f0a node-v10.19.0-linux-armv6l.tar.xz 838a92c63c0bf7d5bb63fbd62b5902e1281ea4bcccbd2de65a8d57edd9b003a1 node-v10.19.0-linux-armv7l.tar.gz 7eeddc7815885f665ecbfe2cf8ae2e71fab601eefece229673126ef8da2965f5 node-v10.19.0-linux-armv7l.tar.xz 65f9cf15490b33b45dff08e984a0786cf82dba7e7e9bbd74a2cffb63506061d5 node-v10.19.0-linux-ppc64le.tar.gz 6a0701f1b03321fb5789c0d6d6ccd5b11579001ad56635354b89fc423b080de0 node-v10.19.0-linux-ppc64le.tar.xz 273e264ee6338a7a520dd739620cb3b5388c86f522a77a1bfff011c55a3a2984 node-v10.19.0-linux-s390x.tar.gz 014c3fac92b0e3546a4d3de3b05bb00f3d6839f529455419cccc554f4c40409e node-v10.19.0-linux-s390x.tar.xz 36d90bc58f0418f31dceda5b18eb260019fcc91e59b0820ffa66700772a8804b node-v10.19.0-linux-x64.tar.gz 34127c7c6b1ba02d6d4dc3a926f38a5fb88bb37fc7f051349005ce331c7a53c6 node-v10.19.0-linux-x64.tar.xz 60eeec991f02e5564d4047387117c6c1884aa8d247c538dc93c51e134eec467f node-v10.19.0.pkg eb883a9c32b1352e42dafc503797a088fa881896a933785aff1b2e49643bde1f node-v10.19.0-sunos-x64.tar.gz 015f31e0b2adb742021bd61c0566b5bdbf95e0275200d609d9f64944779a4ae7 node-v10.19.0-sunos-x64.tar.xz db85b9992f1ec66629731d82f690987883dd2989abb4cc136eb65dd720b1bda8 node-v10.19.0.tar.gz 622721bc3e6b65faf7eb6a22bfb6e3e31817e42212aa6bf5a7991ea7d9b6f169 node-v10.19.0.tar.xz 46bdca8ce90ac091590c3473ed9ac9d7e0ae2010696ffb93474c272f4db218ba node-v10.19.0-win-x64.7z 210efd45a7f79cf4c350d8f575f990becdd3833cd922796a4c83b27996f5679e node-v10.19.0-win-x64.zip 8e90b780567178244c0716af43604f3ac4475e8cf21246f9c63386acddf7f841 node-v10.19.0-win-x86.7z afd176d4f022b6a5dbd4a908d42c6d85d4f739c040f65430ab3bf60b8f3b9a96 node-v10.19.0-win-x86.zip 6151538702d4bd106b66d28ce606f9faa2a8fc8baa50762bea0baec564b5e79e node-v10.19.0-x64.msi eae8dc6511bd467729fef043167a18ca0843c9d1bab17c31a20b197b44d06251 node-v10.19.0-x86.msi 00047df9589b6a860886d653ed9f817852615211a53b9a2563ff3c56a5090fbf win-x64/node.exe bfc277d24ebc27c87642b9f8fd2b4a312feaadf57a4a27e81734bcb49752163d win-x64/node.lib 3782acd379b59bca0009debdaa1bea3b28772518d7134c56279485c0a076d207 win-x64/node_pdb.7z 6de35811191c919c09cc11192a151ac0ecd76e3f5ec7f5f3f44d2a7d5feb177e win-x64/node_pdb.zip 5480ed6bb4c83a4284737ffeb4bfe27b5d342f182f2a52939bf0eee8d9c4fac4 win-x86/node.exe 3484dacb6a6aa89ec532eb9150e0a45a6c55453814cc2f32660504f120c7a42a win-x86/node.lib a1953bc23236083e508c9e42672c457c3a21dd5a97addad7729481a965696c69 win-x86/node_pdb.7z 12c7d6b8a6c138dd36063c939867ef98713b16ad89d277f319ffdc9ec3932f6d win-x86/node_pdb.zip -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEETtd49TnjY0x3nIfG1wYoSKGrAFwFAl47g3gACgkQ1wYoSKGr AFye0QfN0FiuaLnHvArA4TJoYOCj9fJouD6F0C/dkXEMRQ00bm3ui8lPNOMtXUg 7wvorCig8OcWrLHiGsW6d3U8Z2KxY63hg7Zyiu1JNKHyohvri/gTtRETuO5IANR sUuxD7BGJzXaafXinsfkz6sgN75E9PtogBPNMdbFuuwt53CYsVoh1o8kxhHAHn3L mG9wIQj2dPPaEV4zxGut4kkvjMlsC5VAxNkFAbwPd7EzIFlm0DIuYMlN8RSvTfOW s2hhFCoBB9nM8QtOo72MBMe8wnHGvIhUJpTDA9Cdh13MLZtM3KMAEg9z8gZiVCl4 qmYTB5KB8H20BwlvVjWnxYgbACSQ RWpz -----END PGP SIGNATURE-----在本仓库中的关联脉络本仓库正是承载这份公告的 Node.js 官网站点围绕 v10.19.0 可以找到完整的内容链路便于读者深挖发布公告本体v10.19.0.mdcategory 为releaselayout 为blog-post配套安全公告february-2020-security-releases.md 给出三个 CVE 的严重度定级、攻击场景与报告者并在文末将 v10.19.0 / v12.15.0 / v13.8.0 三个发布公告相互链接公告生成管线release-post/index.mjs 会从 changelog、SHASUMS256.txt.asc、dist 索引自动拼装这类公告模板见 template.hbs下载清单过滤逻辑见 downloadsTable.mjs本公告的结构Notable changes → Commits → 下载 → SHASUMS正是模板渲染的结果下载页组件站点下载页current.mdx通过Release.VersionDropdown、Release.PrebuiltDownloadButtons等组件动态呈现版本产物发布公告中的文件清单与其底层数据同源。升级建议与总结必须升级所有 10.x、12.x、13.x 用户都受三个 CVE 影响其中 CVE-2019-15605 为 Critical 级可致会话劫持、Cookie 投毒等建议尽快升级到对应发布线的修复版本保持严格解析默认的严格 HTTP 头解析应当保留。仅在确认上游或对端存在非法头、且无法快速修复时才用--insecure-http-parser全局或insecureHTTPParser: true按服务器/按流降级并明确其安全代价校验产物无论通过何种渠道获取二进制都先验证 PGP 签名与 SHASUMS 摘要防止供应链投毒。v10.19.0 是 Node.js 10 生命周期中一次典型的安全集中修复 严格化默认行为发布它既堵住了三条具体的攻击路径也通过 SEMVER-MINOR 特性把降级解析严格度做成了可控、可收敛的选项为后续各版本线的 HTTP 安全加固奠定了模式。【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。