

使用 Slither 來檢測你的 Solidity 智能合約程式碼
source link: https://www.frank.hk/blog/slither-solidity-scanner/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用 Slither 來檢測你的 Solidity 智能合約程式碼
以太坊的智能合約程式一旦發佈便無法更改,因此程式的安全性尤為重要。因此,使用檢測工具對程式碼進行檢測,可以發現一些常見的安全隱患,避免因程式漏洞引致的各種損失。
SlitherSlither 是一個用 Python 編寫的 Solidity 的「靜態」檢測工具,可以偵測常見的 Solidity 程式漏洞。其功能包括:
- 檢測 Solidity的常見程式漏洞,誤報率低;
- 標識錯誤在源程式中發生的位置;
- 可以集成到 CICD 中使用;
- 正確解析 99.9% 的所有公共 Solidity 程式;
- 掃描速度快,每個智能合約平均執行時間少於 1 秒;
官網提供了多種安裝方式,因為考慮到有太多的依賴和開發環境設定,作為一個懶人,本人認為用 docker 方式安裝會最方便,因此本文就以 docker 安裝來舉例,其他安裝方式可以查閱官網的說明。
安裝 docker image:
安裝 docker image 之後就可以運行 slither 了,但要記得指定 docker 共享 volume,這樣才可以在 docker 容器內訪問到電腦中的檔案:
執行上述指令後便進入了 slither 的 container 中:
檢查 solc 版本
這裡要注意,因為 solidity 有很多不同的版本,掃描時最好根據要掃描的 solidity 檔案指定對應版本的 solc 編譯器。而預設的 image 中未必有你想要的 solc 編譯器版本,你可以在 container 內運行以下指令,可以查看已經安裝的 solc
編譯器:
如果發現沒有安裝對應的 solc 版本,則需要先安裝 solc 後再繼續。
掃描本地 sol 檔案
因為共享了共享目錄,我們在 container 就可以直接運行 slither 指令:
其中 path_to_your_contract.sol
是你要掃描的 solidity 檔案, --solc /usr/bin/solc-v0.4.15
則是指定 solc 編譯器的版本。
如上圖所示, slither 會在熒幕上顯示出掃描結果。根據問題的嚴重程度,會有不同的顏色表示。同時亦會給出問題的解釋,可以點開相應的連結查看。
如果想要將掃描結果以 json 形式輸出到檔案中,可以執行:
如果你的智能合約中使用了類似 import @openzeppelin/xxx
等的以 “@” 開頭的 import 語句,可能會出現 File not found 的錯誤:
解決方法是需要指定 --solc-remaps
來告訴編譯器 openzeppelin 的具體位置:
掃描已經發佈的合約
slither 亦支援掃描已經將原始碼發佈到 etherscan 上的合約, 運行:
如果運行出現錯誤,可能是 solc 版本不相符, 使用 solc-select
切換到對應版本後再運行即可。如果對應版本沒有安裝,請參考上一節的做法安裝即可。
訂閱我的網站,接收更新以及其他有趣的消息 😙 。 訂閱不收費,走過路過別錯過。
Subscribe to my website, I will email you if any new posts or interesting stuff available.
如果你喜歡我的內容,請考慮用一杯咖啡支持我一下吧,非常感謝 🥰 。
If you like my contents, please support me via BuyMeCoffee, Thanks a lot.
其它相關文章
Recommend
-
44
Slither是第一个开源的针对Solidity语言的静态分析框架。Slither速度非常快,准确性也非常高,它能够在不需要用户交互的情况下,在几秒钟之内找到真正的漏洞。该工具高度可配置,并且提供了多种API来帮助研究人员审计和分析Solidity代码。...
-
40
A denial-of-service (DoS) vulnerability, dubbed ‘Gridlock,’ was publicly reported on July 1st in one of Edgew...
-
32
Slither是一款以太坊智能合约静态安全检测工具 上篇学习了Mythril,一种动态的以太坊智能合约安全分析工具。今天来看看以太坊官方推荐的另一款静态智能合约分析工具Slither。 本篇文章不做工具的对比与评测...
-
9
安全很难。当用户的资金受到威胁时,这将变得更加困难。幸运的是,以太坊生态系统 在过去几年中已经成熟,现在有各种高质量的工具可以扫描你的以太坊智能合约中的安全漏洞, 虽然这些工具还不足以替代真正的审计。在这个教程中,我们将按介绍三种比较流行的安全...
-
5
slither-simil implementation draft by spilehchiha · Pull Request #666 · crytic/slither · GitHub
-
8
Solar Solar is a static analysis framework that tries to bring meaning to the phrase "middle out analysis". Solar prides itself on providing context-free interactive analysis. Build Instructions Clone a modified...
-
6
Copy link Member arcz commented
-
5
Copy link Member arcz commented
-
4
閱讀筆記: 「Mizu, 一套用來檢視 Kubernetes Traffic 的視覺化工具」 2022-05-25 25 「Mizu, 一套用來檢視 Kubernetes Traffic 的視覺化工具」 標題: 「Mizu, 一套用來檢視 Kubern...
-
8
Usage可升級合約要升級時,這時候的 codebase 則應該要有三個合約,Proxy, LogicContract_V1 和 LogicContract_V2 三個,範例合約如下:這邊的合約都有問題,檢...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK