Electron < v1.8.2-beta.4 远程命令执行漏洞(CVE-2018-1000006)

2018-01-26 17:27:56
Electron是基于Chromium 和Node.js,并使用HTML、JS、CSS来构建应用的框架。因为兼容 nodejs 包管理(npm),而受到了广大开发者的青睐。由于 Electron 的流行,受影响的软件甚至包括 Atom 编辑器, GitHub 客户端, VSCode 编辑器...
漏洞曝光时间:2018-01-26
漏洞风险程度:高危
漏洞曝光程度:已经公开
受漏洞影响软件以及版本:

使用低于 v1.8.2-beta.4 版本的Electron框架的应用。

受漏洞影响操作系统以及版本:

Windows

缓解或修复方案:
1、使用安全版本:
1.7.11 —— https://github.com/electron/electron/releases/tag/v1.7.11
1.6.16 —— https://github.com/electron/electron/releases/tag/v1.6.16
2、使用1.8.2-beta.4的补丁版本:
1.8.2 —— https://github.com/electron/electron/releases/tag/v1.8.2-beta.4
漏洞描述:

Electron是基于Chromium 和Node.js,并使用HTML、JS、CSS来构建应用的框架。因为兼容 nodejs 包管理(npm),而受到了广大开发者的青睐。由于 Electron 的流行,受影响的软件甚至包括 Atom 编辑器, GitHub 客户端, VSCode 编辑器, Slack 客户端这样用户颇多的 Windows 桌面应用。

漏洞发生的主要原因是 Windows 支持伪协议,而程序在注册伪协议时,通常会将协议后的字符串当成参数传入到应用的调用中去。如注册test_uri协议后,在注册表中:

HKEY_CLASSES_ROOT
test_uri
(Default) = "URL:test_uri Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "test_uri.exe,1"
shell
open
command
(Default) = "C:\Program Files\test_uri\test_uri.exe" "%1"、


其中%1表示将url作为参数传入到test_uri.exe中。
而传入的URL可以插入双引号来闭合,如传入:test_uri:1" --test "for

将会执行命令:

"C:\Program Files\test_uri\test_uri.exe" "test_uri:1" --test "for"

如此,问题来了,譬如 Chromium 自带命令参数 --gpu-launcher 是可以单独起进程的,这时如果构造

"C:\Program Files\test_uri\test_uri.exe" "test_uri:1" --gpu-launcher=cmd.exe /c start calc "test",在Chromium中访问该页面时,将会弹出计算器,达到命令执行效果。


详细解读可参考:

https://paper.seebug.org/515/?from=timeline&isappinstalled=0

https://xianzhi.aliyun.com/forum/topic/1990

最新资讯