区块链漏洞攻击之智能合约POC分析

攻击工作流程包括四层欺诈,为受害者提供与同一记述一致的一些线索(合同是公平的营利计划),利用受害者的确认偏差。欺诈的第一层是,智能合同在测试配置期间不会暴露欺诈性质——如果用户编译并配置这个智能合同进行测试,则该方案支持欺诈性记述。测试配置不能预测所有者将feeaddress的值变更为不能支付的智能合同的地址。欺诈的第二层来自feeAddress变量的配置时的初始化:通过检查该地址,受害者找到了公平交易的历史。欺骗的第三层是通过私人维持feeAddress的变量来实现的,防止受害者轻松地检索现在的价值。因为需要解析二进制交易数据的工作。被骗的第四层力求搜索FeeAddress当前值的用户。由于这个在视觉上与初始地址相似,受害者可能会得出结论,认为原始地址正在使用中。


此攻击截获客户存款事件,立即在EOA地址部署辅助恶意智能合同,盗取通过阻止提款产生的资金。重要的思想是通过运行时更换地址指向的内容来误解用户。攻击利用更复杂的方法动态地改变地址引用的对象。在此,发现以太网坊M3错误的以太网坊两个事实的特殊组合:a)未来未配置的智能合同地址可以预测b)配置前,未来智能合同地址具有合法的EOA状态。智能合同的地址是由配置EOA的地址和该EOA的交易记录制成的。

照片。


上图说明了A2攻击的工作流程。智能合同a被伪装成公平的营利计划,其中所有者每次提取资金都要征收费用。收款人的地址在智能合同中进行了硬码,设定为常数,加剧了支持该地址永久概念的确认偏差。对于正常操作,该地址应接受收款,这意味着应该是EOA或应付退款函数的智能合同。用户存款时,事件会被攻击者(智能合同a的所有者)的服务器拦截。检测到事件后,攻击者将智能合同b配置在地址,在地址上。收费者地址的设计方式是,攻击者知道账户the的对应钥匙,根据这个钥匙配置合同b,即=(请注意)。由于智能合同b没有应付退款函数,到地址address的费用转账失败了。结果,以前保管的资金保留在合同中,以便攻击者随后获得。


攻击利用小写和混合大小写的EIP-55地址的重叠,误解用户将资金锁定在智能合同中,以便攻击者随后获得。在攻击A3中,攻击者为用户提供了个人智能合同和随机测试以太网坊账户。当智能合同具有硬码地址或其他特定于帐户的值时,通常为用户提供测试帐户,以显示智能合同的功能。假设所有账户都有相同的属性集,用户认为任何账户都有与测试账户相同的行为,研究发现并不总是这样。本质上,攻击A3利用M4,也就是说,私钥的秘密性完全决定了以太网坊账户的安全性。攻击的关键是生成所有小写EIP-55验证和账户。用随机推测方法生成带小写检查和EIP-55地址的可能性约为0.0246%。


分享: