了解被認為易受攻擊的新上傳智能合約的趨勢
我們嘗試使用Oyente分析一些線上合約,並繪製了關於潛在易受攻擊的智能合約(“重入”錯誤)的創建時間圖表。
因此,y 軸是通過計算以下百分比來計算的:
# of vulnerable contracts / 300
我們在每個週期內隨機選擇 300 份合約。
整體趨勢不斷下降,這表明人們對可重入漏洞的認識,在編寫新的智能合約時正在使用更安全的設計策略。這對我們來說很有意義。
然而,正如你所看到的,在 2016-10 和 2017-11,“易受攻擊”的智能合約的數量有很大的下降。這是我們無法解釋的。我們知道臭名昭著的 DAO 漏洞是在 2016-07 年報告的,那麼在此期間可能會讓開發人員更加謹慎嗎?但為什麼 2016-11 和 2016-12 似乎有更高比例的易受攻擊契約?
一些想法,但沒有什麼具體的。可能已經接近投機…
我們隨機…
如何?您是否使用列出該時間段內部署的所有契約的來源?
或者您只是在查看使用轉移/提款模式的合約,並檢查其中有多少包含重入漏洞?
如果您使用的是所有合約的樣本,難道您沒有選擇那些實際包含轉賬/取款程式碼模式的樣本嗎?(在這種情況下,將沒有機會找到漏洞。)
…在每個時期內選擇 300 份合約。
這是一個足夠大的樣本量來排除你的結果是統計異常嗎?如果您重複使用更大的樣本量,您會得到相同的結果嗎?
整體趨勢不斷下降,這表明人們對可重入漏洞的認識,在編寫新的智能合約時正在使用更安全的設計策略。
另一種看待這個問題的方法是推測不知道自己在做什麼的新使用者的數量將超過成為更好程序員的現有使用者的數量。:-)
更有可能的是,人們(包括新使用者)正在使用來自Open Zeppelin等組的庫存合約模板,這些模板已經針對各種常見錯誤進行了審核。這不一定是因為他們是謹慎的程序員,了解攻擊向量;可能只是他們很懶惰,不想做這項工作。
我還沒有研究過的其他一些想法:
- 像 Open Zeppelin 這樣的組織是什麼時候開始提供經過審計的契約模板的?(不過,這可能無法解釋暫時的下跌。)
- 在這些時間段內,整個網路中發生了什麼有趣的事情嗎?(Etherscan 的圖表在這裡可能有用:https ://etherscan.io/charts )