TMT观察网_独特视角观察TMT行业

智能合約攻擊之使用Oraclize服務(wù)區(qū)塊鏈

區(qū)塊鏈安全檔案 2018-09-04 02:49
分享到:
導(dǎo)讀

WF曲速未來:近日,在眾多攻擊案例中,有些漏洞成因或攻擊模式少有研究涉及,也出現(xiàn)了一些比較隱蔽的攻擊鏈。一起分析一下因為使用Oraclize服務(wù)的疏忽引起的漏洞和如何在自己的合約中使用Oraclize服務(wù)。

近日,在眾多攻擊案例中,有些漏洞成因或攻擊模式少有研究涉及,也出現(xiàn)了一些比較隱蔽的攻擊鏈。下面WF曲速未來跟你一起分析一下因為使用Oraclize服務(wù)的疏忽引起的漏洞和如何在自己的合約中使用Oraclize服務(wù)。

使用Oraclize服務(wù)的疏忽

為了將區(qū)塊鏈技術(shù)應(yīng)用到線下,例如將飛機延誤險、數(shù)字貨幣兌換等業(yè)務(wù)上鏈,區(qū)塊鏈需要具有訪問鏈外數(shù)據(jù)的能力。但是如果智能合約直接從外部服務(wù)獲取數(shù)據(jù),由于網(wǎng)絡(luò)延遲,節(jié)點處理速度等各種原因,會導(dǎo)致每個結(jié)點獲取的數(shù)據(jù)不同,使區(qū)塊鏈的共識機制失效。

現(xiàn)有的解決方案是使用第三方發(fā)送區(qū)塊鏈的交易,交易會同步到每個節(jié)點,從而保證數(shù)據(jù)的一致性。Oraclize是一個預(yù)言機,為以太坊等區(qū)塊鏈提供數(shù)據(jù)服務(wù),它獨立于區(qū)塊鏈系統(tǒng)之外,是一個中心化的第三方。Oraclize可以提供的數(shù)據(jù)訪問服務(wù)包括隨機數(shù)、URL訪問、IPFS等。Oraclize的架構(gòu)如圖所示:

Oraclize不是鏈上直接可以調(diào)用的函數(shù),而是一個鏈外的實體。為了抓取外部數(shù)據(jù),以太坊智能合約需要發(fā)送一個查詢請求給Oraclize,當(dāng)Oraclize監(jiān)聽到鏈上有相關(guān)請求時,立即對互聯(lián)網(wǎng)上的資源發(fā)起訪問,然后調(diào)用合約中的回調(diào)函數(shù)__callback將查詢結(jié)果返回區(qū)塊鏈。

例如,用美元兌換以太幣的智能合約的數(shù)據(jù)查詢語句如下:

監(jiān)聽到請求后,Oraclize會訪問URL獲得查詢結(jié)果,然后調(diào)用__callback的函數(shù),Oraclize返回的數(shù)據(jù)通過__callback函數(shù)參數(shù)傳回智能合約。上圖中函數(shù)調(diào)用的參數(shù)[3]中的“3334312e3533”即為當(dāng)時的匯率:1ETH = $341.53,隨后智能合約會根據(jù)這個查詢結(jié)果進(jìn)行后續(xù)的邏輯處理。

SIGMA合約使用了Oraclize服務(wù)查詢匯率。該合約的__callback回調(diào)函數(shù)如下:

由于__callback函數(shù)中存在整數(shù)溢出,導(dǎo)致owner的代幣余額被下溢成一個很大的值,導(dǎo)致代幣增發(fā)。從代幣份額排名可以看出攻擊者的賬戶地址為0x2ef045a75b967054791c23ab93fbc52cc0a35c80,而該地址并不是創(chuàng)建合約的賬戶地址(0xC7e92D8997359863a8F15FE87C0812D7A3a8F770)。

跟蹤Transactions,發(fā)現(xiàn)0xC7e92D8997359863a8F15FE87C0812D7A3a8F770調(diào)transfer_ownership將合約的owner設(shè)置為0x2ef045a75b967054791c23ab93fbc52cc0a35c80。

針對這個漏洞是否使用SafeMath就可以解決了呢?答案是否定的。在Oraclize調(diào)用__callback之前,有用戶對查詢函數(shù)的調(diào)用,而且這個調(diào)用花費以太幣。

使用SafeMath的情況下,發(fā)生溢出的事務(wù)會回滾,但本例中能夠回滾的只有Oraclize對__callback函數(shù)調(diào)用的事務(wù),而之前用戶花費以太幣發(fā)生的事務(wù)則無法回滾。WF曲速未來表示這個現(xiàn)象的根本原因是Oraclize是一個獨立的實體,導(dǎo)致邏輯上應(yīng)該完整的一個操作被分割成了兩個事務(wù)。因此,通過Oraclize與鏈下數(shù)據(jù)交互時只能更加小心,代碼編寫需要更加謹(jǐn)慎。

