当前位置:首页区块链电子桌面钱包远程代码执行漏洞分析

电子桌面钱包远程代码执行漏洞分析

电子桌面钱包远程代码执行漏洞分析

Certik安全团队在symbol桌面钱包中发现一个远程执行代码漏洞,并将该漏洞提交给symbol漏洞奖励计划。并及时更新了安全措施。这个问题已经在0.9.11版本中修复了。

hackerone的报道还没有公开,但是本文将在symbol允许的情况下分享这一事件。在这里,certik感谢symbol的慷慨和公开共享漏洞发现的许可。

电子桌面钱包远程代码执行漏洞分析1

Symbol wallet是一个基于电子的桌面应用程序。这次发现的漏洞与电子的配置有关。电子听起来熟悉吗?但这不是你在物理化学中学的电子。在开始漏洞分析之前,我们不妨先看看本文中的electron是什么,以及在安全级别上有哪些防范措施。

什么是电子

电子桌面钱包远程代码执行漏洞分析2

Electron是GitHub开发和维护的开源软件框架。它允许开发人员使用HTML、CSS和JaaScript来构建跨平台的桌面应用程序。

电子将铬发动机与节点.js一起来实现这个目标。一些著名的电子应用程序包括atom编辑器、isualstudio代码和slack。

使用电子的优点:

Web开发人员可以使用主要的JaaScript框架库(包括angular、react和Vue)来构建可以在不同操作系统上运行的跨平台桌面应用程序。这个过程不需要花时间学习新的编程语言。

调试基于电子的应用程序比调试传统的桌面应用程序更容易。chromium中的detools扩展允许开发人员以与web应用程序相同的方式调试基于电子的应用程序。

电子安全

以及节点.js风险

电子桌面钱包远程代码执行漏洞分析2

基于electron的应用程序本质上是一个web应用程序,因此它包含常见的web漏洞,如跨站点脚本(XSS)、SQL注入、身份验证和授权漏洞。

Electron提供了许多API来帮助桌面应用程序开发,此外,它还可以使用节点.js模块化。

节点.js允许基于电子的应用程序支持比在web浏览器中运行的web应用程序更多的功能。但是,启用节点.js这会带来一定的安全隐患。如果攻击者能够找到将JaaScript注入应用程序的方法,他就可以在目标计算机上执行系统命令。

如果要检查电子应用程序是否已启用节点.js用户可以在开发控制台发送模块导入功能。在MacOS中,可以同时按“option+Command+I”打开控制台。

如果节点.js如果不启动,控制台将返回错误消息“require is not DeFined”:

电子桌面钱包远程代码执行漏洞分析3

如果节点.js如果启用,控制台将返回“require”信息:

电子桌面钱包远程代码执行漏洞分析4

在开发控制台中发送以下命令以在MacOS中弹出计算器:

需要(’子进程’).exec(’/System/Applications/Calculator.app/Contents/MacOS/Calculator)

电子桌面钱包远程代码执行漏洞分析5

为了降低由于JaaScript注入而导致的远程代码执行风险,electron从5.0.0版起默认禁用了程序对节点.js模块访问。开发人员可以启用节点.js从安全角度来看,不建议使用模块。

值得注意的是,2018年,electron被发现存在可被攻击者利用的严重漏洞节点.js模块,即使它在配置中被禁用。参考文献1中也描述了这一点,所以在开发时一定要使用最新版本的electron。

符号钱包

远程执行代码漏洞演示

电子桌面钱包远程代码执行漏洞分析2

在了解了基于电子的应用程序的特性之后,是时候深入研究symbol桌面钱包中的漏洞了。

Symbol desktop wallet是开源的,应用程序的源代码可以在其GitHub中找到(参考文献2)。构建.js(3) 是应用程序的电子构建配置文件。下一段构建.js中的代码检查程序是否在“Darwin(MacOS)上运行。如果没有,应用程序打开使用创建窗口功能创建浏览器窗口。

…代码。。。

