区块链函数攻击的要点分析

区块链攻击有一个主要弱点:尽管代码中没有任何东西看起来可疑,但ICC调用的状态检查可能会提示谨慎的用户进行测试部署以检查调用是否成功。下一个攻击提供了通过这种测试的欺骗性技术,A6攻击充分利用以太坊函数选择器(长度仅为32位)的潜在冲突情况,以确保从欺骗性ICC调用中获得成功状态。假设函数选择器的分布均匀,则与另一个函数(即2个函数具有相同的选择器)发生冲突的概率约为2.33·10^(-10)。进行的一项实验表明,一台办公室计算机平均只需要几个小时就能发现碰撞。在A6攻击中,攻击者制作了一个函数,该函数的选择器与预期函数的同形词对的选择器冲突。由于实际存在被调用的函数,因此交易成功,这进一步加剧了受害者对攻击者支持的欺骗性叙述的确认偏差。


假如Solidityc语言编译器在一个智能合约中将2个具有相同选择器的函数合并在一起,则会以错误终止。A6攻击通过将函数标头替换为其同形异义词对来避免此问题。在上图所示的攻击工作流程中,智能合约A在智能合约B中实现了对函数的调用。编译B时,函数foo的字符串头将转换为32位选择器0

分享: