国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【區(qū)塊鏈 | 審計(jì)】智能合約審計(jì)指南

這篇具有很好參考價(jià)值的文章主要介紹了【區(qū)塊鏈 | 審計(jì)】智能合約審計(jì)指南。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

區(qū)塊鏈代碼審計(jì),智能合約安全漏洞,區(qū)塊鏈,智能合約,ethereum

背景

區(qū)塊鏈技術(shù)正在改變各行各業(yè)的游戲規(guī)則,而智能合約是這一進(jìn)程的關(guān)鍵部分。智能合約通過(guò)消除第三方中介機(jī)構(gòu)來(lái)確保各方之間的信任,有助于降低成本,同時(shí)也增加透明度。如果你要寫一個(gè)智能合約,關(guān)鍵是你要對(duì)代碼進(jìn)行審計(jì),以確保它能正常工作--而且不會(huì)有任何錯(cuò)誤或安全漏洞。本指南將引導(dǎo)你了解審計(jì)智能合約的基礎(chǔ)知識(shí)和一些常見的智能合約漏洞。

第 1 部分:為什么要審計(jì)你的智能合約?

智能合約之所以重要,有很多原因。它們可以幫助你實(shí)現(xiàn)業(yè)務(wù)流程的自動(dòng)化,使其更有效率,從而節(jié)省時(shí)間和金錢。但它如此受歡迎的最大原因是,通過(guò)移除人為錯(cuò)誤從來(lái)減少欺詐的風(fēng)險(xiǎn)。然而,這些好處是有代價(jià)的:開發(fā)智能合約時(shí)很容易犯錯(cuò)。一個(gè)有缺陷的代碼庫(kù)可能會(huì)導(dǎo)致你的整個(gè)系統(tǒng)崩潰,甚至容易受到黑客的攻擊!你可能聽說(shuō)過(guò)關(guān)于黑客攻擊的事件。你可能聽說(shuō)過(guò)基于以太坊的代幣被黑的事情。這些黑客是由于智能合約中的漏洞導(dǎo)致的,這使得黑客可以竊取存儲(chǔ)在這些合約中價(jià)值數(shù)百萬(wàn)美元的加密貨幣。

第二部分:如何開始審計(jì)

在你開始審計(jì)之前,你應(yīng)該首先進(jìn)行一次安全 review。以便識(shí)別出智能合約中的任何問(wèn)題和漏洞。

下一步是了解合約的商業(yè)邏輯,你應(yīng)該了解為什么要?jiǎng)?chuàng)建它,它為用戶解決了什么問(wèn)題,以及它如何與區(qū)塊鏈上的其他合約一起工作。

之后是技術(shù)架構(gòu)分析:查看所有參與編寫和部署這段代碼的部分,以及了解它們是如何在 Solidity 等編程語(yǔ)言中實(shí)現(xiàn)的。

最后,進(jìn)行威脅建模(threat modelling ),查看一下不同的參與方(用戶/終端用戶)如何與系統(tǒng)交互。

第 3 部分:智能合約審計(jì)的不同階段

智能合約審計(jì)的不同階段包括:

確定審計(jì)的目標(biāo)和目的:

這一步你要設(shè)定智能合約審計(jì)的目標(biāo)和目的。

確定審計(jì)的范圍:

在這一步,你收集包括在審計(jì)范圍內(nèi)的所有資產(chǎn),以確保沒有任何遺漏。

審計(jì)計(jì)劃:

審計(jì)的一個(gè)重要階段是計(jì)劃,這可以使審計(jì)工作有效地完成。

進(jìn)行審計(jì):

真正的工作,試圖在智能合約的代碼中找到漏洞。

撰寫審計(jì)報(bào)告:

現(xiàn)在你所有的辛勤工作都結(jié)束了,是時(shí)候把你在審計(jì)過(guò)程中發(fā)現(xiàn)的情況寫成報(bào)告了。

第 4 部分:測(cè)試的一般情況

有許多不同類型的測(cè)試,但最重要的是要記住,你不應(yīng)該相信你沒有測(cè)試過(guò)的代碼。你可以通過(guò)多種方式測(cè)試你的智能合約代碼,包括:

  • 在沙盒環(huán)境中測(cè)試(如 Remix)

  • 在測(cè)試網(wǎng)(如 Rinkeby)上進(jìn)行測(cè)試

  • 專門為測(cè)試目的設(shè)計(jì)的私有區(qū)塊鏈網(wǎng)絡(luò)(如 Ganache)

第 5 部分:基本安全考慮

作為一個(gè)智能合約的開發(fā)者,你有責(zé)任確保代碼安全。這是你能保證你的用戶的資金安全的唯一方法。

為了確保適當(dāng)?shù)陌踩幸恍┗咀龇ū仨氉裱?。這些包括:

  • 使用安全的編碼做法

  • 使用安全的開發(fā)環(huán)境

第 6 部分:常見的以太坊漏洞

以太坊智能合約容易受到一些黑客和攻擊。最常見的漏洞是:

  • 可重入:這是指惡意合約可以多次調(diào)用另一個(gè)合約,耗盡受害者合約的資源。

  • 整數(shù)溢出/下溢:這是一個(gè)算術(shù)運(yùn)算的結(jié)果,其數(shù)值超出了預(yù)期范圍。這可以被利用來(lái)發(fā)送比預(yù)期多或少的 ETH。

  • 依賴時(shí)間戳:這是指合約依靠當(dāng)前的時(shí)間戳來(lái)確定某些條件。這可以被利用來(lái)操縱合約的狀態(tài)。

我們將在以下幾點(diǎn)討論一些常見的漏洞。你也可以查看我的其他文章,了解更多關(guān)于可重入和整數(shù)溢出/下溢漏洞的信息。

第 7 部分:存儲(chǔ)變量漏洞

以太坊智能合約中最常見的安全漏洞之一是使用不安全的存儲(chǔ)變量。這些變量可用于存儲(chǔ)敏感信息,如私鑰和密碼,如果沒有得到適當(dāng)?shù)谋Wo(hù),這些信息很容易被泄露。

有幾種不同的方法來(lái)保護(hù)存儲(chǔ)變量,例如使用像 SafeMath 這樣的庫(kù)(0.8 之后 Solidity 內(nèi)置了 SafeMath),它可以確保所有的數(shù)學(xué)操作都以安全的方式進(jìn)行。

其他方法包括使用硬件安全模塊(HSM)來(lái)存儲(chǔ)變量,或使用多簽名錢包來(lái)保護(hù)私鑰。防止存儲(chǔ)漏洞的最佳方法是使用這些方法的組合,因?yàn)槊糠N方法都有自己的優(yōu)勢(shì)和弱點(diǎn)。通過(guò)使用多層安全保護(hù),攻擊者要破壞智能合約中存儲(chǔ)的數(shù)據(jù)就更難了。

第 8 部分:誤用轉(zhuǎn)賬和發(fā)送

談到智能合約,為了避免任何誤用,有幾件關(guān)鍵的事情需要記住。首先,最重要的是要記住,智能合約是不可改變的。這意味著,一旦他們被部署,他們就不能被改變。因此,在部署之前,對(duì)你的代碼進(jìn)行雙重檢查和三重檢查是至關(guān)重要的。

一個(gè)可能導(dǎo)致誤用智能合約的常見錯(cuò)誤是混淆了 transfer 和 send 功能。這兩個(gè)函數(shù)看起來(lái)很相似,但它們實(shí)際上作用不同。transfer 可用與轉(zhuǎn)移所有權(quán),而 send 功能是用來(lái)發(fā)送資產(chǎn)。

簡(jiǎn)而言之,誤用智能合約會(huì)產(chǎn)生嚴(yán)重的后果。在部署你的代碼之前,一定要仔細(xì)檢查,并確保你了解 transfer 和 send 功能之間的區(qū)別。

第 9 部分:函數(shù)可見性漏洞

談到智能合約中函數(shù)的可見性,主要有兩種類型的漏洞可能發(fā)生。第一種類型的漏洞是不應(yīng)該被公開 public 的函數(shù)被標(biāo)記為 public 。如果函數(shù)沒有被正確地標(biāo)記為私有(private),或者可見性被意外地設(shè)置為公開(public),就會(huì)發(fā)生這種情況。這種類型的漏洞可以被任何能夠訪問(wèn)合約的人利用,并可能導(dǎo)致合約被破壞。

第二種類型的漏洞是當(dāng)一個(gè)函數(shù)在不應(yīng)該是私有的情況下被變成了私有。如果可見性被意外地設(shè)置為私有,或者沒有被正確地標(biāo)記為公共,就會(huì)發(fā)生這種情況。這種類型的漏洞可以被任何能夠訪問(wèn)合約的人所利用,并可能導(dǎo)致合約被破壞。

第 10 部分:整數(shù)算術(shù)錯(cuò)誤

當(dāng)你在編寫智能合約時(shí),一定要注意整數(shù)算術(shù)錯(cuò)誤。當(dāng)你用過(guò)大或過(guò)小的整數(shù)進(jìn)行計(jì)算時(shí),這些錯(cuò)誤就會(huì)發(fā)生。

例如,假設(shè)你試圖計(jì)算一個(gè)智能合約中所有代幣的總價(jià)值。每個(gè)代幣的價(jià)值被存儲(chǔ)為一個(gè)整數(shù)。如果合約中的代幣超過(guò) 2,147,483,647 個(gè),那么總價(jià)值將太大,無(wú)法使用一個(gè)整數(shù)變量完整表示。這將導(dǎo)致一個(gè)錯(cuò)誤。

為了避免這種情況,你可以使用一個(gè)像 SafeMath 這樣的庫(kù)(0.8 之后 Solidity 內(nèi)置了 SafeMath),它可以幫助你安全地進(jìn)行整數(shù)運(yùn)算。

第 11 部分:循環(huán)和遞歸的漏洞

正如我們所看到的,循環(huán)和遞歸可以在編程中發(fā)揮巨大的作用。然而,它們也可以被濫用來(lái)制造漏洞。

這方面的一個(gè)例子是所謂的 "無(wú)限循環(huán)"。這是指一個(gè)程序被卡在一個(gè)循環(huán)中,而且永遠(yuǎn)無(wú)法退出。這可能導(dǎo)致程序崩潰,或者更糟糕的是,它會(huì)消耗所運(yùn)行的系統(tǒng)的所有資源,造成拒絕服務(wù)攻擊。這對(duì)智能合約來(lái)說(shuō)是不利的,因?yàn)樗赡軐?dǎo)致用戶虧損。

另一個(gè)例子是當(dāng)一個(gè)程序遞歸太深時(shí)。這也可能導(dǎo)致崩潰,或者導(dǎo)致程序耗盡內(nèi)存而被迫終止。

這兩個(gè)漏洞都可以被攻擊者利用,給系統(tǒng)或其用戶造成問(wèn)題。因此,意識(shí)到它們并采取措施防止它們被利用是很重要的。

第 12 部分:預(yù)防、檢測(cè)、緩解和補(bǔ)救。

預(yù)防:預(yù)防智能合約問(wèn)題的最好方法是有一個(gè)徹底和完整的測(cè)試過(guò)程。這應(yīng)該包括合約代碼的單元測(cè)試,以及合約在預(yù)定環(huán)境中的功能測(cè)試。同樣重要的是,為合約制定一個(gè)清晰明確的規(guī)范,以便所有相關(guān)方都能準(zhǔn)確理解合約應(yīng)該做什么。

檢測(cè):智能合約的問(wèn)題通??梢酝ㄟ^(guò)監(jiān)測(cè)合約的性能并將其與預(yù)期行為進(jìn)行比較來(lái)檢測(cè)。如果有任何差異,這可能表明合約有問(wèn)題。也可以使用靜態(tài)分析工具來(lái)檢查合約代碼中的錯(cuò)誤或潛在的漏洞。

緩解:如果在智能合約中發(fā)現(xiàn)問(wèn)題,必須采取措施緩解問(wèn)題。這可能涉及改變合約代碼以修復(fù)問(wèn)題,也可能涉及改變合約的使用方式。例如,如果一個(gè)合約被發(fā)現(xiàn)容易受到某種特定的攻擊,可能會(huì)通過(guò)改變合約的使用方式來(lái)緩解問(wèn)題,從而使攻擊不再可能。

補(bǔ)救:如果一個(gè)問(wèn)題不能被緩解,那么可能有必要采取措施來(lái)補(bǔ)救這個(gè)問(wèn)題。這可能涉及到用一個(gè)沒有同樣問(wèn)題的新版本來(lái)替換合約,或者可能涉及到從使用中完全刪除合約。

第 13 部分:用于檢測(cè)漏洞的自動(dòng)工具

隨著智能合約的普及,對(duì)能夠掃描這些合約漏洞的自動(dòng)化工具的需求也在不斷增加。

目前有許多不同的自動(dòng)化漏洞掃描器,每個(gè)都有自己的優(yōu)勢(shì)和不足:

Mythril是一個(gè)流行的選擇,它使用 symbolic 執(zhí)行來(lái)分析合約并找到潛在的漏洞。

Oyente是另一個(gè)流行的選擇,它使用靜態(tài)分析來(lái)尋找潛在的問(wèn)題。

Securify是一個(gè)較新的工具,它使用靜態(tài)和動(dòng)態(tài)分析的組合來(lái)尋找漏洞。

這些掃描器并不總是 100%準(zhǔn)確的,所以自己進(jìn)行測(cè)試和人工審查是很重要的。


智能合約黑客/審計(jì)的資源

視頻:

https://www.youtube.com/watch?v=LLiJK_VeAvQ 審計(jì)智能合約--以太坊應(yīng)用程序的安全審查

https://www.youtube.com/watch?v=DkVpUqzU8SI 了解如何審計(jì)以太坊智能合約--由 bloctrax 介紹

https://www.youtube.com/watch?v=WchXkMlKj9w[5]BHIS | 區(qū)塊鏈安全和智能合約審計(jì)入門

https://www.youtube.com/watch?v=qRznPHUFCLA 智能合約 101--如何審計(jì) NFT 項(xiàng)目

https://www.youtube.com/watch?v=PTE1Hcqup_M 高級(jí)智能合約安全和審計(jì)工具

https://www.youtube.com/watch?v=0aJfCug1zTM 智能合約安全和審計(jì) 101

https://www.youtube.com/watch?v=R1eZCmR91vQ 如何查找 Solidity 漏洞

https://www.youtube.com/watch?v=IOUnhCTw6tE 高級(jí)智能合約黑客攻擊

學(xué)習(xí)攻擊

https://consensys.github.io/smart-contract-best-practices/known_attacks/

https://www.youtube.com/watch?v=apCGPh7tKhw

https://www.youtube.com/watch?v=R1eZCmR91vQ

https://swcregistry.io/

用于練習(xí)

https://www.damnvulnerabledefi.xyz/index.html

https://ethernaut.openzeppelin.com/

一個(gè)路線圖:

https://github.com/razzorsec/AuditorsRoadmap

awesome-ethereum-security:

https://github.com/crytic/awesome-ethereum-security

結(jié)論

本文提供了一份關(guān)于審計(jì)智能合約的指南。通過(guò)了解審計(jì)過(guò)程,你可以更好地準(zhǔn)備識(shí)別和糾正合約中的潛在漏洞。

