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

從The DAO黑客事件看區(qū)塊鏈安全隱患區(qū)塊鏈

三言財(cái)經(jīng) 2018-07-13 14:35
分享到:
導(dǎo)讀

在編程人員努力對(duì)抗各種漏洞的時(shí)候,也需要思考如何將對(duì)安全問(wèn)題的防范嵌入到整個(gè)開發(fā)過(guò)程中。市面上有一些輔助性的工具,但編程人員需要首先理解他們自己在面對(duì)此類問(wèn)題時(shí)的脆弱之處。

image.png

在軟件行業(yè),整體而言安全方面的考慮是重中之重。這一點(diǎn)對(duì)于區(qū)塊鏈技術(shù)來(lái)說(shuō)尤為如此。如果安全底線被突破,其他問(wèn)題也就無(wú)從談起。區(qū)塊鏈技術(shù)被證明可以用于打造一個(gè)去中心化、去信任的交易系統(tǒng),但區(qū)塊鏈系統(tǒng)仍然不是百分之百的安全無(wú)虞。

安全漏洞存在于設(shè)計(jì)、架構(gòu)、編程、運(yùn)營(yíng)等各個(gè)階段,因此,區(qū)塊鏈也是可能被黑客攻擊的。

對(duì)于智能合約而言,只要被部署在區(qū)塊鏈上,就會(huì)和該區(qū)塊鏈共存。所以,所有的漏洞與安全缺陷也會(huì)和智能合約共存。

基本上每一個(gè)區(qū)塊鏈都使用一套自己的編程語(yǔ)言來(lái)部署智能合約。我們來(lái)仔細(xì)研究一下。

智能合約語(yǔ)言

區(qū)塊鏈環(huán)境包括開發(fā)智能合約所使用的語(yǔ)言。

例如,以太坊平臺(tái)使用的是Solidity語(yǔ)言編寫智能合約。Solidity語(yǔ)言的開發(fā)者將其設(shè)計(jì)成一種圖靈完備的編程語(yǔ)言。所謂圖靈完備,就是該語(yǔ)言允許編程者可以執(zhí)行一切底層系統(tǒng)可以計(jì)算的問(wèn)題。這就讓編程者可以在代碼中實(shí)現(xiàn)循環(huán),但也潛在地為區(qū)塊鏈帶來(lái)了安全隱患。

圖靈完備

圖靈完備語(yǔ)言天然具有復(fù)雜性,而復(fù)雜性又會(huì)帶來(lái)漏洞和安全隱患。

比特幣網(wǎng)絡(luò)使用了一個(gè)名為Script的編程語(yǔ)言,該語(yǔ)言并不是一種圖靈完備語(yǔ)言,目的就是為了增強(qiáng)安全性。

編程人員的可選擇性越少,那么區(qū)塊鏈產(chǎn)生安全隱患的幾率就越低。

為了減少釋放錯(cuò)誤代碼帶來(lái)的危害,編程人員需要了解智能合約開發(fā)過(guò)程中的陷阱和反模式(反模式是指錯(cuò)誤的編程方式)。

The DAO黑客事件:一個(gè)可重入性問(wèn)題在編程人員開發(fā)智能合約給區(qū)塊鏈帶來(lái)的眾多安全隱患中,可重入性問(wèn)題危害最大。它會(huì)導(dǎo)致一個(gè)賬戶在同一交易中被重復(fù)支出。這問(wèn)題經(jīng)常會(huì)發(fā)生在退款處理的過(guò)程中,但實(shí)際上這一缺陷,如果在設(shè)計(jì)和編程階段不被預(yù)先處理,就會(huì)影響到所有交易過(guò)程。

在迄今為止最臭名昭著的加密貨幣領(lǐng)域攻擊事件中,黑客就是利用了the DAO在可重入性問(wèn)題上的缺陷。The DAO的全稱為Decentralized Autonomous Organization,意為“去中心化自治組織”,也就是說(shuō),沒有一個(gè)機(jī)構(gòu)化的領(lǐng)導(dǎo)者對(duì)其運(yùn)營(yíng)進(jìn)行管理。The DAO本身提倡的是讓用戶自主投票,選擇要進(jìn)行投入的項(xiàng)目。在the DAO成立的首個(gè)月里,它就籌集了1.5億美元的資金。2016年6月17日,黑客利用其可重入性缺陷,盜取了其中價(jià)值5000萬(wàn)美元的以太幣資金。該問(wèn)題直到后來(lái)以太經(jīng)典與以太坊進(jìn)行了硬分叉之后才得以解決。

image.png

反模式易受可重入性問(wèn)題侵害

一個(gè)易受侵害的可重入性程序邏輯是如下這樣的

function to process a payment () {

check the validity of the transaction, the recipient, and the account balance;

(2) process the transaction;

(3) update the state of the system to show the transaction has been processed;

}

一眼看上去,這個(gè)邏輯是完整且正確的,但問(wèn)題隱藏在第二步之中。

