[發明專利]一種自動化的智能合約代碼缺陷檢測系統和方法有效
| 申請號: | 201810792738.4 | 申請日: | 2018-07-18 |
| 公開(公告)號: | CN109063477B | 公開(公告)日: | 2021-04-20 |
| 發明(設計)人: | 楊霞 | 申請(專利權)人: | 成都鏈安科技有限公司 |
| 主分類號: | G06F21/56 | 分類號: | G06F21/56;G06Q20/40 |
| 代理公司: | 成都四合天行知識產權代理有限公司 51274 | 代理人: | 王記明 |
| 地址: | 610000 四川省成都市*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 自動化 智能 合約 代碼 缺陷 檢測 系統 方法 | ||
1.一種自動化的智能合約代碼缺陷檢測系統,其特征在于包括:
智能合約編譯器:用于接收區塊鏈智能合約源代碼,進行編譯得到智能合約源代碼語法樹和目標碼,并輸送給安全引擎控制器;
安全引擎控制器:接收智能合約編譯器輸出的語法樹和目標碼,并將語法樹輸入到規則匹配檢查器進行靜態代碼分析,將目標碼輸入到路徑遍歷檢查器進行缺陷代碼檢查;
規則匹配檢查器:規則匹配檢查器接收語法樹,并匹配缺陷代碼,然后將匹配信息發送至缺陷報告生成器;
路徑遍歷檢查器:用于接收安全引擎控制器發送的目標碼和區塊鏈平臺發送的區塊鏈信息,對接收到的目標碼進行全路徑遍歷,將結果發送給案例生成器;
案例生成器:用于接收路徑遍歷檢查器發送的路徑遍歷缺陷代碼檢查器生成的數據,然后將測試案例和表達式反例在區塊鏈平臺作為輸入來確認檢測出的缺陷代碼是否是真實缺陷代碼;
缺陷報告生成器:根據規則匹配檢查器缺陷代碼檢查結果和路徑遍歷檢查器檢查的結果,并通過區塊鏈平臺驗證過的缺陷代碼,生成智能合約漏洞檢查報告,并通過源碼映射器,定位缺陷代碼在智能合約源代碼中的位置,反饋給用戶;
還包括智能合約源碼映射引擎:用于提取區塊鏈智能合約源代碼,進缺陷代碼映射到源碼具體行,并發送給缺陷報告生成器,用于生成檢查報告;同時也將缺陷報告生成器的缺陷信息映射到區塊鏈智能合約源代碼,進行缺陷信息的反饋;
還包括定理求解證明器:用于對路徑遍歷器生成的缺陷代碼命題邏輯表達式進行滿足性求解,并生成測試案例和反例,反饋給路徑遍歷器;
安全模型庫:用戶儲存各種區塊鏈平臺的智能合約缺陷代碼模型,路徑遍歷檢查器根據安全模型庫中漏洞模型生成命題邏輯求解表達式;該模型庫可不斷的擴展或者豐富缺陷代碼模型。
2.根據權利要求1所述的一種自動化的智能合約代碼缺陷檢測系統,其特征在于所述路徑遍歷檢查器的包括符號執行虛擬機、滿足性求解表達式生成器,其中:
符號執行虛擬機:執行智能合約目標碼,虛擬機直接調用區塊鏈平臺函數接口,從區塊鏈平臺上提取目標碼中有關區塊鏈底層接口調用函數,實現全路徑遍歷;
滿足性求解表達式生成器:根據安全模型庫中缺陷代碼規則屬性,結合符號執行虛擬機的路徑,將各種缺陷代碼規則模型轉換為滿足性求解表達式。
3.根據權利要求1所述的一種自動化的智能合約代碼缺陷檢測系統,其特征在于所述規則匹配檢查器包括:
缺陷代碼匹配引擎:用于接收語法樹,并調用規則匹配庫中的存儲的區塊鏈平臺的智能合約缺陷代碼規則或模式,對語法樹進行搜索匹配后,發送至缺陷報告生成器;
規則匹配庫:用于儲存各種區塊鏈平臺的智能合約缺陷代碼規則或模式。
4.一種自動化的智能合約代碼缺陷檢測方法,其特征在于包括以下步驟:
(a)使用智能合約編譯器,對輸入的區塊鏈智能合約源代碼進行編譯,得到智能合約源代碼語法樹即AST和目標碼;
(b)通過安全引擎控制器將智能合約編譯器輸出的語法樹即AST和目標碼分別進行靜態代碼分析和路徑遍歷缺陷代碼檢查;
其中靜態分析包括以下步驟:
(b01)從安全引擎控制器中得到智能合約源碼編譯出的語法樹,并解析智能合約源代碼語法樹,將其存放在指定的數據結構中;
(b02)依據缺陷代碼規則庫中的規則,寫出各個規則匹配的正則表達式或規則屬性模式;
(b03)遍歷步驟(b01)數據結構中的語法樹,匹配步驟(b02)中的缺陷代碼規則的正則表達式和規則屬性模型,如果匹配成功,即定位缺陷代碼位置,生成缺陷代碼報告,并通過源碼映射,將缺陷代碼定位到源碼準確位置;
所述路徑遍歷檢查包括以下步驟:
(b11)從安全引擎控制器中得到智能合約源碼編譯出的目標碼,并將目標碼在符號執行虛擬機SVM中執行;
(b12)符號執行虛擬機執行智能合約目標碼,虛擬機直接調用區塊鏈平臺函數接口,從區塊鏈平臺上提取目標碼中有關區塊鏈底層接口調用函數,實現全路徑遍歷;
(b13)根據安全模型庫中缺陷代碼規則屬性,結合步驟(b12)中符號執行虛擬機執行的路徑,將各種缺陷代碼規則模型轉換為滿足性求解表達式;
(b14)使用定理證明求解器對步驟(b13)中的缺陷代碼滿足性求解表達式進行求解,得到測試案例和表達式的反例;
(b15)將步驟(b14)得到的測試案例和表達式反例在區塊鏈平臺作為輸入來確認檢測出的缺陷代碼是否是真實缺陷代碼;
(b16)對步驟(b15)確認結果生成檢測報告,并通過源碼映射,定位缺陷代碼在源代碼的位置
(c)根據步驟(b)的靜態分析和路徑遍歷檢查結果生成代碼檢查報告,并通過源碼映射器,定位缺陷代碼在智能合約源代碼中的位置,反饋給用戶。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于成都鏈安科技有限公司,未經成都鏈安科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810792738.4/1.html,轉載請聲明來源鉆瓜專利網。