原文:https://medium.com/coinmonks/the-ultimate-smart-contract-auditing-guide-ddec6e78e7dc

參考資料

[1]?登鏈翻譯計(jì)劃:?https://github.com/lbc-team/Pioneer

[2]?翻譯小組:?https://learnblockchain.cn/people/412

[3]?Tiny 熊:?https://learnblockchain.cn/people/15

[4]?Unsplash:?https://unsplash.com/es/@michael_f?utm_source=medium&utm_medium=referral

[5]?https://www.youtube.com/watch?v=WchXkMlKj9w:?https://www.youtube.com/watch?v=WchXkMlKj9w&t=12s文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-723685.html

到了這里,關(guān)于【區(qū)塊鏈 | 審計(jì)】智能合約審計(jì)指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【論文閱讀】 智能合約安全漏洞檢測(cè)技術(shù)研究綜述

    【論文閱讀】 智能合約安全漏洞檢測(cè)技術(shù)研究綜述

    2016 年 6 月,黑客利用 DAO(decentralized autonomous organization)合約的 可重入漏洞 , 竊取了價(jià)值約 6000 萬(wàn)美元的以太幣(即以太坊數(shù)字貨幣); 2017 年 7 月, 由于 Parity 多簽名錢包合約的 Delegatecall 漏洞 (parity multi-sig wallet delegatecall), 價(jià)值近 3 億美元的以太幣被凍結(jié); 2018 年 4 月, 惡意攻擊者

    2024年03月14日
    瀏覽(34)
  • 什么是智能合約安全審計(jì)

    什么是智能合約安全審計(jì)

    智能合約安全審計(jì)可以對(duì)項(xiàng)目的智能合約進(jìn)行詳細(xì)分析,這些措施對(duì)于保障合約投資資金非常重要,由于區(qū)塊鏈上的所有交易都是最終交易,因此一旦資金被盜將無(wú)法找回。 通常情況下,審計(jì)員會(huì)檢查智能合約的代碼,生成一份報(bào)告,并將報(bào)告交予項(xiàng)目組使用。然后會(huì)發(fā)布一

    2024年02月05日
    瀏覽(25)
  • 智能合約安全分析,Vyper 重入鎖漏洞全路徑分析

    智能合約安全分析,Vyper 重入鎖漏洞全路徑分析

    7 月 30 日 21:10 至 7 月 31 日 06:00 鏈上發(fā)生大規(guī)模攻擊事件,導(dǎo)致多個(gè) Curve 池的資金損失。漏洞的根源都是由于特定版本的 Vyper 中出現(xiàn)的重入鎖故障。 通過(guò)對(duì)鏈上交易數(shù)據(jù)初步分析,我們對(duì)其攻擊的交易進(jìn)行整理歸納,并對(duì)攻擊流程進(jìn)一步的分析,由于攻擊涉及多個(gè)交易池。

    2024年02月09日
    瀏覽(23)
  • 歡迎來(lái)到Web3.0的世界:Solidity智能合約安全漏洞分析

    歡迎來(lái)到Web3.0的世界:Solidity智能合約安全漏洞分析

    智能合約是運(yùn)行在區(qū)塊鏈網(wǎng)絡(luò)中的一段程序,經(jīng)由多方機(jī)構(gòu)自動(dòng)執(zhí)行預(yù)先設(shè)定的邏輯,程序執(zhí)行后,網(wǎng)絡(luò)上的最終狀態(tài)將不可改變。智能合約本質(zhì)上是傳統(tǒng)合約的數(shù)字版本,由去中心化的計(jì)算機(jī)網(wǎng)絡(luò)執(zhí)行,而不是由政府或銀行等中央集權(quán)機(jī)構(gòu)執(zhí)行。智能合約程序可以用Solidi

    2024年02月03日
    瀏覽(26)
  • 【區(qū)塊鏈 | 預(yù)言機(jī)】從零開始使用Chainlink預(yù)言機(jī)(2)- 智能合約中使用更安全的隨機(jī)數(shù)-代碼實(shí)戰(zhàn)

    【區(qū)塊鏈 | 預(yù)言機(jī)】從零開始使用Chainlink預(yù)言機(jī)(2)- 智能合約中使用更安全的隨機(jī)數(shù)-代碼實(shí)戰(zhàn)

    Chainlink最近推出一款革命性的產(chǎn)品,VRF—Verifiable Random Function可驗(yàn)證隨機(jī)數(shù),給智能合約帶來(lái)了真正安全的隨機(jī)數(shù)。本文我們就來(lái)介紹一下如何在智能合約中使用VRF吧。 我們先簡(jiǎn)要介紹一下Chainlink VFR的工作流程。 首先,智能合約應(yīng)用,也就是我們的Dapp,需要先發(fā)起一個(gè)獲取

    2024年02月02日
    瀏覽(30)
  • 區(qū)塊鏈智能合約測(cè)試框架Foundry技術(shù)指南

    在區(qū)塊鏈開發(fā)領(lǐng)域,智能合約的安全性和可靠性至關(guān)重要。鑒于區(qū)塊鏈的不可變性,智能合約中的任何錯(cuò)誤都可能導(dǎo)致不可逆轉(zhuǎn)的后果,包括重大的財(cái)務(wù)損失。這凸顯了徹底測(cè)試的關(guān)鍵重要性。Foundry 是一種 Solidity 測(cè)試框架,在這一領(lǐng)域中成為一個(gè)強(qiáng)大的工具,為開發(fā)人員提

    2024年02月03日
    瀏覽(20)
  • 漏洞挖掘和安全審計(jì)的技巧與策略

    漏洞挖掘和安全審計(jì)的技巧與策略

    ??歡迎來(lái)到AIGC人工智能專欄~探索漏洞挖掘和安全審計(jì)的技巧與策略 ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁(yè):IT·陳寒的博客 ??該系列文章專欄:AIGC人工智能 ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實(shí)戰(zhàn)項(xiàng)目 AIGC人工智能 ??文章作者技術(shù)和水平有限,如果文中出

    2024年02月11日
    瀏覽(26)
  • 5.5 漏洞掃描:Web安全漏洞掃描及審計(jì)

    5.5 漏洞掃描:Web安全漏洞掃描及審計(jì)

    目錄 一、預(yù)備知識(shí):Web漏洞的獲取方法與w3af 1. 漏洞掃描 2. 漏洞掃描器 3.? w3af 二、實(shí)驗(yàn)環(huán)境 三、實(shí)驗(yàn)步驟 四、實(shí)驗(yàn)思考 1. 漏洞掃描 ????????漏洞掃描除用于網(wǎng)絡(luò)攻擊外,還用于對(duì)網(wǎng)絡(luò)的安全防御。系統(tǒng)管理員通過(guò)對(duì)網(wǎng)絡(luò)漏洞的系統(tǒng)掃描,全面地了解網(wǎng)絡(luò)的安全狀態(tài),

    2024年02月09日
    瀏覽(18)
  • 區(qū)塊鏈智能合約代碼示例

    ????????以下是一個(gè)簡(jiǎn)單的區(qū)塊鏈智能合約代碼示例: 該合約具有以下功能: 定義了一個(gè)名為 SimpleContract 的合約。 定義了一個(gè)名為 myData 的公共整數(shù)變量。 定義了一個(gè)名為 setMyData 的公共函數(shù),該函數(shù)接受一個(gè) uint 類型的參數(shù) newData,并將其設(shè)置為 myData 的新值。 在 So

    2024年02月14日
    瀏覽(22)
  • 【區(qū)塊鏈 | 智能合約】Ethereum源代碼 - 智能合約地址生成算法

    當(dāng)提交智能合約部署后,會(huì)返回智能合約的地址。智能合約地址的生成邏輯在eth.api.go的submitTransaction函數(shù)中:

    2024年02月13日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包