去中心化应用安全威胁Top10榜单出炉!了解智能合约中的威胁有哪些?

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

本文是第一版的 DASP Top10 2018 内容,详细描述包括递归调用漏洞、权限控制漏洞、算数问题、返回值问题、拒绝服务、伪随机在内的智能合约威胁。

[[226587]]

一、递归调用漏洞

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

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

该漏洞造成的损失:350万 ETH 损失(当时价值 5000万美元)

二、权限控制漏洞

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

漏洞造成的损失:大约15000ETH(当时约为3000万美元)

三、算数问题

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

四、未经核查的返回值问题

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

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

如果这些返回值没有得到核查,就会导致一些预想不到的结果。

五、拒绝服务问题

拒绝服务的情况,包括达到到达了程序的容量上限,意外抛出错误,意外的进程杀死,或者访问控制违规问题。

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

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

这一系列攻击都包括了各种变体,并在未来的时间中攻击方式会继续变化。

漏洞造成的损失:估计为 514,874 ETH(当时约3亿美元)

六、伪随机问题

该漏洞也被称为 “没有什么是秘密的”。

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

漏洞造成的损失:超过400 ETH

七、竞争条件问题

由于矿工总是通过外部地址来获得报酬,因此用户可以指定更高的费用来让自己的交易更快地完成。

而以太坊区块链是公开的,每个人都可以看到其他人尚未完成的交易内容。

这意味着,如果某个用户正在处理问题,恶意用户也可以窃取该解决方案,以较高的费用发起新交易,抢占原始解决方案。

如果智能合约的开发者不太谨慎,这种情况会导致实际且毁灭性的攻击。

八、时间处理问题

从锁定令牌到在特定时间解锁资金,合约都需要依赖当前时间。 这通常通过 block.timestamp 或其 now 来在 Solidity 中实现。

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

九、短地址攻击问题

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

尽管不同的人对于这个问题看法不同:

这是以太坊虚拟机的问题还是客户端的问题?这能够在智能合约中修复吗?

虽然这个漏洞还没有被大规模利用,但它很好地证明了客户和以太坊区块链之间的交互也可能存在问题。

其他链外问题也存在着:以太坊生态系统以来着特定的 JavaScript 前端,浏览器插件以及公共节点。

在Coindash ICO 欺诈事件中的黑客也使用了臭名昭着的链外漏洞,他们在网页上修改了 ICO 公司的以太坊地址,诱骗参与者将攻击者地址发到自己的账户。

十、未知

以太坊仍然处于起步阶段。 用于开发智能合同的主要语言 Solidity 尚未达到稳定版本,生态系统中的其他工具也仍然处于试验阶段。

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

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/135861.html<

(0)
运维的头像运维
上一篇2025-03-01 19:51
下一篇 2025-03-01 19:52

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注