围观!81个智能合约惊现同一漏洞,是巧合?还是另有玄机?

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

作者:SECBIT(安比)实验室

前言:

这是一个怎样的社交时代?
一个你不知道区块链、不知道智能合约就可能产生聊天障碍的时代;
这是一个怎样的商业时代?
一个公司没有利用区块链、没有使用智能合约就可能没办法实现业内突围的时代;
这是一个怎样的技术获取时代?
一个你有实力就自行开发,没实力也可以网络搜索的时代。

这个时代虽然几乎人人都在探讨区块链、几乎每个组织都试图引入智能合约,但并不是每个人都了解区块链,也不是每个组织都具备智能合约开发实力,那么如何获取该波技术红利?计算机技术特别是区块链及智能合约代码的开源使用为广大技术开发实力欠缺的个人和组织提供了接触并使用该技术的无限可能。但是!同时这也为一些居心叵测之人提供了扰乱产业发展秩序、危害他人财产安全的可乘之机。特别是区块链这种生来自带金融属性的技术,一不小心使用了错误代码就会导致难以弥补的经济损失,近期屡次发生的智能合约漏洞导致的token市值蒸发就是典型的代表。

案例分析

今天SECBIT(安比)实验室和大家分享两个疑似复制使用公开代码导致出现高危风险问题的案例:一个是Ethereum上出现81个合约带有相同错误,另一个为EOS主网上线过程中钱包映射出现213个EOS 钱包地址使用了相同公私钥对的问题。

案例一

近期SECBIT(安比)实验室发现Ethereum上有81个智能合约出现了相同的问题,问题都是出现在ERC20 token合约中的transferFrom 函数上,该函数主要用于在限定token数量范围内两个地址之间的转账,该函数的基本功能和含义为:

  • 从转出地址_from向转入地址_to转一定数量_value的token
  • 转账的token数量上限由另一个approve函数设定,并可访问 allowed[_from][msg.sender]来获得 。
  • 只有转账数量_value值小于转出地址余额,并且小于限定的上限数量时,才能转账成功。
  • 在此过程中应该做overflow的检查

但是以太坊主网上的问题token合约代码如下:
这里写图片描述

乍一看,这段代码“谨慎”地进行了余额、授权限额以及整数溢出三种校验。仔细看红框中的问题代码。

  • 第一行表述为当转账数量_value值大于或等于转出账户余额fromBalance时将余额充足标记为true (正确写法应该是将小于号换成大于号);
  • 第二行当转账数量_value值大于或等于限定金额时将授权限额充足标记为true(正确写法应该是小于号换成大于号);
  • 第三行当转入账户原有余额加上转账数量大于或等于账户原有余额时将溢出判断标记为true(正确写法应该是将大于号换成小于号).

该段代码导致的后果为:三重校验形同虚设,当转账token数量大于转出账户余额和限定余额并且数量大到足以使函数出现溢出时才能转账成功。这样会攻击者可以将任意账户中的token全部转走,对整个合约的安全影响十分恶劣。

而该问题主要是由于“不等号”写反导致的,当该问题出现在某一个合约中时,我们或许可以理解为由于程序员的笔误导致的,但是SECBIT(安比)实验室在以太坊主网上扫描,一次性发现了81个合约具有该问题,部分合约的地址(81个中的20个)如下:
这里写图片描述
数量如此之多的合约代码出现同一问题,无论是合约原始构建者无意错写代码后被他人复制使用了,还是有人蓄意创造问题合约并部署到主网上进行恶意传播,都值得我们思考“代码复制使用”这个问题的影响。当我们复制一段公开的代码时,往往出现在我们自身对该类型代码缺乏开发能力的情况下,该情况下复制者会缺乏对代码质量和正确性的辨别能力。智能合约目前最多的被用于token的发行,在以后极有可能会被用于大规模的资产管理,一旦部署后出现问题,将造成不可挽回的损失。

所以SECBIT(安比)实验室作为一个聚焦于智能合约安全的组织建议大家切莫随意复制非官网资源的智能合约代码,谨慎开发。在部署智能合约之前最好找专业的第三方审计机构对智能合约做专业的审计,确保合约的正确性。

案例二

