去中心化应用安全威胁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

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

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