内容提要
Node.js发布了安全更新,修复了会话事件顺序、HTTP/2设置帧处理和N-API相关的漏洞。所有受支持版本(10.x、12.x、14.x)均存在安全风险,建议用户关注更新和安全公告。
延伸解读
会话事件顺序漏洞的影响范围
该漏洞导致'session'事件可能在'secureConnect'事件之前触发,此时连接可能尚未授权。如果会话被保存,攻击者可能利用会话票据建立已授权的连接。https代理会缓存会话,因此受此漏洞影响。此漏洞影响Node.js 12.x和14.x,不影响10.x。
HTTP/2设置帧拒绝服务风险
接收过大的HTTP/2 SETTINGS帧会消耗100% CPU来处理所有设置,阻塞其他活动。默认情况下,HTTP/2会话帧限制为32个设置,可通过maxSettings选项配置。此漏洞影响Node.js 10.x、12.x和14.x。
N-API字符串函数缓冲区溢出
使用非NULL的buf且bufsize为0调用napi_get_value_string_latin1()、napi_get_value_string_utf8()或napi_get_value_string_utf16()时,整个字符串值会被写入buf,可能超出缓冲区长度。目前尚未报告利用案例,但建议开发者注意。此漏洞影响node-addon-api 1.x和2.x,当原生插件使用不支持内部N-API的Node.js版本构建时。
ICU漏洞及修复策略
在International Components for Unicode (ICU) for C/C++ 66.1及之前版本中发现一个整数溢出漏洞,导致UnicodeString::doAppend()函数中出现基于堆的缓冲区溢出。修复已应用于10.x版本,尽管在10.x中尚无已知触发方式。12.x和14.x不受影响,因为它们不包含受影响的ICU版本。
Q&A
Node.js的安全更新修复了哪些漏洞?
Node.js的安全更新修复了会话事件顺序、HTTP/2设置帧处理和N-API相关的漏洞。
会话事件的触发顺序有什么变化?
会话事件现在仅在安全连接事件之后触发,并且仅适用于已授权的连接。
接收过大的HTTP/2设置帧会导致什么问题?
接收过大的HTTP/2设置帧可能导致CPU使用率达到100%,阻塞其他活动。
哪些Node.js版本受到安全风险影响?
所有受支持的Node.js版本(10.x、12.x、14.x)均存在安全风险。
napi_get_value_string_*()函数的漏洞是什么?
在特定条件下,调用napi_get_value_string_*()函数可能导致缓冲区溢出。
如何获取Node.js的安全公告和更新信息?
用户可以订阅nodejs-sec邮件列表以获取Node.js的安全公告和相关更新信息。