哈希力量归集文库路径访问: 首页 > 无人驾驶智能汽车 > 飞行汽车/无人机

去中心化应用之安全威胁Top10榜单

Elaine ☉ 文 收录源:FreeBuf.COM 2018-04-25 @ 哈希力量

【小哈划重点:描述包括递归调用漏洞、权限控制漏洞、算数问题、返回值问题、拒绝服务、伪随机在内的智能合约威胁。因翻译时间所限,难免出现疏漏,在FreeBuf上分享仅为抛砖引玉之用,望对去中心化应用感兴趣的同学在此多指正、多交流。】

NCC Group发起了一个名为2018年去中心化应用安全Top10(Decentralized Application Security Project)的项目。据悉,该项目会与类似于OWASP的方式发布去中心化应用安全领域中,每年的十大安全威胁报。与OWASP开放合作透明的运作理念相似,该项目也是以集成合作的方式披露智能合约中存在的安全漏洞。G30哈希力量 | 消除一切智能鸿沟

本文是第一版的DASP Top10 2018内容,详细描述包括递归调用漏洞、权限控制漏洞、算数问题、返回值问题、拒绝服务、伪随机在内的智能合约威胁。因翻译时间所限,难免出现疏漏,在FreeBuf上分享仅为抛砖引玉之用,望对去中心化应用感兴趣的同学在此多指正、多交流。G30哈希力量 | 消除一切智能鸿沟

一、递归调用漏洞G30哈希力量 | 消除一切智能鸿沟

该漏洞的利用有一个知名的案例,以太坊(Ethereum)漏洞。在首次发现以太坊存在这个问题的时候,很多人都觉的不可思议,在高漏洞造成数千万美元的损失之后,该漏洞可谓直接导致了以太坊的硬分叉之路。G30哈希力量 | 消除一切智能鸿沟

这个漏洞的触发在于外部合约对正在起草的合约进行新的调用,而这个调用发生在初次执行完成之前。对于函数而言,这个调用意味着合同状态发生了改变,调用的合约变得不可信,外部地址却上使用了低层功能。G30哈希力量 | 消除一切智能鸿沟

该漏洞造成的损失:350万 ETH损失(当时价值 5000万美元)G30哈希力量 | 消除一切智能鸿沟

二、权限控制漏洞G30哈希力量 | 消除一切智能鸿沟

权限控制问题在所有程序中都很常见,而不仅存在于智能合约之中。事实上,在OWASP中该问题也排行第5。我们通常通过公开或者外部函数获取到合约的内容。但如果合约的可视性没有进行良好的安全设置,攻击者也很容易查看并获取合约的隐私内容和内部逻辑,他们能够找到绕过限制的方式。这些漏洞通常在合约使用tx.origin对调用者进行验证时触发。G30哈希力量 | 消除一切智能鸿沟

漏洞造成的损失:大约15000ETH(当时约为3000万美元)G30哈希力量 | 消除一切智能鸿沟

三、算数问题G30哈希力量 | 消除一切智能鸿沟

整数的溢出并不少见,但这类问题在智能合约中尤其危险。合约中无符号整数的应用非常普遍,大多数开发人员习惯于简化 int类型(有符号整数)。如果溢出问题发生,许多良性代码路径会成为攻击者进行信息窃取或拒绝服务的载体。G30哈希力量 | 消除一切智能鸿沟

四、未经核查的返回值问题G30哈希力量 | 消除一切智能鸿沟

这个问题有时也称为无声的失败发送或者未经核实的发送。我们应该尽可能避免在合约中使用低层次的调用,因为返回值如果处理不当会出现很多意外的行为。G30哈希力量 | 消除一切智能鸿沟

Solidity中有一部分功能是低层函数,如call,callcode,delegatecall和send。这些函数在处理错误方面的行为与其他 Solidity函数完全不同,他们不会回到当前执行的状态,而只会返回布尔值false,程序会继续执行。G30哈希力量 | 消除一切智能鸿沟

如果这些返回值没有得到核查,就会导致一些预想不到的结果。G30哈希力量 | 消除一切智能鸿沟

五、拒绝服务问题G30哈希力量 | 消除一切智能鸿沟

拒绝服务的情况,包括达到到达了程序的容量上限,意外抛出错误,意外的进程杀死,或者访问控制违规问题。G30哈希力量 | 消除一切智能鸿沟

在去中心化应用、以太坊的世界中,拒绝服务问题往往会是致命的:尽管其他类型的应用程序最终总是可以恢复服务的,但智能合约可能会因一次拒绝服务攻击而永久下线。G30哈希力量 | 消除一切智能鸿沟

有多种原因引发导致拒绝服务,如在合约交易时收到了对方恶意行为的攻击,人为地提高了执行操作消耗的容量,滥用访问控制来获取智能合约的隐私组件,遭到混淆攻击。G30哈希力量 | 消除一切智能鸿沟

这一系列攻击都包括了各种变体,并在未来的时间中攻击方式会继续变化。G30哈希力量 | 消除一切智能鸿沟

漏洞造成的损失:估计为 514,874 ETH(当时约3亿美元)G30哈希力量 | 消除一切智能鸿沟

六、伪随机问题G30哈希力量 | 消除一切智能鸿沟

该漏洞也被称为 “没有什么是秘密的”。G30哈希力量 | 消除一切智能鸿沟

随机问题很难在以太坊中得到纠正。尽管 Solidity提供了些难以预测值的函数和变量,但很多情况中还是难以保持隐私性。随机性在一定程度上是可预测的,所以恶意用户以此实施攻击。G30哈希力量 | 消除一切智能鸿沟

漏洞造成的损失:超过400 ETHG30哈希力量 | 消除一切智能鸿沟

七、竞争条件问题G30哈希力量 | 消除一切智能鸿沟

由于矿工总是通过外部地址来获得报酬,因此用户可以指定更高的费用来让自己的交易更快地完成。G30哈希力量 | 消除一切智能鸿沟

而以太坊区块链是公开的,每个人都可以看到其他人尚未完成的交易内容。G30哈希力量 | 消除一切智能鸿沟

这意味着,如果某个用户正在处理问题,恶意用户也可以窃取该解决方案,以较高的费用发起新交易,抢占原始解决方案。G30哈希力量 | 消除一切智能鸿沟

如果智能合约的开发者不太谨慎,这种情况会导致实际且毁灭性的攻击。G30哈希力量 | 消除一切智能鸿沟

八、时间处理问题G30哈希力量 | 消除一切智能鸿沟

从锁定令牌到在特定时间解锁资金,合约都需要依赖当前时间。这通常通过 block.timestamp或其 now来在 Solidity中实现。G30哈希力量 | 消除一切智能鸿沟

由于这个时间依赖的是矿工,一笔交易的矿工如果在挖矿时间上会有余地,所以良好的智能合约应该避免时间依赖。而正如在6中探讨的,block.timestamp函数中使用的随机只是伪随机。G30哈希力量 | 消除一切智能鸿沟

九、短地址攻击问题G30哈希力量 | 消除一切智能鸿沟

短地址攻击是以太坊虚拟机未能接受正确参数的副产物。攻击者可以通过特定制作的地址利用这个弱点,针对部分编码错误的客户端进行参数填充。G30哈希力量 | 消除一切智能鸿沟

尽管不同的人对于这个问题看法不同:G30哈希力量 | 消除一切智能鸿沟

这是以太坊虚拟机的问题还是客户端的问题?这能够在智能合约中修复吗?G30哈希力量 | 消除一切智能鸿沟

虽然这个漏洞还没有被大规模利用,但它很好地证明了客户和以太坊区块链之间的交互也可能存在问题。G30哈希力量 | 消除一切智能鸿沟

其他链外问题也存在着:以太坊生态系统以来着特定的JavaScript前端,浏览器插件以及公共节点。G30哈希力量 | 消除一切智能鸿沟

在Coindash ICO欺诈事件中的黑客也使用了臭名昭着的链外漏洞,他们在网页上修改了 ICO公司的以太坊地址,诱骗参与者将攻击者地址发到自己的账户。G30哈希力量 | 消除一切智能鸿沟

十、未知G30哈希力量 | 消除一切智能鸿沟

以太坊仍然处于起步阶段。用于开发智能合同的主要语言 Solidity尚未达到稳定版本,生态系统中的其他工具也仍然处于试验阶段。G30哈希力量 | 消除一切智能鸿沟

每次发现具有破坏性的智能合约让许多人都感到惊讶,但我们没有理由相信其他同等性质破坏力的漏洞不会出现。代码审计和安全检查仍然会是有效的措施,尽管有很多不成熟的地方,去中心化应用仍然在以飞速的方式发展。G30哈希力量 | 消除一切智能鸿沟

本文参考来源:dasp,编译整理ElaineG30哈希力量 | 消除一切智能鸿沟



收录源追溯链接或暂略


本文收录后固定可引用URL链接
    http://www.haxililiang.com/jishu/jinjie/20255.html


☉ 文库同一主题内容智能推荐 ☉
哈希力量 ☉ 人机智能科普文库