比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > 萊特幣 > Info

合約變量的“皇帝新衣” |成都鏈安漏洞分析連載第九期 ——外部讀取狀態變量_TOR

Author:

Time:1900/1/1 0:00:00

針對區塊鏈安全問題,成都鏈安科技團隊每一周都將出智能合約安全漏洞解析連載,希望能幫助程序員寫出更加安全牢固的合約,防患于未然。引子:外以欺于人,內以欺于心–唐·韓愈《原毀》前景提要

上回書,轉賬過程紛繁復雜,安全應對各個擊破。面對直接涉及以太轉賬的游戲合約,在使用官方提供的轉賬函數同時,添加不同賬戶類型的區別處理以及失敗情況下的異常處理乃明智之舉。此外,構建合約邏輯避免依賴于合約余額確切值應銘記在心,如有特殊考慮,切記定義狀態變量明確余額變化,萬不可想當然而為之。本期話題

第九回,合約安全隱私未必,外部讀取暴露無遺。

我們在前幾回主要討論的都是在合約內部構建函數和代碼書寫規范時產生的一些誤區和安全隱患。但是對于智能合約這個嶄新的概念,僅僅從合約層面本身考慮合約的安全可能并不足夠。合約開發者在這個產業蓬勃發展的過程當中,為了趕上項目進度,不得以邊學習邊實踐,即使在代碼書寫層面功底很扎實的情況下,仍然會因為區塊鏈技術的特殊性埋藏一些不自知的安全隱患。所以,這一回我們將要闡述的安全隱患就是因為“合約中的一切都是公開可見”這一特性造成的。基礎小知識

某巨鯨從幣安提取700萬枚SUSHI并存入SUSHI質押合約:金色財經報道,據鏈上分析師余燼監測,某個新創建的地址(0xe5e86開頭)從幣安提取700萬枚SUSHI(約合450萬美元)并存入SUSHI質押合約。[2023/6/22 21:54:37]

在第七期的關于未初始化局部變量中我們介紹了變量存儲的知識。Solidity對復雜的數據類型,比如數組和結構體,會默認存儲在Storage當中。沒有提到的是關于智能合約中對于變量從作用域的劃分。目前的劃分包括三種,全局公有變量,全局私有變量,局部變量。其中,全局變量一般儲存在storage當中,而結構、數組或映射類型的局部變量,默認會放在存儲storage中,除結構、數組及映射類型之外的局部變量,會儲存在棧中。公有和私有是可見性說明符,公有變量在合約內部外部均可見,而私有變量僅在當前合約可見。另外還有兩個可見性類別在這里我們也介紹一下:external,表示僅在外部可見,即僅可用于消息調用;internal,僅在內部可見,表示的意思是僅在Solidity合約與子合約均可見,不僅限于當前合約內。問題出在哪

DeFi收益管理框架Stone已完成智能合約升級:DeFi收益管理框架Stone發推稱,團隊今天完成了智能合約升級。所有資產已發送至用戶的存款地址,并在6月22日至28日晚8時期間提供額外獎金。[2021/6/28 0:12:08]

由于狀態變量一般是需要永久存儲的變量,所以一定會儲存在storage中,聯系第七期的知識,storage是存在于區塊鏈當中的,可以類比為計算機的存儲磁盤。那么狀態變量其實一直存在于區塊鏈當中,對于結構、數組或映射類型的局部變量也是同樣的道理。這樣一來,即使加上了可見性說明符,例如私有狀態變量,根據區塊鏈公開的特性,它也還會是公開的,因為這個私有僅限于合約層面的私有,合約之外依然可以讀取。這個附加的可見性說明符就像騙子給皇帝穿上的新衣,以“騙”到合約層面的函數和變量,在合約外部卻形同虛設。那么,從外部如何讀取狀態變量呢,下面我們從合約外部的角度分析具體的流程。如何從合約外部讀取變量

