近期ChatGPT爆火,其对传统文字工作的效率提高及总结能力让使用者惊艳。紧随其后CodeGPT这样基于GPT的插件出现,也充分体现了其对代码编写效率的提高。而最新GPT-4的发布,是否可以应用到对区块链、Solidity智能合约的审计中呢?
基于这样的疑问,我们进行了多种可行性测试。
测试环境及测试方法
测试使用的对比模型对象:GPT-3.5(Web),GPT-3.5-turbo-0301,GPT-4(Web)。
代码片段使用Prompt:HelpmediscovervulnerabilitiesinthisSoliditysmartcontract.
漏洞代码片段的检测对比
在此部分,我们分三次测试,使用历史上常见的漏洞代码作为测试一和测试二的用例,来验证其对基础漏洞的检测能力,测试三中使用中等难度的漏洞代码作为测试用例。
测试一
用例:《智能合约安全审计入门篇——Phishingwithtx.origin》
《华尔街日报》:Justin Sun正在评估购买FTX资产的可能性:11月22日消息,Justin Sun表示,他的同事正在评估从SBF手上购买FTX资产的可能性。Justin Sun周二在新加坡接受采访时称,我们对任何形式的交易持开放态度,我认为所有选项都已经摆到了桌面上。现在我们正在一项一项地评估资产,但据我所知,这个过程会很长,因为他们(FTX)已经进入了破产程序。[2022/11/23 7:57:51]
漏洞代码:
对GPT进行提问:
GPT-3.5(Web)answer
GPT-3.5-turbo-0301answer
GPT-4(Web)answer
ConstitutionDAO未能在苏富比上拍得美国《宪法》副本:11月19日消息,ConstitutionDAO未能在周四苏富比公开拍卖会上拍得最后一份私人拥有的第一版美国宪法印刷版。一位身份不明的竞标者以4100万美元(或扣除拍卖费用后的4320万美元)赢得该副本。这条消息在其官方Discord的公告中爆出。ConstitutionDAO表示“虽然这不是我们希望的结果,但今晚我们仍然创造了历史”。(此前CoinDesk报道ConstitutionDAO在苏富比上成功以4100万美元拍得美国《宪法》副本,随后剧情发生反转。)(Cointelegraph)[2021/11/19 6:59:32]
可以看到结果:3个测试版本都发现了关键的tx.origin相关问题。
测试二
用例:《智能合约安全审计入门篇——溢出漏洞》
漏洞代码:
瑞士投资管理公司Unigestion买入美元 对冲股市“崩盘”风险:由于新冠疫情反扑导致全球经济复苏遭遇挫折的可能性上升,管理着211亿美元资产的瑞士投资管理公司Unigestion增加了对美元的敞口。Unigestion策略师们最近在一份报告中表示,除了美国大选的潜在压力外,欧洲的防疫限制也可能会使经济扩张脱离正轨,这种威胁导致成长型资产的风险/回报前景恶化。根据报告,为了对冲风险资产遭到抛售的可能性,Unigestion把注放在了美元上,该货币极端的空头头寸水平提供了逆转的机会。“如果股市暴跌,美元的反弹可能会比许多人预期的更强,”策略师们写道,“因此,我们的动态分配现在加入了美元兑澳元、台币和挪威克朗的多头头寸。”(金十)[2020/10/28]
对GPT进行提问:
GPT-3.5(Web)answer
GPT-3.5-turbo-0301answer
动态 | 域名提供商Abaco Hosting接受BCH支付:据news.bitcoin报道,Abaco Hosting是域名,托管,服务器,电子邮件和云服务的提供商,Abaco Hosting通过信用卡和Paypal接受法定付款,也接受各种数字硬币,包括BCH、BTC、ETH、LTC等主要加密货币。其团队在一份公告中表示,因为有大量用户需求,我们决定接受BCH,可以使用BCH支付域名注册等。[2019/5/21]
GPT-4(Web)answer
可以看到GPT-3.5(Web)、GPT-3.5-turbo-0301都发现了关键的Overflow漏洞,出乎意料的是GPT-4(Web)居然没有相关提示。
测试三
用例:《空手套白狼——Popsicle被黑分析》
漏洞代码:
动态 | MakerDAO治理合约升级新版本,潜在威胁已排除:05月07日,区块链安全公司PeckShield独立研究发现,MakerDAO的旧治理合约存在安全漏洞,一旦被利用,会导致用户投票的MKR代币被合约锁死。具体而言:由于该治理合约实现的投票机制(vote(bytes32))存在某种缺陷,允许投票给还不存在的slate(但包含有正在投票的提案)。等用户投票后,攻击者可以恶意调用free()退出,达到减掉有效提案的合法票数,并同时锁死投票人的MKR代币。次日,PeckShield紧急和Maker公司同步漏洞细节。05月10日凌晨,MakerDAO公开了新版合约。Zeppelin和PeckShield也各自独立完成了对其新合约的审计,确定新版本修复了该漏洞。截止目前,旧治理合约中尚有2,463个MKR代币(价值约128万美元)未完成转移。PeckShield在此提醒,DeFi类合约管理着大量的金融资产,其合约安全性关系到每一个投资用户,DeFi项目方应务必做好合约安全审计,避免因造成不必要的数字资产损失。[2019/5/10]
对GPT进行提问:
GPT-3.5(Web)answer
GPT-3.5-turbo-0301answer
GPT-4(Web)answer
对比结果,我们可以看到3个版本都未发现关键的漏洞点。
代码片段的检测总结
可以看到GPT模型对简单的漏洞代码块的检测能力还是不错的,但是对稍微复杂一点的漏洞代码暂时还无法检测,并且在测试中可以看到GPT-4(Web)的整体上下文可读性很高,输出格式清晰、舒服,但是其对代码的审计能力暂时没有远超GPT-3.5(Web)、GPT-3.5-turbo-0301,甚至在部分测试中由于Transformer输出存在一定的不确定性反而导致GPT-4(Web)遗漏了一些关键问题。
对比已知漏洞的全量合约检测
为了更加契合普通项目方在合约审计中的简单操作需求,这里我们提高些难度,针对代码量大的合约进行全量导入上下文,让GPT-4模型进行审计。
用例:《千万美元被盗——DeFi平台MonoXFinance被黑分析》
整份合约分批输入,在对话最后提出检测漏洞请求
这里使用Prompt:
Hereisasoliditysmartcontract
Contractcode
Theaboveisthecompletecode,helpmediscovervulnerabilitiesinthissmartcontract.
可以看到,GPT-4虽然在OpenAI公布的信息中其单次输入字符总数已经是当前最高,但还是会由于文本超长导致在最后提问时GPT会上下文缺失而只识别到部分内容,所以这样对大型合约而言就无法进行完整的上下文审计。
拆封整份合约,分批输入分批检测
这里使用Prompt:
对话1:
Helpmediscovervulnerabilitiesinthissoliditysmartcontract.
分段内容1
对话2:
Helpmediscovervulnerabilitiesinthissoliditysmartcontract.
分段内容2
对话3:
Helpmediscovervulnerabilitiesinthissoliditysmartcontract.
分段内容3
总结
GPT当前是否适合合约分析
优点
GPT对合约代码中基础的简单的漏洞具备部分检测能力,并且在检测出漏洞后会以很高的可读性来解释漏洞问题,这样的特性比较适合为初级合约审计工作者前期训练提供快速指导和简单答疑。
存在的问题
a.每次生成内容波动
GPT对每次对话的输出存在一定的波动,可以通过API接口参数进行调整,但是依旧不是恒定的输出,虽然这样的波动性对语言对话来说是好的方式,大大提高了对话给人的真实感。但是这对代码分析类的工作来说是一个不好的问题。因为为了覆盖AI可能告知我的多种漏洞回答,我需要多次请求同一问题并进行对比筛选,这无形中又提高了工作量,违背了AI辅助人类提高效率的基准目标。
例如这里再次运行"漏洞代码片段的检测对比测试二:
可以看到其输出结果比之前测试又多了一些额外内容。
b.漏洞分析能力依旧有很大的提高空间
对稍微复杂的漏洞进行检测即会发现当前的训练模型不能正确的分析并找到相关关键漏洞点。
GPT辅助合约审计的可行性和潜力分析
虽然当前来看GPT对合约漏洞的分析及挖掘能力还处于相对较弱的状态,但它对普通漏洞小代码块的分析并生成报告文本的能力依旧让使用者兴奋,在可预见的未来几年伴随这GPT及其他AI模型的训练开发,相信对大型复杂合约的更快速,更智能,更全面的辅助审计一定会实现。当科技发展可指数级提高人工的效率时就会发生质变,我们非常期待AI对区块链安全的助力,我们会持续关注新AI产品对区块链安全的影响。最后可见的将来我们必将与AI在一定程度上进行融合,愿AI和区块链与你同在。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。