月旦會計財稅網
首頁跨界CPA金融科技技術概覽(13)——智能合約審計(上)

金融科技技術概覽(13)——智能合約審計(上)

文章發表: 2020/07/16

鄭旭高

  • GoldWise Consulting Group/萬旭浤資訊科技負責人

一、背景

何謂審計?相信月旦會計財稅網的讀者再熟悉不過。簡言之,審計是以合理有系統之程序,對受查者經濟活動之有關聲明,客觀地蒐集證據,加以評估以定其符合既定標準的程度,並將查核結果傳達給利害關係人的過程。而智能合約的定義,如金融科技技術概覽之前幾期所述,於此不贅。那麼,甚麼是智能合約審計?本篇將針對此議題進行探討。

二、焦點檢視

隨著智能合約的大量湧現,程式開發人員對編碼過程中完整性與安全性的要求就日益重要,智能合約審計也應運而生。選定一審計期間,針對所選定之智能合約地址與名稱,加以評估其符合程度,並將審計結果傳達給報告閱覽人(比如數位貨幣交易所),透過仔細研究智能合約代碼,在使用之前發現智能合約中之錯誤、缺失或風險,並設法進行修改或補救,稱之為智能合約審計。一份智能合約審計報告,並非一份驗證代碼100%安全的法律文件,也無法保證未來不會發生錯誤或產生缺失。本審計工作之責任在於根據查核結果對於上開智能合約表示意見。

審計之重心之一為智能合約安全性,對可能存在的駭客攻擊方式與隨之可能產生之結果進行討論分析,主要目的係為確保整體智能合約程式碼能順暢運行。實務上常於報告中分別列示智能合約中之嚴重缺失、危害有限之缺失與低嚴重性的缺失,缺失的類型各有不同。首先介紹的是整型溢出缺失(Arithmetic Issues),比如一個小朋友,他對於加法的運算方式是使用他的十根手指頭。如果問小朋友”1加2等於多少“,他會扳手指頭算出是3。如果問小朋友”5加6等於多少”,他扳完手指頭後,會發現十根手指頭不夠用了,於是就把手指頭扳回來,說結果是1。因為對於小朋友來說,這個問題超出他的範圍-溢出了。

又如重入缺失(Reentrancy),2016年6月17日,當時區塊鏈最大的項目之一「The DAO」遭到攻擊。其原先之運作模式約略為以下步驟,首先把要求「Split DAO」投資者之資金轉進「Child DAO」,而後結算投資者的利潤並轉給投資人,最後更新DAO智能合約之結餘。而智能合約之漏洞出現在結算投資者的利潤時,攻擊者利用此漏洞,當程式碼運作到此時,使程式碼暫停,並再次呼叫「Split DAO」。於是攻擊者就可以重覆要求智能合約反覆的退還相關數目的DAO幣到指定的「Child DAO」。攻擊者前後實現了二百多次攻擊,成功使三百多萬個以太幣被分離,也導致以太幣分叉為ETH(Ethereum)與ETC(Ethereum Classic)。

再如訪問缺失(Access Control),2018年6月,韓國項目ICON(ICX)被爆出其中的安全漏洞使Transfer功能失效。雖然該失效之功能並非能使黑客盜用,但卻能使轉帳、交易等功能無法正常使用。由於邏輯運算符號寫錯,導致除了合約所有者之外之任何人均可任意開啟或關閉合約的轉帳功能(其中的「!=」應該寫為「==」,此錯誤使得合約的功能完全相反)。由於此等錯誤乃相當初級的錯誤,藉由此錯誤我們可以總結到,智能合約之撰寫,尚須相當之審計方可發布,以免因為一時的疏忽帶給市場與投資人無法挽回的損失。

其他如合約調用缺失(Call)、拒絕服務缺失(Denial of Service, DOS)、短地址攻擊(Short Address Attack)等。以拒絕服務缺失為例,比如一家餐廳,正常情況下可以容納20桌客人吃飯。有一天,來了20個鬧事的人,來了也不吃飯,就點一杯飲料,一個人做一桌,趕也趕不走。導致想來吃飯的其他客人也不敢進來用餐,餐廳也因為資源(餐桌)被占用甚至耗盡導致無法經營。若我們把上述案例類比於智能合約,即是攻擊者透過消耗合約中的各項資源,使用戶短暫或永久的退出其已無法操作之智能合約,從而把數位貨幣鎖於受攻擊之合約中。

最後我們再介紹一個tx.origin漏洞。比如一個十歲的小朋友小白很喜歡打電動遊戲,但遊戲開發商因應相關規範要求,故設計了一個限制未成年玩家遊戲時間的機制,只允許身分證上年滿十八歲的成年玩家無限制遊玩。於是,小白偷了媽媽的身分證去驗證,也藉此通過了遊戲防止未成年人沉迷的機制。本來應該驗證的是小白的身分證,卻被小白偷偷掉換了,使小白擁有不該擁有的權限,稱為tx.origin漏洞。

整體而言,智能合約審計是針對權限控制(權限漏洞、權限過大)、安全設計(編譯器版本、模組使用、地址)、代碼優化、設計邏輯等為之,覆蓋層面相當廣,實務上也累積不少更細的分類。由於智能合約有永固性(一旦部署、上傳區塊鏈,即不可更改,故若萬一有漏洞,也無法補救,只能放棄並轉移到新的智能合約),故要在部署(Deploy)之前進行程式碼審計、盤查漏洞、分析彙整確保其質量。合約多如牛毛、漏洞也花樣百出,然培養安全意識是不變的基本道理,在上述的舉例中,我們可以看出相關的審計方法是有原則上的共通性,透過若干的工具可以協助我們找出對安全性造成影響(或造成隱患)的漏洞。

三、結論與展望

傳統著重在財務報表的審計工作,日漸隨著技術與商業模式的進步,可能迎來新的風貌。而此等智能合約審計也將需要更豐富的技能,目前普遍為資訊背景為主的團隊在執行實務工作。智能合約審計係在於對完整性與安全性等重要面向進行整體評估,對於重要程式碼進行逐行的評析,最終做成總結。我們後續的金融技術概覽——智能合約審計,會再向大家介紹幾項其他類型的缺失及漏洞。

延伸閱讀

高點會計專班

審計公報,審計準則公報,台灣VS國際《最新變革》,陳仁易老師,高點高上公職
公職考試,稅法最新修法,不可不知道的《必考重點》,曾繁宇老師,高點高上公職
會計師,審計學,精準解題,陳仁易老師,專技會計師,高點會計專班
會計師,高等會計學,精闢解析,郭庭銨老師,專技會計師,高點會計專班
高普考,112年高普考解題,財政學&經濟學,張政老師,公職考試,高點高上公職

精彩深度文章,盡在月旦會計財稅網

我想深入了解,《月旦會計實務研究》、《月旦財稅實務釋評》

  • 姓名:
  • 手機:
  • Email:
  • 職業:

    會計師事務所

    記帳業

    公司財會人員

    國考考生

    其他:

  • 雜誌:

    月旦會計實務研究

    月旦財稅實務釋評

請輸入驗證碼: 按一下重取驗證碼 (請區分大小寫)
^