本公開涉及智能合約安全,更具體地涉及一種智能合約漏洞數(shù)據(jù)集構(gòu)建方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、智能合約,作為區(qū)塊鏈技術(shù)的核心構(gòu)件,扮演著自動(dòng)執(zhí)行合約條款的關(guān)鍵角色,一旦預(yù)設(shè)條件達(dá)成,便能自主觸發(fā)執(zhí)行流程。然而,在聯(lián)盟鏈的語(yǔ)境下,出于對(duì)安全及隱私保護(hù)的嚴(yán)密考量,合約的公開數(shù)量極為有限且獲取難度頗高。這一現(xiàn)狀直接導(dǎo)致難以搜集到充足的合約樣本,這對(duì)于構(gòu)建漏洞數(shù)據(jù)集構(gòu)成了不小的挑戰(zhàn)。而漏洞數(shù)據(jù)集,作為漏洞檢測(cè)模型研發(fā)與優(yōu)化的加速器,對(duì)于提升聯(lián)盟鏈的安全性具有不可或缺的作用,它不僅能夠?yàn)槁┒礄z測(cè)工具的有效性評(píng)估提供堅(jiān)實(shí)的基準(zhǔn),還能為聯(lián)盟鏈的安全防護(hù)筑起一道堅(jiān)實(shí)的防線。
技術(shù)實(shí)現(xiàn)思路
1、鑒于上述問題,本公開提供了一種智能合約漏洞數(shù)據(jù)集構(gòu)建方法、裝置、設(shè)備及介質(zhì)。
2、根據(jù)本公開的第一個(gè)方面,提供了一種智能合約漏洞數(shù)據(jù)集構(gòu)建方法,包括:獲取原始合約代碼;對(duì)原始合約代碼進(jìn)行預(yù)處理,得到預(yù)處理的合約代碼;調(diào)研并確定漏洞類型以及對(duì)應(yīng)的漏洞定義;基于漏洞類型以及漏洞定義設(shè)計(jì)每種漏洞類型的模型提示詞;以及基于模型提示詞、預(yù)處理的合約代碼以及漏洞數(shù)量,利用大語(yǔ)言模型生成帶有漏洞的合約代碼,得到智能合約漏洞數(shù)據(jù)集,其中,大語(yǔ)言模型通過(guò)在大規(guī)模文本數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,具有豐富的語(yǔ)言知識(shí)和代碼模式,能夠生成高質(zhì)量的文本和代碼。
3、在一些示例性的實(shí)施例中,方法還包括:對(duì)帶有漏洞的合約代碼進(jìn)行質(zhì)量校驗(yàn),得到目標(biāo)智能合約漏洞數(shù)據(jù)集。
4、在一些示例性的實(shí)施例中,對(duì)原始合約代碼進(jìn)行預(yù)處理包括:使用哈希算法對(duì)原始合約代碼內(nèi)容進(jìn)行去重,得到去重的合約代碼;使用語(yǔ)法分析工具檢查去重的合約代碼中的語(yǔ)法錯(cuò)誤,以排除無(wú)效的合約代碼,得到有效的合約代碼;以及使用自定義規(guī)則過(guò)濾、測(cè)試有效的合約代碼,得到預(yù)處理的合約代碼。
5、在一些示例性的實(shí)施例中,漏洞類型包括隨機(jī)數(shù)生成、系統(tǒng)時(shí)間戳、具體化變量地址、全局變量、字段聲明、程序并發(fā)、數(shù)據(jù)結(jié)構(gòu)迭代、外部文件訪問、外部庫(kù)調(diào)用、網(wǎng)絡(luò)服務(wù)、系統(tǒng)命令執(zhí)行、未加密的敏感數(shù)據(jù)、未使用的隱私數(shù)據(jù)管理機(jī)制、跨通道鏈碼調(diào)用、范圍風(fēng)險(xiǎn)查詢以及先寫后讀。
6、在一些示例性的實(shí)施例中,利用大語(yǔ)言模型生成帶有漏洞的合約代碼包括:從預(yù)處理的合約代碼中選取第一預(yù)設(shè)數(shù)量的預(yù)處理的合約代碼;利用大語(yǔ)言模型為選取的每個(gè)預(yù)處理的合約代碼添加第一預(yù)設(shè)數(shù)量的漏洞類型;重復(fù)上述步驟直至在合約代碼中添加所有類型的漏洞。
7、在一些示例性的實(shí)施例中,利用大語(yǔ)言模型生成帶有漏洞的合約代碼還包括:重復(fù)執(zhí)行上述生成帶有漏洞的合約代碼的步驟,以確保數(shù)據(jù)的規(guī)模和多樣性;從預(yù)處理的合約代碼中隨機(jī)選擇不少于漏洞類型數(shù)量的合約代碼;利用大語(yǔ)言模型在選取的合約代碼中依次分別添加其中一種漏洞,以確保所有漏洞類型的標(biāo)簽在數(shù)據(jù)集中都存在。
8、在一些示例性的實(shí)施例中,對(duì)帶有漏洞的合約代碼進(jìn)行質(zhì)量校驗(yàn)包括:使用哈希算法對(duì)帶有漏洞的合約代碼進(jìn)行去重,得到去重的帶有漏洞的合約代碼;使用語(yǔ)法分析工具檢查去重的帶有漏洞的合約代碼中的語(yǔ)法錯(cuò)誤,以排除無(wú)效的合約代碼,得到有效的帶有漏洞的合約代碼;以及依據(jù)預(yù)設(shè)的漏洞規(guī)則,人工校對(duì)帶有漏洞的合約代碼,得到目標(biāo)智能合約漏洞數(shù)據(jù)集。
9、本公開的第二方面提供了一種智能合約漏洞數(shù)據(jù)集構(gòu)建裝置,包括:獲取模塊,用于獲取原始合約代碼;預(yù)處理模塊,用于對(duì)原始合約代碼進(jìn)行預(yù)處理,得到預(yù)處理的合約代碼;漏洞確定模塊,用于調(diào)研并確定漏洞類型以及對(duì)應(yīng)的漏洞定義;第一生成模塊,用于基于漏洞類型以及漏洞定義設(shè)計(jì)每種漏洞類型的模型提示詞;以及第二生成模塊,用于基于模型提示詞、預(yù)處理的合約代碼以及漏洞數(shù)量,利用大語(yǔ)言模型生成帶有漏洞的合約代碼,得到智能合約漏洞數(shù)據(jù)集,其中,大語(yǔ)言模型通過(guò)在大規(guī)模文本數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,具有豐富的語(yǔ)言知識(shí)和代碼模式,能夠生成高質(zhì)量的文本和代碼。
10、本公開的第三方面提供了一種電子設(shè)備,包括:一個(gè)或多個(gè)處理器;存儲(chǔ)器,用于存儲(chǔ)一個(gè)或多個(gè)計(jì)算機(jī)程序,其中,上述一個(gè)或多個(gè)處理器執(zhí)行上述一個(gè)或多個(gè)計(jì)算機(jī)程序以實(shí)現(xiàn)上述方法的步驟。
11、本公開的第四方面還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序或指令,上述計(jì)算機(jī)程序或指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述方法的步驟。
1.一種智能合約漏洞數(shù)據(jù)集構(gòu)建方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對(duì)所述原始合約代碼進(jìn)行預(yù)處理包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述漏洞類型包括隨機(jī)數(shù)生成、系統(tǒng)時(shí)間戳、具體化變量地址、全局變量、字段聲明、程序并發(fā)、數(shù)據(jù)結(jié)構(gòu)迭代、外部文件訪問、外部庫(kù)調(diào)用、網(wǎng)絡(luò)服務(wù)、系統(tǒng)命令執(zhí)行、未加密的敏感數(shù)據(jù)、未使用的隱私數(shù)據(jù)管理機(jī)制、跨通道鏈碼調(diào)用、范圍風(fēng)險(xiǎn)查詢以及先寫后讀。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述利用大語(yǔ)言模型生成帶有漏洞的合約代碼包括:
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述利用大語(yǔ)言模型生成帶有漏洞的合約代碼還包括:
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對(duì)所述帶有漏洞的合約代碼進(jìn)行質(zhì)量校驗(yàn)包括:
8.一種智能合約漏洞數(shù)據(jù)集構(gòu)建裝置,其特征在于,所述裝置包括:
9.一種電子設(shè)備,包括:
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序或指令,其特征在于,所述計(jì)算機(jī)程序或指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)根據(jù)權(quán)利要求1~7中任一項(xiàng)所述方法的步驟。