DNSHijacking(劫持)大家应该都耳濡目染了,历史上MyEtherWallet、PancakeSwap、SpiritSwap、KLAYswap、ConvexFinance等等以及今天的CurveFinance,十来个知名加密货币项目都遭遇过。但很多人可能不一定知道其劫持的根本原因,更重要的是如何防御,我这里做个简单分享。DNS可以让我们访问目标域名时找到对应的IP:Domain->IP_REAL如果这种指向关系被攻击者替换了:Domain->IP_BAD(攻击者控制)那这个IP_BAD所在服务器响应的内容,攻击者就可以任意伪造了。最终对于用户来说,在浏览器里目标域名下的任何内容都可能有问题。DNS劫持其实分为好几种可能性,比如常见的有两大类:域名控制台被黑,攻击者可以任意修改其中的DNSA记录(把IP指向攻击者控制的IP_BAD),或者直接修改Nameservers为攻击者控制的DNS服务器;在网络上做粗暴的中间人劫持,强制把目标域名指向IP_BAD。第1点的劫持可以做到静默劫持,也就是用户浏览器那端不会有任何安全提示,因为此时HTTPS证书,攻击者是可以签发另一个合法的。第2点的劫持,在域名采用HTTPS的情况下就没法静默劫持了,会出现HTTPS证书错误提示,但用户可以强制继续访问,除非目标域名配置了HSTS安全机制。重点强调下:如果现在有Crypto/Web3项目的域名没有强制HTTPS(意思是还存在HTTP可以访问的情况),及HTTPS没有强制开启HSTS(HTTPStrictTransportSecurity),那么对于第2点这种劫持场景是有很大风险的。大家擦亮眼睛,一定要警惕。对于项目方来说,除了对自己的域名HTTPS+HSTS配置完备之外,可以常规做如下安全检查:检查域名相关DNS记录(A及NS)是否正常;检查域名在浏览器里的证书显示是否是自己配置的;检查域名管理的相关平台是否开启了双因素认证;检查Web服务请求日志及相关日志是否正常。对于用户来说,防御要点好几条,我一一讲解下。对于关键域名,坚决不以HTTP形式访问,比如:http://examplecom而应该始终HTTPS形式:https://examplecom如果HTTPS形式,浏览器有HTTPS证书报错,那么坚决不继续。这一点可以对抗非静默的DNS劫持攻击。对于静默劫持的情况,不管是DNS劫持、还是项目方服务器被黑、内部作恶、项目前端代码被供应链攻击投等,其实站在用户角度来看,最终的体现都一样。浏览器侧不会有任何异常,直到有用户的资产被盗才可能发现。那么这种情况下用户如何防御呢?用户除了保持每一步操作的警惕外。我推荐一个在Web2时代就非常知名的浏览器安全扩展:@noscript(推特虽然很久很久没更新,不过惊喜发现官网更新了,扩展也更新了),是@ma1的作品。NoScript默认拦截植入的JavaScript文件。
慢雾MistTrack:DeFi项目Pickle Finance pDAI池被盗资金再次发生异动,多次使用Uniswap进行兑换:据慢雾MistTrack监测信息显示,2020-11-22 攻击 pickle pDAI池的黑客地址(0x701781...7a4E08)继1月8日异动后,再次于1月14日发生异动。此前黑客地址转移了1500万DAI到五个新地址,现除了地址5(0x64bA3e...fF62DB),其余四个地址均发生异动,其中地址1(0x607d65...04e461)和地址2(0x17d4fe...2b7a39)分别向另一个地址3(0x157b0f...862a01)转入400万DAI。除此之外,慢雾MistTrack监测到1月9日、11日,黑客均向地址3(0x157b0f...862a01)分别转入176万DAI、300万DAI,紧接着地址3(0x157b0f...862a01)于当天通过Uniswap、1inch将一部分DAI兑换成CORN或COMP,另一部分DAI转到地址1(0x607d65...04e461)、地址2(0x17d4fe...2b7a39)。
目前地址1(0x607d65...04e461)有1亿9千万cDAI,地址2(0x17d4fe...2b7a39)有4亿3千万cDAI,地址3(0x157b0f...862a01)有32万DAI,地址5(0x64bA3e...fF62DB)有400万 DAI。[2021/1/15 16:15:10]
慢雾: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]
但是NoScript有一点的上手习惯门槛,有时候可能会很烦,我的建议是对于重要的域名访问可以在安装了NoScript的浏览器(比如Firefox)上进行,其他的尽管在另一个浏览器(如Chrome)上进行。隔离操作是一个很好的安全习惯。许多你可能觉得繁琐的,驾驭后、习惯后,那么一切都还好。但是这并不能做到完美防御,比如这次@CurveFinance的攻击,攻击者更改了其DNSA记录,指向一个IP_BAD,然后污染了前端页面的:https://curvefi/js/app.ca2e5d81.js植入了盗币有关的恶意代码。如果我们之前NoScript信任了Curve,那么这次也可能中招。可能有人会说了要不要多安装一些浏览器安全扩展,我的看法之前已经提过:
动态 | 慢雾区发布0day漏洞预警 可盗取交易所账号:慢雾区0day漏洞预警:某第三方知名 JS 库存在 XSS 0day 漏洞,可绕过 Cloudflare 等防御机制。该漏洞如果被恶意利用会导致数字货币交易所等平台的用户帐号权限被盗、恶意操作等资产损失。经过慢雾安全团队确认该漏洞影响范围非常之广,漏洞利用过程简单,威力十足。[2018/9/18]
慢雾 x IMEOS市场预警:警惕数字货币转账地址劫持攻击,这个攻击链从钱包地址的展示到复制到最终黏贴环节都可能存在。从我们历史审计经验及慢雾区情报反馈来看,这个攻击在交易所或钱包转账过程,暗网勒索过程等都有相关真实案例发生。这个攻击从地下黑客风向标来看,已经颇具产业链形态,特此预警:在转账确认之前一定要再三确认目标钱包地址是否正确(不要仅看首尾字符串,需要严格一一验证)。[2018/4/12]
这个话题我暂时先介绍到这,目的是尽可能把其中要点进行安全科普。至于其他一些姿势,后面有机会我再展开。原地址
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。