如果(流程.平台===’达尔文’){

应用程序打开(“准备就绪”,createMac)

}其他{

应用程序打开(“就绪”,createWindow)

…代码。。。

在“创建窗口”函数中,函数中的“窗口选项”变量包含浏览器窗口配置选项。请注意,红色部分显示的行将quo;nodeintegration变量设置为true,表示应用程序已启用节点.js。

…代码。。。

函数createWindow(){

常量窗口选项={

minWidth:宽度,

最小高度:高度,

宽度:宽度,

身高:身高,

标题:应用程序名称()

titleBarStyle:’隐藏集’,

Web首选项:{

nodeIntegration:对,

}

可调整大小:真,

}

…代码。。。

mainWindow=newBrowserWindow(窗口选项)

}

根据构建.js配置文件中,您可以了解如果此应用程序在windows操作系统上运行,节点.js将启用。利用节点.js,攻击者需要将任意JaaScript注入到应用程序中。攻击者通常可以利用XSS(跨站点脚本)漏洞或加载包含攻击者在当前电子窗口中注入的JaaScript的任何网站。

Symbol desktop wallet(9.7版)提供浏览新闻的功能。只要用户点击新闻中的链接,应用程序就会从钱包窗口加载外部网站(图中显示的是GitHub)。

电子桌面钱包远程代码执行漏洞分析6

那么,漏洞是如何被利用的呢?

为了演示利用漏洞的过程,技术人员在个人网站上托管了以下代码片段。在GitHub上,可以很容易地将URL放到其网站上。当nodeintegration设置为true并启用时节点.js,在“child”中,在“process”模块的帮助下,您可以将任何JaaScript执行升级为远程代码执行。

当用户访问包含有效负载的页面并单击页面中的“关闭”按钮时,计算器将在用户的计算机上弹出。在目标系统中弹出计算器是证明成功利用代码执行漏洞的一种方法。

POC视频

概念证明:

lt;!DOCTYPEhtmlgt;

lt;h1gt;单击我lt;/h1gt;

lt;button type=“button”onClick=“rce_ucalc()”gt;提交lt;/buttongt;

lt;脚本gt;

函数计算(){

const{exec}=require(’子进程’);

执行(“计算”);

}

lt;/scriptgt;

Symbol在修复程序中将“nodeintegration”设置为false,这将阻止JaaScript访问节点.js模块访问。这一变化反映在他们目前的构建.js(参考文献4)。他们还更新了“新闻”功能,停止将远程网站加载到电子窗口中。

探索基于电子的

加密货币钱包

电子桌面钱包远程代码执行漏洞分析2

作为一个安全研究者,当一个程序中发现一个漏洞时,我们总是试图找出这个漏洞是否存在于其他应用程序中。通过互联网搜索,certik安全团队发现了另一个基于电子的加密货币钱包:mycrypto。在测试期间,技术人员发现mycrypto已将quot;nodeintegration设置为true并启用节点.js。虽然找不到攻击此配置的方法。但是,我们不应让攻击者有机会将“self XSS”转换为命令代码执行。

Certik旨在为加密社区的安全做出贡献,并帮助企业保护用户资产。技术人员在另一方的GitHub存储库中提交了该问题。

Mycrypto对此非常重视,并答复说,该漏洞将在下一个版本中修复。

关键点

电子桌面钱包远程代码执行漏洞分析2

Electron本身是一个非常好的软件框架,但是开发人员应该小心不要因为配置错误而将程序暴露在危险中。在产品中使用新技术时要小心谨慎,要注意潜在的安全风险。在此,certik安全团队总结了提高基于电子的应用程序安全性的几个关键点:

在生产版本中删除对开发控制台的访问。

除非应用程序是绝对必要的,否则将nodeintegration设置为false。

“”使用(U);事件.预防默认()以防止应用程序加载外部网页。

使用诸如react、Vue或angular(2+)等前端框架开发应用程序,以减少应用程序包含XSS(跨站点脚本)漏洞的机会。

继续使用最新版本的electron framework并保持更新。

当开发电子应用时,一定要阅读官方安全指南(参考文献7)。它包含了提高电子应用安全性的建议。

无论是内部安全团队还是第三方公司进行安全审计和渗透测试都是保证系统安全的关键。专业安全人员会试图从“恶意黑客”的角度破坏系统,帮助识别和修复漏洞,以免真正的黑客利用这些漏洞。

对于专业的安全服务提供商来说,提高安全测试水平的唯一途径就是不断学习。Certik的安全工程师一直在通过广泛的目标来提高他们的渗透测试技能,为客户提供最好的渗透测试服务。

电子桌面钱包远程代码执行漏洞分析7

参考文献:

https://www.trustwae.com/en-us/resources/blogs/spiderlabs-blog/ce-2018-1000136-electron-nodeintegration-bypass/

https://github.com/nemfoundation/symbol-desktop-wallet

https://github.com/nemfoundation/symbol-desktop-wallet/blob/14ddfd44fe9a54b54f8261dfaa68b2f88be211ce/public/build.js

https://github.com/nemfoundation/symbol desktop wallet/blob/master/public/build.jsL237

https://github.com/terra-project/station-electron/blob/5a919b87323c9d1d9c76f7c4a7DeFif5d731d235e/public/electron.js

https://www.electronjs.org/docs/tutorial/security#5-不禁用Web安全性

https://www.electronjs.org/docs/tutorial/securit

温馨提示:

文章标题:电子桌面钱包远程代码执行漏洞分析

文章链接:https://www.btchangqing.cn/47624.html

更新时间:2020年07月02日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

电子桌面钱包远程代码执行漏洞分析8
区块链

维思合同遭黑客攻击分析

2020-7-2 21:21:44

区块链

巴比特的访谈|新加坡金融管理局首席财务技术官:领先的区块链创新,为什么选择新加坡?

2020-7-2 21:59:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索