Node.js因为OpenSSL安全问题推迟更新

之前Node.js基金会曾承诺将修复两个危险漏洞,并更新所有长期维护和稳定的Node.js分支。上周补丁已经发布并预计在本周发布更新,但为了包含最新的OpenSSL版本,基金会决定推迟更新,这是因为OpenSSL中的漏洞也影响了Node.js。

上述提到的漏洞分别为拒绝服务漏洞(CVE-2015-8027)和内存越界访问漏洞(CVE-2015-6764)。

拒绝服务漏洞影响了从 v0.12.x 至 v5.x 的所有Node.js版本。将其标记为危险漏洞是因为外部恶意攻击者可以通过此漏洞关闭运行在指定系统的Node.js服务。在一定的条件下,HTTP SOCKET可能无法获取到与之相关的解析器,但一个流水线请求可能会在没有解析器的情况下触发暂停或者恢复操作,这将会抛出uncaughtException。对外提供HTTP服务的被影响用户应该尽快升级到已修复版本,具体为:Node.js 0.12.x 应升级至 Node.js 0.12.9 (LTS);Node.js 4.x 包括 LTS Argon 应升级至 Node.js 4.2.3 Argon (LTS);Node.js 5.x 应升级至 Node.js 5.1.1 (Stable)。

访问越界漏洞被发现于V8引擎的JSON.stringify()实现中,json-stringifier.h的函数BasicJsonStringifier::SerializeJSArray未正确加载数组元素,远程攻击者通过构造的JS代码,利用此漏洞可造成拒绝服务(越界内存访问)。。这个问题被Google Chrome归类为非常严重的漏洞并在本周Chrome稳定版的升级中被修复。该漏洞对于Node.js用户来说风险较低,因为只有第三方的特定JavaScript代码在应用中被执行才会触发。只有对外提供服务且可能执行不信任的JavaScript代码的用户会有风险,但所有用户都应进行升级,具体为:Node.js 4.x 包括 LTS Argon 应升级至 Node.js 4.2.3 Argon (LTS);Node.js 5.x 应升级至 Node.js 5.1.1 (Stable)。

OpenSSL中的漏洞也会影响Node.js。尽管Node.js 0.10.x 没有被上述问题影响,但由于它依赖于OpenSSL v1.0.1,而OpenSSL v1.0.1 和 1.0.2(CVE-2015-3194)可能在证书检查过程中被提供了使用RSA PSS算法生成的存在缺陷的 ASN.1 签名而导致崩溃,攻击者可以利用该缺陷使用客户端授权进行拒绝服务攻击Node.js服务器,所以还是需要升级。Node.js 4.x LTS 5.x 同样受到了OpenSSL 1.0.2中Montgomery平方过程中的错误的影响,针对RSA和DSA进行攻击是有可能的,尽管非常困难。

Node.js基金会拥有最流行的JavaScript服务器平台的管辖权。而OpenSSL则完全是一个独立的项目,由自己的团队维护。Heatbleed事件已经表明,OpenSSL被广泛用于各种应用,所以更新OpenSSL通常会引起各种连锁反映,这就是为什么OpenSSL步伐缓慢,Node.js基金会不得不等待,推迟更新。如果基金会不等待按照计划发布了更新,几天后再同修复的OpenSSL发布新的版本,这将造成更多混乱,例如一些开发者可能错过第二次更新的提示,或者将意识不到过期的OpenSSL的影响。

许多开发人员甚至都不知道他们应用中的所有组件,他们不知道调用了哪些libraries,更别说这些被调用的libraries可能依赖了其他libraries,这导致了当项目中出现了有漏洞的代码的时候很难通知他们。开源代码是普遍紧密联系着的,任何依赖关系树中的代码出现问题都可能有着深远而广泛的影响。

感谢魏星对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者(已满),InfoQ读者交流群(#2)InfoQ好读者)。

你可能感兴趣的:(Node.js因为OpenSSL安全问题推迟更新)