木星链 木星链
Ctrl+D收藏木星链

NBS:首发|加密钱包安全不可小觑 谨防黑客远程控制设备

作者:

时间:1900/1/1 0:00:00

CertiK安全团队在Symbol桌面钱包中发现了一个远程执行代码漏洞,并将该漏洞提交到了Symbol漏洞赏金计划。Symbol对CertiK提交的报告非常重视,即刻采取了安全解决措施,并及时更新了代码。目前该问题已在v0.9.11版本中得到修复。

HackerOne报告目前尚未公开,但在征得了Symbol的允许后,本文将公开于此分享此次事件。在此,CertiK对Symbol提供的赏金奖励,以及对公开分享漏洞发现的许可表示感谢。

Symbol wallet是一个基于Electron的桌面应用程序,此次发现的漏洞与Electron配置有关。Electron是不是听起来很耳熟?但它可不是你在物理化学课上学到的那个电子。在展开漏洞分析之前,不妨先来看看本文中的Electron是什么,在安全层面有什么值得注意的事项。

Electron是由GitHub开发和维护的开源软件框架,它允许开发人员使用HTML,CSS和Javascript等网络技术来构建跨平台的桌面应用程序。

Electron通过将Chromium引擎和Node.js组合到一起来实现这一目标。一些知名的Electron应用程序包括Atom编辑器,VisualStudio Code和Slack等。

使用Electron的优点:

Web开发人员可以使用主要的Javascript框架库(包括Angular,React和Vue)构建能在不同操作系统上运行的跨平台桌面应用程序。此过程无需再花费时间学习新的编程语言。

调试基于Electron的应用程序比调试传统的桌面应用程序容易。Chromium中的DevTools扩展允许开发人员使用和Web应用程序相同的方式调试其基于Electron的应用程序。

安徽卫视首发数字藏品:金色财经报道,据安徽卫视官方公众号,安徽卫视发行“安徽卫视logo”创意数字藏品,据悉,这是中国首个广电领域内以卫视LOGO为主题的数字藏品。“该藏品将安徽卫视的经典LOGO为核心设计元素,打造了“赛博朋克、徽派水墨、绿色生态、科技未来、时尚浪漫”5款不同风格的藏品,藏品将以盲盒形式发行,发行总数为10000份。本次发行的“安徽卫视logo”作为“数字地标”共创计划首个安徽主题系列,后续将有新的玩法,持续通过数字化赋能实体文旅。[2022/5/21 3:32:30]

Electron的安全性以及Node.js的危险性

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

Electron提供许多辅助桌面应用程序开发的API,此外,它还可以使用Node.js模块。

Node.js允许基于Electron的应用支持比在Web浏览器中运行的Web应用更多的功能。但是,启用Node.js会带来一定的安全风险。如果攻击者可以找到在应用程序中注入JavaScript,就可以在目标的计算机上执行系统命令。

如果想要检查Electron应用程序是否在启用了Node.js,用户可以在开发控制台中发送模块导入功能“require”。在macOS中,控制台可以通过同时按“option + command + i”打开。

如果Node.js未被启动,控制台将返回错误消息 “require is not defined”:

如果Node.js被启用,控制台将返回"require"的相关信息:

欧易OKEx首发CSPR开盘涨幅达5900%,突破30美元:据欧易OKEx行情数据显示,CSPR突破30美元关口,占据OKEx涨幅榜榜首。CSPR上线欧易OKEx开盘涨幅高达5900%。欧易OKEx作为CSPR首发平台,当前成交量为37.5万CSPR。[2021/5/11 21:49:28]

在开发控制台中发送以下命令,就能在macOS中弹出计算器:

require('child_process').exec('/System/Applications/Calculator.app/Contents/MacOS/Calculator')

为了减轻因为注入JavaScript而引起的远程代码执行的风险,从版本5.0.0开始,Electron默认禁用了程序对Node.js模块的访问。开发人员可以通过在配置文件中将“nodeIntegration”设置为true来启用对Node.js模块的使用,从安全角度来说并不推荐。

值得注意的是在2018年,Electron被发现有一个严重漏洞可被攻击者利用来访问Node.js模块,即使在配置中已经被禁止。参考文献1也对此进行了详细说明,因此在开发时请务必使用最新版本的Electron。

在了解了基于Electron的应用程序相关特征之后,现在可以深入探讨在Symbol桌面钱包中发现的漏洞。