如何在自己的合約中使用oraclize服務(wù)

在區(qū)塊鏈中正確部署了地址解析器和連接器之后,可以使用node bridge --oar標(biāo)志(生成最新的oar地址)或使用node bridge --instance latest。如果你不使用確定性O(shè)AR,則還需要使用生成的新地址解析器更新合約構(gòu)造函數(shù)。

1.在自己的合約中導(dǎo)入usingOraclize.sol合約

從github上下載oraclizeAPI_0.4.sol合約,并將該文件重命名為usingOraclize.sol,放在你的contracts文件夾中。然后通過

在自己的合約中導(dǎo)入usingOraclize.sol合約。

2.在構(gòu)造函數(shù)中添加地址解析器OAR

例如:

注意:選擇的地址將用于部署Oraclize合約,確保不要在同一地址部署你自己寫的使用了Oraclize的合約。

3.發(fā)送查詢

在Oraclize服務(wù)中,你必須向Oraclize智能合約發(fā)送查詢,Oraclize接收你的查詢并進(jìn)行相應(yīng)的請求。 一旦服務(wù)從API接收數(shù)據(jù),他們就會在智能合約中調(diào)用回調(diào)函數(shù),你可以訪問和處理所請求的數(shù)據(jù)。

以上代碼用于檢索1個ETH的當(dāng)前美元價格。oraclize_queryfunction用于通知Oraclize有關(guān)第三方API。在_callback函數(shù)中,第一個參數(shù)是請求的ID。 第二個參數(shù)是請求的結(jié)果。

向Oraclixe發(fā)送一個查詢時

1.如果第一個實參是字符串,就表示數(shù)據(jù)源,第二個實參是數(shù)據(jù)源的輸入條件

2.如果URL數(shù)據(jù)源后只有一個字符串實參,表示向此URL發(fā)送HTTP GET請求

3.如果URL數(shù)據(jù)源后有兩個字符串實參,表示向此URL發(fā)送HTTP POST請求,第三個實參即為POST請求的內(nèi)容,例如:

1)如果第一個實參是數(shù)字,就表示在預(yù)約查詢,比如第一個實參86400,則表示Oracize在看到此查詢86400s(24h)后開始查詢。

2)如果最后一個實參是數(shù)字,它表示自定義的gasLimit,默認(rèn)為200000,不得低于200000。

3)沒有花費完的gas將被返還給Oraclize,而非用戶。

區(qū)塊鏈安全公司W(wǎng)F曲速未來提醒:來自任意以太坊地址的第一個Oraclize查詢調(diào)用都是免費的

Oraclize 合約 數(shù)據(jù) 使用 區(qū)塊
分享到:

1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會明確標(biāo)注作者和來源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請轉(zhuǎn)載時務(wù)必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會經(jīng)TMT觀察網(wǎng)編輯修改或補充。


主站蜘蛛池模板: 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 萃取箱-萃取槽-PVC萃取箱厂家-混合澄清槽- 杭州南方化工设备 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 石家庄小程序开发_小程序开发公司_APP开发_网站制作-石家庄乘航网络科技有限公司 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | 中医治疗皮肤病_潍坊银康医院「山东」重症皮肤病救治平台 | 模切之家-专注服务模切行业的B2B平台!| 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 陕西华春网络科技股份有限公司 | 广东青藤环境科技有限公司-水质检测 | 空气能采暖,热泵烘干机,空气源热水机组|设备|厂家,东莞高温热泵_正旭新能源 | 宁夏档案密集柜,智能密集柜,电动手摇密集柜-盛隆柜业宁夏档案密集柜厂家 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 房间温控器|LonWorks|海思| 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | SMN-1/SMN-A ABB抽屉开关柜触头夹紧力检测仪-SMN-B/SMN-C-上海徐吉 | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | 通信天线厂家_室分八木天线_对数周期天线_天线加工厂_林创天线源头厂家 | 车辆定位管理系统_汽车GPS系统_车载北斗系统 - 朗致物联 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | 泰安办公家具-泰安派格办公用品有限公司 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 订做不锈钢_不锈钢定做加工厂_不锈钢非标定制-重庆侨峰金属加工厂 | 哲力实业_专注汽车涂料汽车漆研发生产_汽车漆|修补油漆品牌厂家 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 生产加气砖设备厂家很多,杜甫机械加气砖设备价格公道 | 润滑脂-高温润滑脂-轴承润滑脂-食品级润滑油-索科润滑油脂厂家 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 警用|治安|保安|不锈钢岗亭-售货亭价格-垃圾分类亭-移动厕所厂家-苏州灿宇建材 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 |