一些天前我们注意到IOTA暂停了主网,虽然早前我们也知道IOTA用户遭遇了盗币攻击,但没想到IOTA官方会通过暂停主网方式来进行这次盗币攻击的阻拦与调查,看来问题很严重。随后,2020/02/19,我们深入分析了官方披露在status.iota.org上的一些线索,开始独立调查这次严重安全事故的具体原因。通过对IOTA官方钱包Trinity新版本发布的分析,我们在其GitHub上进行了版本比对,注意到了MoonPay这个第三方组件被移除,且我们注意到Trinitiy桌面钱包是基于Electron开发的,安全经验告诉我们,这可能是个大坑,于是,我们2020/02/19时发布了一些推测:慢雾:IOTA用户Trinity钱包被盗币攻击推测IOTA因为近期不少用户的Trinity钱包被盗币攻击,为了阻止攻击继续、调查与修复具体原因,主网协调器都暂停运行了。这是一个被低估的经典攻击,官方没披露具体攻击细节,但通过我们的分析,可以做出某些重要推测,首先可以明确的几个点:不是IOTA区块链协议的问题,是IOTA的Trinity桌面钱包的问题这款桌面钱包基于Electron(一个使用JavaScript为核心构建桌面应用的框架),意味着核心代码是JavaScript写的在做该做钱包新旧版本代码的diff分析时,发现去除了之前内置的一个交易所功能模块MoonPay,这其中关键点是去掉了一段可怕的代码:
慢雾:近期出现新的流行恶意盗币软件Mystic Stealer,可针对40款浏览器、70款浏览器扩展进行攻击:6月20日消息,慢雾首席信息安全官@IM_23pds在社交媒体上发文表示,近期已出现新的加密货币盗窃软件Mystic Stealer,该软件可针对40款浏览器、70款浏览器扩展、加密货币钱包进行攻击,如MetaMask、Coinbase Wallet、Binance、Rabby Wallet、OKX Wallet、OneKey等知名钱包,是目前最流行的恶意软件,请用户注意风险。[2023/6/20 21:49:05]
慢雾:Transit Swap事件中转移到Tornado Cash的资金超过600万美元:金色财经报道,慢雾 MistTrack 对 Transit Swap 事件资金转移进行跟进分析,以下将分析结论同步社区:
Hacker#1 攻击黑客(盗取最大资金黑客),获利金额:约 2410 万美元
1: 0x75F2...FFD46
2: 0xfa71...90fb
已归还超 1890 万美元的被盗资金;12,500 BNB 存款到 Tornado Cash;约 1400 万 MOONEY 代币和 67,709 DAI 代币转入 ShibaSwap: BONE Token 合约地址。
Hacker#2 套利机器人-1,获利金额:1,166,882.07 BUSD
0xcfb0...7ac7(BSC)
保留在获利地址中,未进一步转移。
Hacker#3 攻击模仿者-1,获利金额:356,690.71 USDT
0x87be...3c4c(BSC)
Hacker#4 套利机器人-2,获利金额:246,757.31 USDT
0x0000...4922(BSC)
已全部追回。
Hacker#5 套利机器人-3,获利金额:584,801.17 USDC
0xcc3d...ae7d(BSC)
USDC 全部转移至新地址 0x8960...8525,后无进一步转移。
Hacker#6 攻击模仿者-2,获利金额:2,348,967.9 USDT
0x6e60...c5ea(BSC)
Hacker#7 套利机器人-4,获利金额:5,974.52 UNI、1,667.36 MANA
0x6C6B...364e(ETH)
通过 Uniswap 兑换为 30.17 ETH,其中 0.71 支付给 Flashbots,剩余 ETH 未进一步转移。[2022/10/6 18:41:10]
如果这个第三方JavaScript链接主动或被黑作恶,那该桌面版钱包就可以认为是完全沦陷了。到这,我们很有理由相信这是个很大的定时炸弹,如果这个定时炸弹是真的炸了,那很吻合官方的一些说辞与解释,如:尽快升级新版本的Trinity桌面钱包,尽快改密码,尽快转移资产到安全种子里等等。且看官方的后续披露。今天(2020/02/22),我们注意到了官方披露了一些细节,基本验证了我们的推测。https://blog.iota.org/重点关注下这段:TheattackerstartedonNovember27th,2019withaDNS-interceptionProofofConceptthatusedaCloudflareAPIkeytorewritetheapi.moonpay.ioendpoints,capturingalldatagoingtoapi.moonpay.ioforpotentialanalysisorexfiltration.Anotherlonger-runningProofofConceptwasevaluatedbytheattackeronemonthlater,onDecember22nd,2019.OnJanuary25th,2020,theactiveattackonTrinitybegan,wheretheattackerstartedshippingillicitcodeviaMoonpay’sDNSprovideratCloudflare.攻击者利用MoonPay的CloudflareAPIKey完成了后续一系列劫持攻击,预估被盗的IOTA达8.55Ti(8550000枚MIOTA,MIOTA现在是交易所默认最小交易单元,当前价格0.267美金/MIOTA)。根据我们历史经验,如果Web服务方使用了Cloudflare,而其Cloudflare账号权限被控制,就可以做到非常完美的中间人劫持攻击,注入恶意JavaScript。而Trinity桌面钱包又是基于Electron,一个完美的JavaScript执行环境就摆在这,不需要任何特别的越权,JavaScript可以完成用户或Trinity钱包可以完成的任何事情,其中就包括密码和种子的盗取等等。由于我们不像IOTA和MoonPay官方,他们拥有足够的日志记录来将攻击过程完整掌握,我们只能通过我们所能接触到的完成以上推测与相关分析工作。剩下的就希望官方公布具体细节并尽快完成主网的重新运行。在这,我们不得不提的一些安全看法及建议:第三方是可以邪恶的,默认都不可信,软件安全开发过程一定要警惕第三方依赖,包括第三方组件与第三方JavaScript链接注:IOTA基金会联合创始人DominikSchiener表示:「此次攻击是由于集成MoonPay的漏洞造成,Trinity钱包所犯的最大错误是没有集成NPM软件包,并且没有适当地对集成进行安全审核」。我们站在第三方独立安全审计的角度认为,这种说法是不严谨的,在加密货币发展的历史上,因为NPM包中引用的第三方源而导致的加密货币被盗案件不在少数。如知名的「event-stream」事件Cloudflare等第三方CDN/WAF服务很优秀很强大,但如果使用者没安全管理好自己的账号权限,其Web服务将会遭遇完美的中间人攻击公链官方钱包的一个致命缺陷可能搞垮一条公链,链上安全关注的同时,链下安全也不能忽视,他们是一直整体,这也是为什么我们关注的是区块链生态安全,而不是仅仅区块链本身的链上安全作为IOTA官方钱包Trinity的使用者来说,尽快按官方的指导完成安全加固工作,这个就不多说了相关链接:TrinityAttackIncidentPart1:SummaryandnextstepsTrinityAttackIncidentPart2:TrinitySeedMigrationPlanTrinityAttackIncidentPart3:KeyLearnings&TakeawaysIOTAStatusPage:如何看待NPM包event-stream被黑客篡改,发现包含恶意代码?
慢雾:Titano Finance被黑因池子被设置成恶意PrizeStrategy合约造成后续利用:据慢雾区情报消息,2月14日,BSC链上的Titano Finance项目遭受攻击,损失约190万美元,最初获利地址为0xad9217e427ed9df8a89e582601a8614fd4f74563,目前被黑资金已被攻击者转移到其他23个钱包。该攻击主要由于owner角色可以任意设置setPrizeStrategy函数,导致了池子被设置成恶意的PrizeStrategy合约造成后续利用。[2022/2/14 9:51:14]
慢雾:Cover协议被黑问题出在rewardWriteoff具体计算参数变化导致差值:2020年12月29日,慢雾安全团队对整个Cover协议被攻击流程进行了简要分析。
1.在Cover协议的Blacksmith合约中,用户可以通过deposit函数抵押BPT代币;
2.攻击者在第一次进行deposit-withdraw后将通过updatePool函数来更新池子,并使用accRewardsPerToken来记录累计奖励;
3.之后将通过_claimCoverRewards函数来分配奖励并使用rewardWriteoff参数进行记录;
4.在攻击者第一次withdraw后还留有一小部分的BPT进行抵押;
5.此时攻击者将第二次进行deposit,并通过claimRewards提取奖励;
6.问题出在rewardWriteoff的具体计算,在攻击者第二次进行deposit-claimRewards时取的Pool值定义为memory,此时memory中获取的Pool是攻击者第一次withdraw进行updatePool时更新的值;
7.由于memory中获取的Pool值是旧的,其对应记录的accRewardsPerToken也是旧的会赋值到miner;
8.之后再进行新的一次updatePool时,由于攻击者在第一次进行withdraw后池子中的lpTotal已经变小,所以最后获得的accRewardsPerToken将变大;
9.此时攻击者被赋值的accRewardsPerToken是旧的是一个较小值,在进行rewardWriteoff计算时获得的值也将偏小,但攻击者在进行claimRewards时用的却是池子更新后的accRewardsPerToken值;
10.因此在进行具体奖励计算时由于这个新旧参数之前差值,会导致计算出一个偏大的数值;
11.所以最后在根据计算结果给攻击者铸造奖励时就会额外铸造出更多的COVER代币,导致COVER代币增发。具体accRewardsPerToken参数差值变化如图所示。[2020/12/29 15:58:07]
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。