Symbol桌面钱包是开源的,可以在其Github(参考文献2)中找到该应用的源代码。build.js(参考文献3)是其应用程序的Electron构建配置文件。下面这段Build.js中的代码检查程序是否在“darwin”(macOS)上运行。如果不是,app.on将使用“createWindow”函数创建浏览器窗口。

....code...  

if (process.platform === 'darwin') { 

Gate.io Startup首发项目ETHA已认购成功并上线交易:据官方公告,Gate.io Startup 首发项目ETHA Lend(ETHA)已于2021年3月5日14:00认购成功。Gate.io将根据每个人的下单情况和每个下单币种的认购系数进行ETHA分发,并将于3月8日19:30开通ETHA充值服务,于3月8日20:00开通ETHA交易并随后开通提现服务。据悉,此次认购6小时内下单同等对待,共有4,717人下单,总价值超过1,000万美金,认购系数约为0.01。[2021/3/6 18:20:52]

    app.on('ready',createMac) 

  } else { 

    app.on('ready',createWindow) 

 

....code... 

在“createwindow”函数中,函数内部的“ windowOptions”变量包含浏览器窗口配置选项。注意,红色部分显示的行将“nodeIntegration”变量设置为true,这表示此应用程序启用了Node.js。

...code... 

function createWindow(){      

    const windowOptions = {   

      minWidth: width,   

      minHeight: height,   

聚币已于11月30日首发上线OVR 开盘涨幅达328.5%:聚币Jubi已于2020年11月30日21:00(UTC+8)首发上线OVR ,开盘最高涨幅达328.5%。首发价0.07USDT,最高价0.3USDT。

OVR是一个去中心化的网络平台,旨在通过增强现实(AR)的使用来联合现实世界和虚拟世界。该平台由1.6万亿名为OVR土地的独特六边形组成,可以通过去中心化的方式拍卖、交易或租赁。每个OVR土地都是一个空间性域名(NFT),类型为ERC-721,可以使用IBCO发行的OVR token购买。[2020/11/30 22:36:57]

      width: width,   

      height: height,   

      title: app.getName(),   

      titleBarStyle: 'hiddenInset',   

      webPreferences: {   

        nodeIntegration: true,    

      },   

      resizable: true,   

WBF交易所将于7月7日首发CSB:据官方消息,新加坡时间2020年7月7日,WBF交易所将正式上线CSB,并于当日10时在开放区上线CSB/USDT交易对。

超神源生态链是一个为应用而生的公链,其中包括(源币CSA,子币CSB-CSC-CSD)将通过搭建完善的基础平台以及商业应用的更新迭代,逐步形成”区块链+金融级应用+实体落地应用“相结合的数字经济生态系统。源计划CSA是整个生态链的根源,又称源币。整个生态都是通过CSA进行延伸及发散。[2020/7/1]

    }   

....code...   

    mainWindow= newBrowserWindow(windowOptions) 

}   

根据build.js配置文件,可以了解到如果此应用在Windows操作系统上运行,Node.js将被启用。为了利用启用的Node.js,攻击者需要在应用程序中注入任意的JavaScript。攻击者一般可以通过利用XSS(跨站点脚本)漏洞或者在当前Electron窗口中加载任何包含攻击者注入的JavaScript的网站来实现攻击。

Symbol桌面钱包(v9.7版)提供了浏览“新闻”的功能,只要用户点击新闻中的链接,应用程序便会从钱包窗口加载外部网站(图中展示的是Github)。

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

为了演示该漏洞利用的流程,技术人员在个人网站上托管了以下代码段。在Github上可以很容易的放置指向其网站的URL。当“nodeIntegration”设置为true并启用Node.js,在“child_process”模块的帮助下可以将任意的JavaScript执行升级为远程代码执行。

用户访问包含payload的页面,并点击页面里的“Close”按钮后,用户的计算机上将弹出计算器。在目标系统中弹出计算器是证明成功利用代码执行漏洞的一种方法。

Proof-of-Concept(视频位于页首):

<!DOCTYPEhtml> 

<h1>click me</h1> 

<button type="button" onClick="rce_calc()">Submit</button> 

<script> 

functionrce_calc(){ 

const{ exec } = require('child_process'); 

exec('calc'); 

}  

</script> 

Symbol在修复中将“nodeIntegration”设置为false,禁止了JavaScript对Node.js模块的访问。此更改已经反映在了他们当前的build.js(参考文献4)文件中。他们还更新了“新闻”功能,停止了将远程网站加载到Electron窗口中的行为。

做为安全研究员,当在一个程序中发现漏洞,我们总会尝试去探索此类漏洞是否在别的应用中存在。通过互联网搜索,CertiK安全团队发现了另一个基于Electron的加密货币钱包: MyCrypto。在测试时,技术人员发现MyCrypto将“nodeintegration”设置为true,并启用了Node.js。虽然没有找到攻击此配置的办法。但是我们不应该给攻击者将“self-xss”转化为命令代码执行的机会。

CertiK旨在为加密社区的安全做出贡献,并帮助企业保护用户资产。技术人员在对方的Github 仓库中提交了Issue。

MyCrypto十分重视,并回复该漏洞将在下一版本中修复。

Electron本身是非常优秀的软件框架,但开发人员要注意不要因为配置错误而使程序暴露在危险之中。在产品中使用新技术时要小心,要保持谨慎并了解潜在的安全风险。这里CertiK安全团队总结了几个要点来提高基于Electron的应用程序的安全性:

在生产版本中移除对development console的访问。

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

使用“event.preventDefault()来禁止应用程序加载外部网页。

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

持续使用最新版本的Electron框架,并保持更新。

开发Electron应用程序时,请务必阅读参考官方安全指南(参考文献7)。其中包含了可以提高Electron的应用的安全性的建议。

无论是由内部安全团队还是第三方公司执行安全审计和渗透测试,对于确保系统的安全性都是至关重要的。专业的安全人员会试图从“恶意黑客”的角度来破坏系统,帮助在真正的黑客利用漏洞之前识别和补救漏洞。

对于专业安全服务提供商而言,要提高安全测试水平的唯一途径就是不断学习。CertiK的安全工程师自始至终都在通过广泛涉猎不同目标来提高自身的渗透测试技能,从而为客户提供最佳的渗透测试服务。

参考文献:

https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/cve-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.js#L237

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

https://www.electronjs.org/docs/tutorial/security#5-do-not-disable-websecurity

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

了解更多

General Information: info@certik.org

Audit & Partnerships: bd@certik.org

Website: certik.org

Twitter: @certik.org

Telegram: t.me/certik.org

Medium:medium.com/certik

币乎:bihu.com/people/1093109

标签:NBSBSPELERONnbs币发行量BSP币MELE价格Electroneum

火币交易所热门资讯
NFT:7.19 午间行情:留给多头的时间不多了

比特币继续在9150美金附近震荡,行情没有太多变化,这是日线MA83线被跌破的第四天,回溯一下比特币整个走势,日线跌破MA83线后,最起码也会下跌百分之五以上,多头在这时候还不发力.

1900/1/1 0:00:00
区块链:金色趋势丨BTC冲高回落 或为低吸机会

昨夜美股低开,比特币也联动调整,再次跌破60日均线和20日均线支撑,最低跌至9100美金附近,不过调整量能一般,主力并未大量出货,持续大幅下砸可能性不大,下方支撑8900-9000区间.

1900/1/1 0:00:00
CFT:美国CFTC鼓励比特币期货?嘉楠耘智高层变动影响如何?

据火币行情显示,昨日晚间BTC价格拉升,最高触及9470随后回调,今日上午再度上冲未过前高开始下落,整体形成震荡下行的回调格局。日线图均线聚拢,形成上升通道.

1900/1/1 0:00:00
比特币:金色观察丨Visa加密主管为年轻人理财支招:选择加密货币和DeFi

金色财经 区块链6月29日讯  Visa加密负责人库伊·谢菲尔德(Cuy Sheffield)在推特上提出了一个问题:如果你现在16岁,能够以自由开发者或设计师的身份在互联网上赚钱.

1900/1/1 0:00:00
区块链:德勤2020技术趋势报告 : 洞察5大重点趋势和12种宏观科技力量

导语德勤日前发布中文版《2020技术趋势报告》,这是德勤第十一年发布技术趋势年度报告。过去十年来,德勤一直在跟踪数字体验、数据分析、云、数字现实、区块链、IT业务、技术风险等领域.

1900/1/1 0:00:00
DASH:欧科云链OKLink正式上线“隐秘的DASH”区块链浏览器

北京时间2020年7月13日,欧科云链OKLink正式上线DASH区块链浏览器,该浏览器延续了其他币种浏览器基本功能的同时,OKLink DASH浏览器全网首推DASH矿池实时算力排名数据.

1900/1/1 0:00:00