http://www.7klian.com

Electron-based桌面钱包长途代码执行裂痕阐明

Electron是什么
</script> 
<button type=”button” onClick=”rce_calc()”>Submit</button> 
  } else { 
https://www.electronjs.org/docs/tutorial/security#5-do-not-disable-websecurity
function createWindow(){      
按照build.js设置文件,可以相识到假如此应用在Windows操纵系统上运行,Node.js将被启用。为了操作启用的Node.js,进攻者需要在应用措施中注入任意的JavaScript。进攻者一般可以通过操作XSS(跨站点剧本)裂痕可能在当前Electron窗口中加载任何包括进攻者注入的JavaScript的网站来实现进攻。
Electron的安详性以及Node.js的危险性
值得留意的是在2018年,Electron被发明有一个严重裂痕可被进攻者操作来会见Node.js模块,纵然在设置中已经被克制。参考文献1也对此举办了具体说明,因此在开拓时请务必利用最新版本的Electron。
…code… 
const{ exec } = require(‘child_process’); 

为了减轻因为注入JavaScript而引起的长途代码执行的风险,从版本5.0.0开始,Electron默认禁用了措施对Node.js模块的会见。开拓人员可以通过在设置文件中将“nodeIntegration”配置为true来启用对Node.js模块的利用,从安详角度来说并不推荐。
利用Electron的利益:
为了演示该裂痕操作的流程,技能人员在小我私家网站上托管了以下代码段。在Github上可以很容易的安排指向其网站的URL。当“nodeIntegration”配置为true并启用Node.js,在“child_process”模块的辅佐下可以将任意的JavaScript执行进级为长途代码执行。
假如Node.js未被启动,节制台将返回错误动静 “require is not defined”:

Symbol在修复中将“nodeIntegration”配置为false,克制了JavaScript对Node.js模块的会见。此变动已经反应在了他们当前的build.js(参考文献4)文件中。他们还更新了“新闻”成果,遏制了将长途网站加载到Electron窗口中的行为。
Symbol桌面钱包是开源的,可以在其Github(参考文献2)中找到该应用的源代码。build.js(参考文献3)是其应用措施的Electron构建设置文件。下面这段Build.js中的代码查抄措施是否在“darwin”(macOS)上运行。假如不是,app.on将利用“createWindow”函数建设欣赏器窗口。
DOCTYPEhtml> 

      },   
· Web开拓人员可以利用主要的Javascript框架库(包罗Angular,React和Vue)构建能在差异操纵系统上运行的跨平台桌面应用措施。此进程无需再耗费时间进修新的编程语言。
      minWidth: width,   
· 利用“event.preventDefault()来克制应用措施加载外部网页。
假如想要查抄Electron应用措施是否在启用了Node.js,用户可以在开拓节制台中发送模块导入成果“require”。在macOS中,节制台可以通过同时按“option + command + i”打开。
参考文献:
functionrce_calc(){ 
 

在相识了基于Electron的应用措施相关特征之后,此刻可以深入探讨在Symbol桌面
钱包中发明的裂痕。
require(‘child_process’).exec(‘/System/Applications/Calculator.app/Contents/MacOS/Calculator’)

CertiK安详团队在Symbol桌面钱包中发明白一个长途执行代码裂痕,并将该裂痕提交到了Symbol裂痕赏金打算。Symbol对CertiK提交的陈诉很是重视,立刻采纳了安详办理法子,并实时更新了代码。今朝该问题已在v0.9.11版本中获得修复。

用户会见包括payload的页面,并点击页面里的“Close”按钮后,用户的计较机大将弹出计较器。在方针系统中弹出计较器是证明乐成操作代码执行裂痕的一种要领。
exec(‘calc’); 

https://github.com/nemfoundation/symbol-desktop-wallet/blob/master/public/build.js#L237
    app.on(‘ready’,createMac) 
 
https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/cve-2018-1000136-electron-nodeintegration-bypass/
https://www.electronjs.org/docs/tutorial/securit

Electron是由GitHub开拓和维护的开源软件框架,它答允开拓人员利用HTML,CSS和Javascript等网络技能来构建跨平台的桌面应用措施。

HackerOne陈诉今朝尚未果真,但在征得了Symbol的答允后,本文将果真于此分享此次事件。在此,CertiK对Symbol提供的赏金嘉奖,以及对果真分享裂痕发明的许可暗示感激。

….code… 
MyCrypto十分重视,并回覆该裂痕将在下一版本中修复。
Symbol桌面钱包(v9.7版)提供了欣赏“新闻”的成果,只要用户点击新闻中的链接,应用措施便会从钱包窗口加载外部网站(图中展示的是Github)。

· 开拓Electron应用措施时,请务必阅读参考官方安详指南(参考文献7)。个中包括了可以提高Electron的应用的安详性的发起。
if (process.platform === ‘darwin’) { 
Node.js答允基于Electron的应用支持比在Web欣赏器中运行的Web应用更多的成果。可是,启用Node.js会带来必然的安详风险。假如进攻者可以找到在应用措施中注入JavaScript,就可以在方针的计较机上执行系统呼吁。
基于Electron的应用措施本质上是一个Web应用措施,因此它包括常见的Web裂痕,譬喻跨站点剧本(XSS)、Sql注入、身份验证和授权裂痕。
· 利用React,,Vue或Angular(2+)等前端框架开拓应用措施,以淘汰应用措施包括XSS(跨站点剧本)裂痕的时机。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读