EOS在以太坊上进行了长达一年的众筹,众筹参与者在以太坊平台获得一定数量的ERC20 Token作为回报。 而EOS主网上线后,发行在以太坊平台上的EOS Token便将作废。这需要众筹参与者在主网上线快照前进行映射操作。映射具体指,EOS Token持有者利用工具生一对公私钥,其中私钥必须私密保存,不能让任何其他人知道。持有者再调用以太坊上EOS Token智能合约的register函数,传入之前生成的公钥,发起交易打包确认,从而完成映射操作。EOS主网上线前会根据以太坊区块快照中的结果,将原有EOS ERC20 Token持仓情况映射至EOS主网区块链中,并需要之前生成的私钥来授权转账等操作。
2018年5月30日,EOS超级节点候选人在对EOS网络快照进行数据分析时,发现213个钱包地址共享相同的EOS公钥。造成这种情况的原因有两种可能,一种是同一个用户拥有213个不同的地址,还有一种可能是不同的用户使用了同一对公开的EOS公私钥对。经过仔细分析后证实,实际情况是这些用户使用了同一对在网上公布的EOS公私钥进行映射操作。这对公私钥最早出现于EOS GitHub代码仓库中的一个配置文件,并且被大量EOS相关教程作为示例参数而广泛使用。

按目前的价格计算,这些钱包的金额超过了1000万美元。每个钱包平均约有3,866个EOS总共823000 EOS。共享的公钥为:
EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
这里写图片描述
图片来自EOSAuthority.

该事件虽然现在并没有对EOS生态造成直接的影响,但是众多钱包共享一个公钥,且对应的私钥也不是某一个人专有的。当EOS部署成功后,这些钱包中的EOS可能会被恶意转移出EOS原有账户,造成经济损失。EOS平台自身具备的账号安全功能、时间延迟功能,仲裁流程等功能在这里并不适用,都不能保证这些资金的安全。

在密码学中,我们经常听到“公钥”和“私钥”两个词,公钥和私钥是成对存在的,公钥是私钥通过特定的函数派生出来的,通过私钥可以推测出公钥,但是通过公钥无法推测出私钥,所以在购买和交易加密货币时加密货币钱包会提醒用户保存好自己的私钥或是私钥种子,因为丢失或是泄露了私钥后自己钱包中的加密货币就会被窃取。所以当众多人共享一对公私钥对,多个钱包用户拥有相同私钥时,恶意用户就可以转走其他用户钱包中的加密货币。所以多个EOS钱包复制使用公开公私钥对,而不是自己生成私有的公私钥对是一件极具风险的事情。错误使用了公开公私钥进行操作的用户,必须立即重新进行正确映射操作。

作为区块链行业从业者、智能合约使用者或是加密货币拥有者,应该学习、了解相应的密码学和智能合约编程知识,切不可随意复制使用涉及资金安全的合约和公私钥等的代码。如果恶意攻击者,将带有严重漏洞的代码公开在网络上进行传播,诱导技术开发能力欠缺的组织使用,将会给使用者造成毁灭性打击和不可挽回的损失。SECBIT(安比)实验室作为一个聚焦智能合约安全的团队呼吁大家在使用网络开源代码,特别是智能合约代码时,最好交付专业审计机构,对合约进行审计和漏洞排查。


SECBIT(安比)实验室是谁?

SECBIT(安比)实验室专注于智能合约安全问题,全方位监控智能合约安全漏洞、提供专业合约安全审计服务,在智能合约安全技术上开展深入研究,致力于参与共建共识、可信、有序的区块链经济体。

SECBIT(安比)实验室由一群热爱区块链技术的极客组建,成员来自全球各个国家,专业领域涉及区块链底层架构、智能合约语言、形式化验证、密码学与安全协议、编译与分析技术、博弈论与加密经济学等诸多学科。

SECBIT(安比)实验室创始人郭宇,中国科学技术大学博士、耶鲁大学访问学者、前中科大副教授,曾任职知名金融科技公司副总裁。在形式化证明与系统软件研究领域深耕多年,同时在金融安全行业具有丰富的产品研发经验,也是国内早期关注并参与比特币与区块链技术的科研人员之一。研究专长:区块链技术、形式化验证、程序语言理论、操作系统内核。

EOS智能合约流程 流程:创建钱包 ,创建账号,根据合约发行货币,转账 因为master更新比较频繁,本人选择的是SuperDawn-2018-03-18 分支这里不在描述环境的配置了,之前已经配置好了。大部分遇到的问题可能就是环境没配置好,或者分支是master问题导致的,多试几次。直接粘贴一下Install the development toolkit: sudo apt-get update wget -O... 阅读详情

相关推荐

亚瑟王的「随机」挑战:从交互到非交互式零知识证明——探索零知识证明系列(四)

本文作者:郭宇 本文已更新至Github https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/4/zkp-rom.md “Challenges are at times an indication of Lord's trust in you.” 挑战,有时是上天信任你的一种表。― D. Todd Christ...

SECBIT区块链安全实验室 4425

初识「零知识」与「证明」

副标题:探索零知识证明系列(一) 作者:郭宇 本文已更新至Github: https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/1/zkp-back.md 引言: 我认为区块链很难称为一个“技术”。它更像是一个领域,包罗万象。或者形而上地说,区块链更像一个有机体,融合了各种不同的理论技术。 零知识证明是构建信任的重要技术,也是区...

SECBIT区块链安全实验室 1431

零知识证明学习资源汇总

摘要:本文收集整理了关于零知识证明的一些学习资料,希望能对大家有所帮助。

SECBIT区块链安全实验室 3691

PoD-Tiny——实零信任交易的最简协议

原创:郭宇 本文面向有一定密码学基础,或者对密码学感兴趣的读者。文中虽有大量数学公式出,但都比较简单不难理解。 导言:zkPoD 是什么? zkPoD 实了去中心化的「零知识有条件支付」,支持上 GB 数据的零信任公平交易。关于「零知识有条件支付」的概念请看这篇概述文章 『zkPoD:区块链,零知识证明与形式化验证,实无中介、零信任的公平交易』。 zkPoD 是一个全新的实 ZKCP 目标...

SECBIT区块链安全实验室 1315

SECBIT郭宇:智能合约审计的趋势是自动化和复杂化

8月31日晚,SECBIT安比实验师创始人郭宇及其团队做客链得得《无眠吐槽大会》,与群友们探讨合约安全问题和“漏洞”中的机会,并就智能合约安全状、应用、关键技术、解决方案、智能合约游戏漏洞以及区块链安全的商业模式等进行了全方位的分享。 郭宇精彩观点汇总: 1、 以太坊上大量的合约存在各种花样的整数溢出漏洞,有些可以直接导致 token 归零; 2、 目前智能合约中存在最普...

SECBIT区块链安全实验室 1142

Don’t Test, Verify. | 哪个故事真正符合你对形式化验证的想象?

从诞生至今,形式化验证(Formal Verification)方法一直与“小众、冷门”等字眼挂钩。有人说形式化验证方法是一种“军用级别”的防黑客手段,更是为这项技术增添了一丝神秘感。 究竟什么是形式化验证方法? 维基百科对形式化验证的解释是这样的: 在计算机硬件(特别是集成电路)和软件系统的设计过程中,形式化验证的含义是根据某个或某些形式化规范或属性,使用数学的方法证明其正确性或非正确性。 ...

SECBIT区块链安全实验室 1078

Fomo3D二轮大奖开出,黑客获奖,机制漏洞成游戏没落主因

北京时间 9 月 24 日深夜 11 点 32 分,Fomo3D 第二轮最终大奖由地址 0x18a0 获得,奖金为 3,264.668 Ether。安比(SECBIT)实验室分析发,此轮游戏获奖技巧与第一轮如出一辙,均为黑客“阻塞交易”攻击。 与此前第一轮游戏相比,这轮游戏持续 33 天,无论是从入场资金、持续时长,亦或是最终大奖奖金额来说,相比上轮均大幅缩水。 回首两月之前,Fomo3D第一轮...

SECBIT区块链安全实验室 1001

安比(SECBIT)创始人郭宇博士受邀出席2018 ISC互联网安全大会

2018 ISC互联网安全大会于9月4日至6日在北京国家会议中心隆重举行,安比(SECBIT)实验室创始人郭宇受邀亮相区块链与安全技术论坛,并就“智能合约漏洞与防护”问题与场嘉宾进行了深入探讨,全面展示了SECBIT 团队在智能合约语言和区块链安全领域攻防兼备的杰出实力。 在区块链应用领域,智能合约利用区块链点对点的技术特性,允许在没有第三方的情况下进行可信、可追踪的交易。“然而,一旦...

SECBIT区块链安全实验室 829

链上富人寻「隐私」记(一:Mixer 篇)

一篇文章让我彻底暴露了。什么能拯救,零知识证明?! 最近有人说,谁掌握了区块链技术就掌握了财富。 好吧我摊牌了,我就是一个这样的「链上富人」。 10 月底,在最爱的《橙皮书????》公众号里看到了自己,心里却不是滋味,背后甚至有些发凉。Bowen 的一篇文章——「Top 10 DeFi 大户的链上人生」让我彻底暴露了。 我被描绘成了大户。我可不喜欢这个词,在我的字典里这就是土豪的近义词啊。严正声明,...

SECBIT区块链安全实验室 798

安比(SECBIT)实验室完成NeoWorld Cash智能合约审计

