风险提示:理性看待区块链,提高风险意识!
少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空
首页 > 币界资讯 > 竞争币新闻 2019-04-12 13:00:52

波场 DApp tronbank 于 4 月 11 日凌晨 1 点遭受假币攻击。11 日上午 Beosin 成都链安技术团队作出初步分析,判断该次假币攻击事件主要原因在于合约没有严格验证代币的唯一标识符代币 ID,错误的将攻击者自己发行的无价值代币识别为价值 85 万元的 BTT 代币,从而造成了损失。同时及时发出预警,预判黑客团队未来可能将攻击重点转向波场。

原文标题:《BTT 假币攻击事件细节披露及修复方案》

现针对此次事件,成都链安技术团队进一步作出深度分析。

首先,我们先看此次 BTT 假币攻击事件中的漏洞源码,如下图:

少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空

成都链安技术团队分析发现,该假币漏洞是由于 invest 函数只判断了 msg.tokenvalue,而没有判断 msg.tokenid 是否为真实 BTT 代币的 ID:1002000 所导致。

TRC10 标准是波场本身支持的技术代币标准,标准规定了两个重要参数:msg.tokenvalue 和 msg.tokenid。其中 msg.tokenvalue 表示当前 msg 调用的代币数量,而 msg.tokenid 表示当前调用者使用的代币种类标记 ID。每种 TRC10 标准的代币都有一个独一无二的标记 ID 作为代币种类证明。

BTTBank 合约在收取代币时没有对收到代币的 tokenid 做任何判断,合约中仅仅判断了 msg 发送代币的数量 msg.tokenvalue。当合约收到调用者发送的代币数量 msg.tokenvalue 时,合约错误的认为该代币数量是 BTT 的数量。但实际上调用者使用的是假币 tokenid 为 1002278 的代币数量。BTTBank 将假币视同于真币(真币的 tokenid 为 10022000)记录到投资者账号。

而攻击者账号 TRC10 代币中存在 BTT 和 BTTx 两种代币,可见两种代币的 ID 差异,BTT 代币 ID:1002000,BTTx 代币 ID:1002278。

少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空

攻击者于 4 月 11 日凌晨创建发行 990,000,000,000,000,000 个名为 BTTx 的假币(代币 ID:1002278)

少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空

接着在假币创建完成后,攻击者将四千万创建的假币 BTTx 发送给四个攻击小号 TB9jB76Bk4tk2VhzGAb6t1aCYgW7Z4iicY,TQM4uEWPQvVe2kGbWPZtVLMDFrTLERfmp4,TKp1stjapNqr4pkDQjU9GTitsYBUrKAGkh,TF2EWZJZSokGdtk4fj7PqCmuGpJasVXJ3K

少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空
当攻击小号收到假币后,攻击者又调用 BTTBank 合约有缺陷的 invest 函数。

少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空
接下来在触发 invest 函数后,BTTBank 项目方将大量 BTT 转入了预先设置的投资账号 TPk,TT4,TGD,这笔资金实际上未被黑客获得,但项目方在没有收到 BTT 的情况下进行了真实的投资。

下图为源码中对三个投资地址的具体设置代码:
少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空

BTTBank 投资的三个投资账号中都收到了大量 BTT 代币,如下图所示。

少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空
少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空
少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空

黑客触发 invest 函数后通过 withdraw 函数取到了 BTTBank 奖励池的真正的 BTT 代币,最终四个小号将赃款集中转向黑客主账号 TCX1Cay4T3eDC88LWL7vvvLBGvBcE7GAMW
少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空

攻击者账户中的 BTT 赃款和攻击使用的假币 BTTx 如下:
少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空

此外,成都链安技术团队对在 Github 上开源的其他项目方代码进行检查,发现还有其他项目方存在此安全问题:
少写一行代码的教训:TronBank 1.7 亿 BTT 仅 3 小时就被盗窃一空
如下为有问题的合约地址:
TF3YXXXXXXXXXXXXXXXXXXXXXXXWt3hx

TKHNXXXXXXXXXXXXXXXXXXXXXXXAEzx5

TK8NXXXXXXXXXXXXXXXXXXXXXXXZkQy

TUvUXXXXXXXXXXXXXXXXXXXXXXXxLETV

TG17XXXXXXXXXXXXXXXXXXXXXXXkQ9i

因此 Beosin 成都链安呼吁广大项目方提高警惕予以重视,检查自己的合约是否存在上述安全漏洞,并及时进行更新。