對(duì)于該函數(shù)的第一個(gè)調(diào)用,會(huì)繼續(xù)執(zhí)行第二步,另一個(gè)對(duì)于同一交易的調(diào)用則會(huì)進(jìn)入該函數(shù)。因?yàn)闋顟B(tài)信息表明其仍在初始狀態(tài),且沒有在第三步中被執(zhí)行,那么第二次調(diào)用則會(huì)驗(yàn)證其為一次有效交易,并予以執(zhí)行。

最終,系統(tǒng)因?yàn)橥瑯拥睦碛稍俅螌?duì)貨幣進(jìn)行消費(fèi)。黑客們就會(huì)利用這一漏洞,在狀態(tài)被調(diào)整正常前多次使用該函數(shù)進(jìn)行交易。

解決可重入性問(wèn)題的方法

解決該問(wèn)題,可以對(duì)函數(shù)進(jìn)行一個(gè)調(diào)整:

function to process a payment () {

check the validity of the transaction, the recipient, and the account balance;

(2) update the state of the system to show the transaction has been processed;

(3) process the transaction;

}

代碼需要對(duì)所有可能的例外進(jìn)行解釋,同時(shí)也需要對(duì)所有的邏輯相關(guān)性進(jìn)行解釋。

溢出問(wèn)題

溢出是另一個(gè)需要編程人員警惕的問(wèn)題。

不同的編程語(yǔ)言提供的版式不同。例如,強(qiáng)版式語(yǔ)言不允許編程者向數(shù)值變量中添加串?dāng)?shù)據(jù),而弱版式語(yǔ)言則允許。強(qiáng)版式語(yǔ)言對(duì)范圍進(jìn)行限制,如果一個(gè)數(shù)組包含是個(gè)元素,那編程人員就無(wú)法獲取第是一個(gè)元素。弱版式語(yǔ)言則沒有這樣的限制,但因此也帶來(lái)了崩潰的可能。如果最大允許值為一個(gè)值為99的變量,如果你賦值為100,運(yùn)行的時(shí)候必然會(huì)崩潰!

所以,溢出也是一個(gè)黑客可能利用的漏洞。如果黑客將一個(gè)超出代碼可運(yùn)行范圍的參數(shù)植入一個(gè)智能合約,那系統(tǒng)就會(huì)崩潰,而這一次崩潰就會(huì)導(dǎo)致一系列的漏洞。這樣的崩潰可能引發(fā)“拒絕服務(wù)”攻擊(DDoS attack),關(guān)于系統(tǒng)內(nèi)部運(yùn)行的關(guān)鍵信息有時(shí)候也可能會(huì)在錯(cuò)誤信息頁(yè)面中被暴露出來(lái)。

在網(wǎng)絡(luò)應(yīng)用中,黑客通常會(huì)用惡意代碼去塞滿內(nèi)存,當(dāng)程序崩潰、進(jìn)入到內(nèi)存的隨機(jī)點(diǎn)時(shí),惡意代碼就會(huì)被釋放。

弱版式語(yǔ)言提供能力和動(dòng)態(tài)靈活性,但這也需要更靈活的設(shè)計(jì)和測(cè)試,以加強(qiáng)針對(duì)攻擊的保護(hù)。

密碼信息漏洞無(wú)法斬?cái)?/strong>

軟件世界充斥著大量的安全問(wèn)題。當(dāng)一個(gè)新興技術(shù)誕生,新的安全威脅也隨之而來(lái)。除了上述問(wèn)題以外,下面還有一些區(qū)塊鏈安全方面的隱患值得注意。

壞的加密貨幣會(huì)帶來(lái)很多問(wèn)題。密碼學(xué)方面的安全是隱私的保障,如果隱私問(wèn)題被突破,那么一切安全問(wèn)題就無(wú)從談起。IOTA團(tuán)隊(duì)在他們的產(chǎn)品的首個(gè)版本開發(fā)過(guò)程中,在編寫密碼數(shù)據(jù)庫(kù)時(shí)就犯了錯(cuò)誤。編制密碼時(shí),有一個(gè)無(wú)法避免的問(wèn)題在于,所有復(fù)雜的軟件都存在漏洞,所以你的密碼信息必然會(huì)有漏洞。

已有的密碼數(shù)據(jù)庫(kù),經(jīng)過(guò)了學(xué)術(shù)界的審核,也在經(jīng)年累月的實(shí)踐中經(jīng)受住了考驗(yàn)。

在數(shù)字錢包的世界中,隨機(jī)數(shù)據(jù)的生成必須真的是隨機(jī)的。尤其是在加密貨幣早期階段,有些錢包并沒有達(dá)到這一要求。

加密貨幣地址要求必須是唯一的。這一唯一性來(lái)自于一個(gè)隨機(jī)數(shù)值生成器,而這個(gè)生成器需要一個(gè)誘因才能觸發(fā)。如果這個(gè)誘因不是隨機(jī)的,那整個(gè)系統(tǒng)就會(huì)失效。