本月,为了配合NASH智能合约的升级和提升安全性,NeoWorld团队委托业内知名智能合约审计团队SECBIT针对新版的智能合约做了审计。双方团队不但对NASH智能合约的设计和内容进行了优化,还对如何使用ERC223标准 — 一种更优但是不太常见的以太坊标准以及如何实更好的安全性和用户保护,进行了深入的探讨。 NeoWorld 链上世界 NeoWorld(官网:www.neoworld.io...

SECBIT区块链安全实验室 779

当故事变为事故:《硅谷》中算力攻击之实版

作者:SECBIT实验室 前言 作为地球不爆炸,我们不放假,宇宙不重启,我们不休息的区块链产业相关从业者,每天除了币圈、链圈,除了ICO、智能合约之外,烧脑之余谈论最多的大概就是美剧《硅谷》了,作为一部深入展区块链创业故事的影视作品,成功的引起了当下广大区块链人的关注,第五季中更是围绕加密货币发生了一系列的故事,其中“理查德项目的投资人劳里是一个非常势力的人,因为各种原因,投资了一个“恶棍”...

SECBIT区块链安全实验室 552

BCH硬分叉背后: “重放攻击”下的用户自救指南

11月16日凌晨2:16分,BCH在第556767个块高度发生硬分叉,分叉大战落下帷幕,分成了BCH ABC和BCH SV两个阵营。 在此次此次硬分叉中,BCH ABC和BCH SV双方都没有进行“重放保护”。也就是说,此次分叉后,理论上,重放攻击将有可能导致任何一方发生共识崩塌和算力归零。 何谓“重放攻击” 传统计算机术语中,重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指...

SECBIT区块链安全实验室 480

搜索“近期量化开发”时,先做小流程再谈复杂功能

这篇文章强调,量化开发应先完成能解释、能检查的小流程,再扩展复杂功能。文章提醒读者不要把回测结果直接等同实盘执行,而要补上结果解释、流程复查和执行反馈等连接。

麻雀飞吧的博客 79

CEX vs DEX架构对决:中心化与去中心化交易系统的技术路线分野与融合

然而,其代价是用户让渡了资产控制权——FTX挪用客户资金超100亿美元的案例证明,在缺乏有效监管时,CEX的"黑箱"模式潜藏着巨大的单点风险。:中心化交易所(CEX)与去中心化交易所(DEX)的架构分野,本质上是效率优先与信任优先两种哲学在数字资产交易领域的技术投影。然而,随着基础设施的成熟与用户需求的趋同,这两条曾经泾渭分明的技术路线正在走向深度融合,重新定义下一代交易平台的竞争格局。CEX与DEX的融合,本质是用新技术解决各自原生架构的致命短板,从而在效率、安全与去中心化之间寻找新平衡。

2601_96183616的博客 241

SAR+RSI复合指标系统:跳出单一指标陷阱,构建概率优势交易框架

放弃寻找百分百准确的信号,接受交易本身的概率属性,在适合自己的行情里坚守规则,在不适配的行情里主动空仓,才是指标交易系统真正的内核。图表里可以看到,在快速急跌行情中,RSI会持续处于超卖,指标钝化,此时单纯依靠RSI过滤会错失趋势;当RSI稳定在30-70区间中部运行,多空力量均衡,属于震荡行情,此时放弃SAR给出的反转信号,避免来回被止损;以黄金M15图为例,价格探底回升,SAR圆点由K线上方转到K线下方,同时RSI从超卖区向上拐头,双条件共振,才开多单;一旦SAR反向,立刻离场,不主观预判拐点。

2501_94699109的博客 70

区块链技术】区块链101:比特币是什么?

为了消除围绕比特币的一些困惑,我们需要将比特币分为两个部分。一方面,你有一个比特币,一个代表数字概念所有权的代码片段——有点像虚拟的IOU。另一方面,你有比特币协议,一个分布式的网络,它维护一个比特币的平衡分类账。两者都被称为“比特币”。该系统允许用户在不经过中央授权的情况下(如银行或支付网关)之间发送支付。它是通过电子方式创建和持有的。比特币不像美元或欧元那样印刷,而是...

全网:架构师研究会 191

梅克尔树(Merkle Tree)与域分隔 —— 学习笔记

梅克尔树通过哈希函数构建分层结构,实数据完整性校验。其三大核心能力:根哈希代表全集、二分下钻定位差异、存在性证明(Merkle Proof),使验证只需少量数据即可完成。结合域分隔与生产级规范(如RFC 6962),可抵御第二原像攻击等安全风险,广泛应用于区块链、文件系统等领域。

唐古的博客 120

用于修复漏洞的补丁,反而成了攻击者的指引

本期安全周报(2026/08/24–08/30)收录5起安全事件,总损失约2270万美元,涉及以太坊、Solana、Base、Cronos及TAC等六条Cosmos EVM链。重点分析了Cosmos EVM共享模块中余额下溢与上溢串联漏洞导致六条链被同时攻击的事件(以TAC Chain为例,质押池损失约750万美元),揭示了严重性误判导致静默公开补丁而非私下协同分发的披露问题。

BlockSec的博客 202
上一篇: 智能合约开发必读:ERC20 Token合约你可能不知道的坑
下一篇: 当故事变为事故:《硅谷》中算力攻击之现实版
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值