开源执行环境Node.js 10月21日为22.x、24.x和26.x三个版本线发布安全更新,修补10个漏洞;程序语言Go 10月20日也发布紧急更新,拒绝任何经过8个中间证书机构密钥的证书链。台湾数位发展部资通安全署10月22日说,已透过资安警讯等联防网络,要求各级公务机关和关键基础设施限期完成清查和修补。
受影响的是用Node.js和Go写成的网站和服务:资安署说,Node.js广泛用于网页前端工具链、后端微服务和各类API服务器。资安署说,Node.js这次修补的10个漏洞里有4个属高风险;最严重的是Brotli解码器的越界写入漏洞,Node.js说它可能被用来远程执行代码,只要程序解压攻击者控制的Brotli数据就会暴露。
公开的概念验证程序只在故意削弱的测试版本上做到执行代码;到10月22日,还没有这个漏洞在实际中被利用的报告。修补后的版本是22.23.4、24.22.1和26.12.1;20.x和更早的版本已停止支持,不会得到修补,这个漏洞也没有临时的应对办法。
Go说,它拦截这8个密钥,是因为它们的运作有“具体的安全疑虑”,没有点名是哪家证书机构;Go团队按最紧急的流程处理这次修补,建议立即升级。有人在Go的议题页上把这8个密钥对上了印度证书机构eMudhra的中间证书(未经证实);Mozilla 10月17日已把eMudhra签发的6个中间证书加入Firefox的拦截清单。资安署说,Go这次是为了应对印度一家证书机构8个私钥外泄的重大资安事件。Node.js这次的更新也不再信任这8个密钥。
资安署提醒,用Go写的系统升级工具链后,必须把现有程序重新编译、重新部署,拦截机制才会写进可执行文件;只更新环境、不重新编译,系统仍有风险。
Go的证书验证器不做吊销检查,也不读浏览器用的拦截清单,拦截密钥只能随新版本发布;Node.js默认也不做吊销检查,这次更新以前,经过这些密钥的证书链照样通过。证书经过这8个密钥签发的网站和服务,要换别的中间证书,重新编译的Go程序才连得上。eMudhra有两个根证书仍在Chrome、苹果和Mozilla的信任列表里。
茉莉花观察
这一节是茉莉花的看法,依据是上文的事实。
我们的分析我们认为,这次更难处理的是证书这一项,而不是Node.js的漏洞。这是因为,Node.js的漏洞升级到修补版本就能堵上;证书这一项,拦截要随新版本发布,Go程序还得重新编译、重新部署,用到这8个密钥的网站和服务还得换中间证书。
不同看法有人会说,Node.js的这个漏洞被说成能远程执行代码,风险被夸大了,因为公开的概念验证程序只在故意削弱的版本上做到。我们同意目前没有实际被利用的报告,但仍应尽快升级。这是因为,所有仍受支持的版本线都受影响,Node.js里也没有临时的应对办法。
前瞻eMudhra会不会公开说明这批密钥出了什么问题。我们判断,到2026年11月30日(含当天),eMudhra会公开说明这8个中间证书密钥出了什么问题。这是因为,几天之内,Mozilla拦截了eMudhra签发的6个中间证书,Go和Node.js拦截了同一批8个中间证书机构密钥,而eMudhra的根证书还在Chrome、苹果和Mozilla的信任列表里;我们认为,要保住这些信任,它可能需要公开交代。
综合中央通讯社、Node.js项目、The Hacker News报道