如果隨機(jī)性失效,一個(gè)重大的后果就是有很多相同的地址會(huì)被生成。想象一下,如果同一錢包地址X被分配給不同的人,那如果一個(gè)款項(xiàng)被分配進(jìn)X,究竟誰(shuí)有資格領(lǐng)取這筆款項(xiàng)?

隨機(jī)性失效帶來(lái)的另一個(gè)問(wèn)題是,黑客有可能破解制造誘因的算法,那么他就可以重復(fù)為自己制造誘因,從而控制整個(gè)系統(tǒng)。

image.png

問(wèn)題源源不斷

安全性問(wèn)題是一場(chǎng)永無(wú)止境的戰(zhàn)斗,就算是編程人員、架構(gòu)師、測(cè)試人員解決了代碼中的所有問(wèn)題,運(yùn)行過(guò)程中的問(wèn)題仍然層出不窮。

在一個(gè)可信工作環(huán)境中,如果有壞人掌控了整個(gè)網(wǎng)絡(luò)的51%,那么網(wǎng)絡(luò)的完整性就被破壞掉了。博弈論為這種攻擊提供了緩沖。一個(gè)新的加密貨幣,因?yàn)樵诰W(wǎng)絡(luò)中的暴露程度最低,可能遭受的攻擊幾率最大。但51%的網(wǎng)絡(luò)攻擊會(huì)損傷加密貨幣本身的價(jià)值,所以攻擊者實(shí)際上是在攻擊他們自己。

區(qū)塊鏈因?yàn)榇嬖谟诰W(wǎng)絡(luò)中,所以就像整個(gè)網(wǎng)絡(luò)一樣,暴露在黑客面前。例如,你要從一個(gè)網(wǎng)上交易所購(gòu)買代幣,植入攻擊、跨站腳本、釣魚攻擊,還有其他各種傳統(tǒng)黑客攻擊方式就會(huì)接踵而至。

結(jié)語(yǔ)

在編程人員努力對(duì)抗各種漏洞的時(shí)候,也需要思考如何將對(duì)安全問(wèn)題的防范嵌入到整個(gè)開發(fā)過(guò)程中。市面上有一些輔助性的工具,但編程人員需要首先理解他們自己在面對(duì)此類問(wèn)題時(shí)的脆弱之處。

去中心化應(yīng)用安全計(jì)劃(DASP,The Decentralized Application Security Project)致力于成為區(qū)塊鏈安全信息和資源的知識(shí)庫(kù)。他們?cè)陂_源Web應(yīng)用安全計(jì)劃(OWASP,the Open Web Application Security Project)上進(jìn)行建模。年度OWASP名單會(huì)將現(xiàn)有的10個(gè)主要網(wǎng)絡(luò)應(yīng)用隱患列入其中。而DASP希望在區(qū)塊鏈領(lǐng)域發(fā)布同類榜單。

不是所有的網(wǎng)絡(luò)攻擊都可以被預(yù)先估計(jì)到。所謂“零日攻擊”就是指在一次攻擊中,黑客先于所有人知道相關(guān)情況。因此,編程人員需要在設(shè)計(jì)和部署軟件的過(guò)程中,模仿黑客的思維進(jìn)行思考。如果你不能在代碼中找到軟肋,那就等著黑客前來(lái)攻擊吧。

問(wèn)題 安全 編程 黑客 區(qū)塊
分享到:

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


專題報(bào)道

主站蜘蛛池模板: 水轮机密封网 | 水轮机密封产品研发生产厂家 | 安徽泰科检测科技有限公司【官方网站】| 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 瓶盖扭矩测试仪-瓶盖扭力仪-全自动扭矩仪-济南三泉中石单品站 | 天然鹅卵石滤料厂家-锰砂滤料-石英砂滤料-巩义东枫净水 | 过滤器_自清洗过滤器_气体过滤器_苏州华凯过滤技术有限公司 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | app开发|app开发公司|小程序开发|物联网开发||北京网站制作|--前潮网络 | 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 华夏医界网_民营医疗产业信息平台_民营医院营销管理培训 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 | 深圳激光打标机_激光打标机_激光焊接机_激光切割机_同体激光打标机-深圳市创想激光科技有限公司 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 上海律师事务所_上海刑事律师免费咨询平台-煊宏律师事务所 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 月嫂_保姆_育婴_催乳_母婴护理_产后康复_养老护理-吉祥到家家政 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | ET3000双钳形接地电阻测试仪_ZSR10A直流_SXJS-IV智能_SX-9000全自动油介质损耗测试仪-上海康登 | 科客,主见不成见| 淄博不锈钢无缝管,淄博不锈钢管-鑫门物资有限公司 | 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | MES系统工业智能终端_生产管理看板/安灯/ESOP/静电监控_讯鹏科技 | 欧版反击式破碎机-欧版反击破-矿山石料破碎生产线-青州奥凯诺机械 | 商标转让-购买商标专业|放心的商标交易网-蜀易标商标网 | 立式矫直机_卧式矫直机-无锡金矫机械制造有限公司 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 写方案网_方案策划方案模板下载| 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 |