发生原因:

据 Beosin 成都链安技术团队分析,上述问题的发生存在两个方面的原因:
1)开发者对波场代币的使用机制研究不足,可能套用了以太坊的代币使用方法;
2)攻击者在迁移其它公链上存在的攻击方式,如 EOS 已经存在的假币攻击方式。

修复意见:
对此,Beosin 成都链安技术团队建议:项目方在收取代币时应同时判断 msg.tokenvalue 和 msg.tokenid 是否符合预期。并给出该漏洞代码修复方式,如下:

Invest 函数增加代码:
require(msg.tokenid==1002000);
require(msg.tokenvalue >= minimum);
minimum 是最小投资额

同时,Beosin 成都链安提示:黑客团队未来可能将攻击重点转向波场,波场公链的 DApp 市场高度繁荣但一直未曾遭到过 eos 公链级别的高强度攻击,攻击者目前主要是将其他公链上已成熟的攻击方式迁移到波场并进行大范围攻击测试,寻找安全防护较为薄弱的合约,此阶段后,攻击者可能更进一步深度挖掘波场本身可能被利用的机制,进行更高强度和威胁的攻击。

并且 Beosin 成都链安也建议各大项目方加强合约的安全防护级别和安全运维强度,尽量防范未然,避免不必要的损失,必要时可联系第三方专业审计团队,在上链前进行完善的代码安全审计,共同维护公链安全生态。

上一篇: IEO 升温?平台币高涨?TokenInsight 深度全解 Q1 交易所产业图景
下一篇: 以太坊后全球第二个形式化验证平台 VaaS-ONT 发布,本体与成都链安保障智能合约安全
推荐专栏
web3首席知识博主
一位相信价值投资的币圈KOL。稳定盈利的缠论野生交易员 #BTC行情分析师 #价值投资 #链上数据分析
爱Web 3,爱生活,爱科技,爱炒币的老韭菜
热门币种
更多
币种
价格
24H涨跌幅
BTC比特币
¥267,580.79
37,491.53 USDT
+5.36%
ETH以太坊
¥14,664.95
2,054.75 USDT
+3.94%
USDT泰达币
¥7.24
1.01 USDT
+0.18%
BNB币安币
¥1,802.40
252.54 USDT
+2.91%
XRP瑞波币
¥4.65
0.65120 USDT
+2.55%
USDC
¥7.14
0.99980 USDT
-0.02%
SOLSolana
¥468.73
65.68 USDT
+15.19%
OKBOK币
¥426.75
59.79 USDT
+2.36%
ADA艾达币
¥2.73
0.38270 USDT
+7.32%
DOGE狗狗币
¥0.54690
0.07664 USDT
+5.21%
热搜币种
更多
币种
价格
24H涨跌幅
dYdX
¥29.59
4.0749 USDT
+5.77%
Filecoin
¥38.55
5.3092 USDT
+9.52%
FTX Token
¥26.56
3.6583 USDT
-0.05%
PancakeSwap
¥19.13
2.6352 USDT
+4%
Solana
¥476.84
65.6763 USDT
+15.19%
奇亚
¥198.57
27.3499 USDT
+3.54%
Yield Guild Games
¥3.08
0.4238 USDT
+3.44%
Conflux
¥1.25
0.1716 USDT
+7.12%
火必积分
¥21.92
3.0188 USDT
+4.59%
Terra Classic
¥0.00
8.293E-5 USDT
+3.33%
阿童木
¥72.93
10.0449 USDT
+11.23%
Avalanche
¥163.70
22.5467 USDT
+26.85%
最新快讯
更多
SushiSwap“部署SUSHI新代币经济学”的提案开启民意调查投票
2023-11-16 12:36:38
Polytrade与OndoFinance、OpenEden建立合作伙伴关系
2023-11-16 12:25:46
Polytrade与OndoFinance等建立合作伙伴关系
2023-11-16 12:25:46
Arbitrum链上提案拟将STIP激励总预算增至7140万枚ARB
2023-11-16 12:19:30
币安与Gulf合资企业GulfBinance将于明年在泰国向公众开放服务
2023-11-16 12:10:35
Arbitrum新提案拟将STIP激励总预算增加2140万枚ARB
2023-11-16 12:08:39
币安合约将于12月15日停用WebSocket旧域名
2023-11-16 12:05:45
下载币界网APP