24H成交47.3億USDT BTC千倍合約做多人數占優:AOFEX交易大數據顯示,截至今日10:30,永續合約交易量達47.3億USDT,其中ETH/USDT永續合約交易量為8.34億張,現報價593.57USDT。BTC/USDT永續合約交易量為15.82億張,現報價18809.2USDT。BTC千倍合約交易量為2.74億張,多空持倉人數比為1.21,市場做多人數暫時占優。

AOFEX數字貨幣金融衍生品交易所,旨在為用戶提供優質服務和資產安全保障。[2020/12/2 22:50:01]

一、狀態變量接著上面的概念,合約的狀態變量都是存在于區塊鏈中,就像存儲在磁盤中的文件,因此,那么我們可以直接通過訪問區塊鏈獲取這些狀態變量的值。例如針對以下案例合約進行全真模擬操作:將上面的合約部署在ropsten測試鏈上,獲得地址0x9e550E6911b38412964C5C956383757c9FA7F860,然后登陸METAMASK錢包進入瀏覽器控制臺console:1.查看變量a,輸入:web3.eth.getStorageAt('0x9e550E6911b38412964C5C956383757c9FA7F860',0,function(x,y){console.log(y。)會得到:2.查看變量str獲取16進制結果,輸入:web3.eth.getStorageAt('0x9e550E6911b38412964C5C956383757c9FA7F860',1,function(x,y){console.log(y。)轉換為字符串,輸入:web3.eth.getStorageAt('0x9e550E6911b38412964C5C956383757c9FA7F860',1,function(x,y){console.log(web3.toAscii(y)。)會得到:3.查看ownerweb3.eth.getStorageAt('0x9e550E6911b38412964C5C956383757c9FA7F860',2,function(x,y){console.log(y。)4.查看balanceOf這個稍微復雜一些,由于映射變量不是按照定長變量的順序存儲,其是一個鍵值對,EVM采用的機制是將其存在sha3(key+slot)處輸入進控制臺,得到:二、局部變量局部變量直接編碼到opcode中,例如上面合約localVar函數中的local變量三、建議上面的讀取操作驗證了只要是儲存在storage里面的變量,都是可以通過不執行合約函數就直接獲取的。因此,依賴可見性說明符,將隱私,不可公開的數據存儲在區塊鏈上是很不安全的做法。如果真的要將隱私數據儲存在區塊鏈中,也要進行相應的加密處理。欲窮千里目更上一層樓區塊鏈時代的安全包含傳統互聯網安全,智能合約安全等多個方面,對于合約層面的安全考量固然是一方面,但是對于數據存儲方面,不沿用互聯網安全的理念,盲目信賴新技術卻又不深入挖掘新技術某些特性、限制條件、特殊情況,勢必無法做到真正意義上的全面防護。目前區塊鏈產業步伐放緩,正是我們深入學習了解這個領域的最佳時機,也是這個產業提升穩健性的最佳契機。更上層樓,與君共勉。參考資料:

火幣ZEC、ADA和DASH永續合約已正式上線:據火幣官方消息,火幣ZEC、ADA和DASH永續合約已于新加坡時間4月24日18點正式上線。用戶現可在平臺進行劃轉、交易等操作。

據悉,火幣永續合約在每個新品種上線前,平臺均會提前配置一定額度風險準備金,以最大可能保護用戶權益。在此三大幣種上線前,火幣合約已向其永續合約風險準備金余額中分別注入4,500個ZEC,5,715,000個ADA和2,500個DASH。

據了解,目前火幣永續合約已覆蓋BTC、ETH、BCH、BSV、EOS、LTC、XRP、ETC、TRX、LINK、ZEC、ADA和DASH十三大主流幣種,支持用戶在Web端、API端和APP端操作。詳情請查看火幣合約官網公告。[2020/4/24]

:以太坊智能合約OPCODE逆向之理論基礎篇:https://paper.seebug.org/640/:可見性和getter函數:https://solidity-cn.readthedocs.io/zh/develop/contracts.html#getter:JSON-RPC#eth_getstorageat:https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getstorageat:以太坊數據存儲的思考和解讀:https://blog.csdn.net/Blockchain_lemon/article/details/79308137:HowtoreadEthereumcontractstorage:https://medium.com/aigang-network/how-to-read-ethereum-contract-storage-44252c8af925相關閱讀:鏈安團隊漏洞分析連載第一期一一溢出漏洞鏈安團隊漏洞分析連載第二期——拒絕服務漏洞鏈安團隊漏洞分析連載第三期——競態條件漏洞鏈安團隊漏洞分析連載第四期——底層函數誤用漏洞鏈安團隊漏洞分析連載第五期一一權限驗證錯誤鏈安團隊漏洞分析連載第六期一一游戲合約漏洞全面匯總鏈安團隊漏洞分析連載第七期一一存儲器局部變量未初始化鏈安團隊漏洞分析連載第八期一一以太坊轉賬安全風險

現場 | 魚池F2pool創始人神魚:智能合約的出現大幅提升了效率:金色財經現場報道,在中國區塊鏈行業發展論壇現場,魚池F2pool創始人神魚表示,區塊鏈現在處于類似互聯網非常早期的時代,大概為90年代初,很多底層協議都沒有完善。目前現階段取得階段性的發展,智能合約的出現則改變了人與人,人與物,人與機器的連接,大幅提升了效率。在共識機制中,其中POW已經發展了10余年,目前年產出在100億美金。隨著比特幣發展,網絡出現大規模擁堵,POW洲際達成共識的極限速度為12秒。這反映出,雖然POW擴展屬性差,但安全程度高的特點。[2018/7/11]

Tags:STOTORTORAORAONSTONStorage CoinGORA

萊特幣
擔心大戶會砸盤?最新研究表明比特幣大戶不是價格波動的主要推手_BTC

10月11日消息,據研究機構chainalysis的一項新研究表明,比特幣大戶并不是行情波動的主要原因.

1900/1/1 0:00:00
公鏈數量是開發者的四倍,誰能成為下一代開發平臺?_ING

迅雷鏈總工程師來鑫正在介紹迅雷鏈10月25日,這是迅雷鏈技術沙龍的香港站。迅雷鏈近期在多個城市舉辦了技術沙龍,4-7月則是漫長的開發者大賽,這看似密集.

1900/1/1 0:00:00
十年,最震驚比特幣世界的10天_區塊鏈

編者按:本文來自鏈內參,作者:KaiSedgwick,編譯:內參君,原地址:https://news.bitcoin.com/10-days-that-shook-the-world-of-bi.

1900/1/1 0:00:00
砸盤?跑路?追蹤46萬枚ETH轉賬疑云_DIG

9月4號,注定是幣圈里不平凡的一天。比如說:今天中午,就有兩筆巨額ETH轉賬出現了,金額各是46+w枚,折人民幣,那就是9個億啊!這筆ETH來自DigixDAO的公募合約,后續轉入了項目方的一個.

1900/1/1 0:00:00
星球日報 | 涉十億區塊鏈項目疑似跑路;支付寶將區塊鏈技術應用至住房公積金;百度欲打造智能城鎮示范區_ITH

頭條 媒體:匯眾區塊鏈突然關網,十多億款項不知所蹤據互鏈脈搏消息,10月10日晚,位于北京的匯眾區塊鏈商業項目疑似團伙詐騙跑路,目前官網已無法打開,眾多投資者已無法提現.

1900/1/1 0:00:00
馬云是ABS鏈的真爸爸還是假爸爸? ABS鏈借馬云之名或已集資數億元_區塊鏈

作者:互鏈脈搏·觀海幾個月前,馬云曾說,沒有區塊鏈的阿里會死的。馬云自己不會料到,他的這句話不但成為“ABS鏈”的營銷手段,還被ABS鏈認了“真爸爸”.

1900/1/1 0:00:00
ads