ChatGPT 的 Web3.0 安全审计艺术:有点东西,但不多
2023-02-24 16:35:00 人浏览

2022年11月,OpenAI推出了创新的人工智能(AI)项目。

除了可用于进行文章的撰写和总结、笑话和诗歌的创作以外,ChatGPT还可以用来调试和生成代码。

2022年全年,Web3.0领域因黑客攻击和欺诈等事件造成的资产损失超过了37亿美元,这样巨额损失不禁让业内人思考:如ChatGPT这样的新技术是否可以用以改善智能合约代码的安全性。

ZKasino是一个去中心化的博彩平台,近期通过ChatGPT进行了一次预审计。

ZKasino希望在CertiK开展全面审计的同时,让CertiK为ChatGPT所得出的结果进行一个初步的审查,以测试ChatGPT作为AI「智能合约审计师」的能力。

那么ChatGPT的测试结果如何呢?

其是否已经准备好接替人工代码审计专家的工作?

或者说它仍不足以完全替代人工?

2022年12月23日,ZKasino「聘请」了ChatGPT来识别智能合约中潜在的安全风险。该工具也的确提出了几个表面上听起来很合理的风险担忧。

然而,尽管ChatGPT不可否认地为Web3.0安全社区提供了一些有价值的服务,但是我们发现其仍有相当大的改进空间——ChatGPT遗漏了一些严重或关键性的漏洞,同时又「误伤」了那些没问题的代码。在此,我们希望CertiK安全专家的深度数据和建议能够助力ChatGPT成为一个更强大的Web3.0应用安全工具。

下文,我们将为大家详细介绍此次事件中ChatGPT的两类错误发现。

ChatGPT发现了合约中的哪些问题? ChatGPT遗漏了什么 严重或关键性的漏洞?

ChatGPT提到了在许多智能合约实现中都会存在的几个常见安全问题。

但是,它未能识别某些严重的风险,包括:

  • 项目特定的逻辑漏洞

  • 不准确的数学计算和统计模型

  • 代码实现和项目设计的不一致

漏洞#1:项目特定的逻辑问题

ChatGPT未能识别出一个关键漏洞,该漏洞会导致攻击者可以不断地赢取并耗尽Bankroll合约中用户的资金。玩家可以通过调用可验证随机函数(VRF)加入游戏,Chainlink的VRF会使用随机数触发fulfillRandomWords()函数以完成游戏。

ZKasino的代码允许用户在fulfillRandomWords()调用失败的情况下将资金取回。

在CertiK对同一智能合约代码的审查中,发现了一个潜在且有害的_transferPayout()调用,该函数被设计为可将赢取的资金转移至玩家的账户。

然而攻击者可以在输了的时候调用_transferPayout()使其回滚,导致整个fulfillRandomWords()调用失败——这会使其进入长为100个区块的等待期,继而触发CoinFlip_Refund()进行退款,这意味着攻击者相当于永远不会输钱。

本资讯链接: - 数字领地
声明:投资有风险,入市须谨慎。本资讯不作为投资理财建议。