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的應用程序。
Gate.io將首發上線MER認購Startup項目:據官方公告,Gate.io將于5月13日22:00 至5月14日12:00開啟Startup項目Mercurial Finance(MER)認購通道,14小時內有效下單同等對待。
用戶需要達到VIP1和以上級別才能參與認購,VIP等級越高的用戶認購額度越高。用戶下單后到結束認購后2小時內,請務必保證現貨交易賬戶中有不低于認購金額的足夠金額,金額不足將自動排除在有效訂單之外。[2021/5/12 21:52:42]
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"的相關信息:
聚幣Jubi將于3月8日13:00首發上線ETHA:據官方消息,聚幣Jubi將于2021年3月8日13:00(UTC+8)首發上線ETHA,開通ETHA/USDT幣幣交易市場。充值將于2021年3月6日13:00(UTC+8)開啟。現存入ETHA即可獲得聚幣“存幣即挖礦”雙倍獎勵。
ETHA Lend是由以太坊和波卡支持的跨鏈收益優化協議。該算法使用多個數據點,例如當前的gas fee,收益的移動平均值以及資產的供應預算,以利用優化技術獲得最佳價值和投資回報。該協議是可組合的,可以集成任何收益聚合器或流動性協議以提供具有成本效益的收益。[2021/3/6 18:19:51]
在開發控制臺中發送以下命令,就能在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”函數創建瀏覽器窗口。
霍比特交易所首發項目WOZX 24小時漲幅達78.68%:據霍比特HBTC行情頁顯示,平臺內首發項目WOZX(EFFORCE)持續上漲,截止快訊時間,24小時漲幅達78.68%,上線后累計漲幅達2519.72%,暫報價2.61USDT。
據悉,EFFORCE是致力于使每個人參與并從全球節能項目中受益的區塊鏈平臺。Efforce 結合了區塊鏈技術和其團隊長期的技術優勢,通過物聯網功能來進行節約能源的跟蹤,并上傳到區塊鏈。與此同時EFFORCE將區塊鏈與金融結合,其持有對公眾募資牌照,通過EFFORCE平臺讓更多人參與能源節約項目。此外,WOZX第二期鎖倉活動即將開啟。[2020/12/9 14:39:09]
....code...
if (process.platform === 'darwin') {
app.on('ready',createMac)
} else {
app.on('ready',createWindow)
....code...
在“createwindow”函數中,函數內部的“ windowOptions”變量包含瀏覽器窗口配置選項。注意,紅色部分顯示的行將“nodeIntegration”變量設置為true,這表示此應用程序啟用了Node.js。
...code...
function createWindow(){
const windowOptions = {
Gate.io Startup非首發項目TON認購成功,將于今日16點上線:據官方公告,Gate.io Startup 非首發項目TON Community Blockchain(TON)認購已成功,將于9月4日(今日)16:00上線TON交易并隨后開通提現服務。Gate.io將根據每個人的下單情況和每個下單幣種的認購系數進行TON分發。
據悉,Gate.io已正式上線“Startup非首發上線通道”,將針對已經在主流交易平臺上線的發展穩定有潛力的區塊鏈項目,提供更為快捷的上幣通道。詳情點擊原文鏈接。[2020/9/4]
minWidth: width,
minHeight: height,
width: width,
height: height,
title: app.getName(),
titleBarStyle: 'hiddenInset',
webPreferences: {
nodeIntegration: true,
首發 | 《一起來捉妖》中玩家達到22級將會接觸到專屬貓的玩法 ?:今日騰訊上線首款區塊鏈游戲《一起來捉妖》,經金色財經查證,游戲中玩家達到22級將會接觸到專屬貓的玩法,而非此前官方對外宣稱的15級。除了誘貓鈴鐺召喚出的0代貓以及部分通過運營活動獎勵的專屬貓以外,游戲中所有的貓默認都是未上鏈狀態。未上鏈的貓不能出售,也無法進入市場與其他玩家配對;但是你可以使用這些貓與你的QQ/微信好友進行配對,產出新的小貓。使用道具“天書筆”可以將你的貓記錄到區塊鏈。當貓被記錄到區塊鏈以后,這些貓就可以進入市場,通過配對賺取點券,或者出售賺取點券。專屬貓是否上鏈,并不影響它的增益效果。但只有上鏈后,它才能面對全服務器所有的玩家進行繁殖、交易。
?
《一起來捉妖》中的專屬貓玩法,基于騰訊區塊鏈技術,游戲中的虛擬數字資產得到有效保護。此外,基于騰訊區塊鏈技術,貓也可以自由繁殖,并且運用區塊鏈技術存儲、永不消失。[2019/4/11]
},
resizable: true,
}
....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
6月30日,北京市人民政府印發《北京市區塊鏈創新發展行動計劃(2020—2022年)》(以下簡稱《計劃》).
1900/1/1 0:00:00全球穩定幣項目Libra的管理者表示,其并未放棄推出多幣種支持的穩定幣。在周三的全球數字金融虛擬峰會上,Libra協會政策總監Julien Le Goc表示,Libra穩定幣的管理機構仍在研究其.
1900/1/1 0:00:00用數字貨幣代替人民幣支付是什么體驗?近年來,我國數字貨幣發展進程不斷加快。自2014年開始,央行就成立了數字貨幣專門研究小組,之后,又成立了數字貨幣研究所,并組織部分實力雄厚的商業銀行和有關機構.
1900/1/1 0:00:00近年來,央行在法定數字貨幣領域進展不斷,數字貨幣時代越來越近。多方消息顯示,目前央行已與美團、B站、滴滴等多家互聯網公司展開合作,推進數字經濟與實體經濟融合發展.
1900/1/1 0:00:00在數字經濟的不斷滲透下,以區塊鏈為代表的新一代信息技術正加速向實體經濟融合滲透,并催生發展新動能、釋放發展新活力。7月14日,人民網正式發布《中國移動互聯網發展報告(2020)》.
1900/1/1 0:00:00據火幣行情顯示,昨日下午BTC加速下跌,最低探至9047,隨后橫盤震蕩整理,下午局部價格整體徘徊在9120附近,多頭弱勢.
1900/1/1 0:00:00