北京时间11月22日凌晨2点37分,CertiK安全研究团队通过Skynet发现PickleFinance项目遭到攻击,共损失约1975万枚价值近一亿三千万人民币DAI。
自9月10日PickleFinance开始挖矿起,一直没有什么存在感。
有了食物大军的大幅涨跌经验在前,投资者本身对于异军突起的Pickle项目保持着一定程度的警惕。
但自从9月14日获得V神亲自站台,酸黄瓜在汹涌的DeFi浪潮中凭借其DeFi新玩法及各种背书,可谓是平地起价完成了10倍的涨幅。
“刚用5美元的价格把手里价值1万美元的PICKLE卖掉,睡了一觉它的价值就变成了60美元???这???”
正当各投资者摩拳擦掌预备好入手这一新型食物代币或是已经深陷其中,11月23日传来的消息却令投资者们大惊失色。
据Messari数据显示,自PickleFinance被黑客攻击后,其原生代币PICKLE暴跌50.12%,直至10.17美元,此后稍有回升,截止当前其市值为11.41美元。
LBank蓝贝壳于5月3日20:00首发 CSPR(Casper),开放USDT交易:据官方公告,5月3日20:00,LBank蓝贝壳上线 CSPR(Casper),开放USDT交易,同时并开放充值,资料显示,Casper网络是基于CasperCBC规范构建的第一个实时权益证明区块链。Casper旨在加速当今企业和开发人员对区块链技术的采用,同时确保随着网络参与者需求的发展,其在未来仍能保持高性能。[2021/5/3 21:19:51]
下文将为你带来本次攻击事件详情分析。
攻击始末
整个攻击流程如下:
第一步:攻击者通过StrategyCmpdDAIV2.getSuppliedUnleveraged()的函数获得当前在位于地址0xcd892a97951d46615484359355e3ed88131f829d的StrategyCmpdDAIV2合约中有多少可以被取出的DAI数目,这里记为Amount_A。
第二步:攻击者调用位于0x6847259b2b3a4c17e7c43c54409810af48ba5210地址处的ControllerV4智能合约中的swapExactJarForJar()函数,并在调用时传入1号和2号脏jar,Amount_A以及0,,作为参数。
LBank蓝贝壳于4月10日01:00首发 BOSON,开放USDT交易:据官方公告,4月10日01:00,LBank蓝贝壳首发BOSON(Boson Protocol),开放USDT交易,4月9日23:00开放充值,4月12日16:00开放提现。上线同一时间开启充值交易BOSON瓜分10,000 USDT。
LBank蓝贝壳于4月10日01:00开启充值交易BOSON瓜分10,000 USDT。用户净充值数量不少于1枚BOSON ,可按净充值量获得等值1%的BOSON的USDT奖励;交易赛将根据用户的BOSON交易量进行排名,前30名可按个人交易量占比瓜分USDT。详情请点击官方公告。[2021/4/7 19:54:33]
swapExactJarForJar()函数
其中1号脏jar和2号脏jar由于是攻击者自己部署的,符合IJar接口的智能合约,因此其中的token()函数的逻辑实现以及其他函数都是由攻击者自己决定的。因为PickleFinanceswapExactJarForJar()函数没有对传入的jar是否为官方的智能合约地址进行验证,因此该步骤得以成立。
LBANK蓝贝壳于3月22日18:00首发 DORA,开放USDT交易:据官方公告,3月22日18:00,LBANK蓝贝壳首发DORA(Dora Factory),开放USDT交易,现已开放充值。
资料显示,Dora Factory 是基于波卡的 DAO 即服务基础设施,基于 Substrate 的开放、可编程的链上治理协议平台,为新一代去中心化组织和开发者提供二次方投票、曲线拍卖、Bounty 激励、跨链资产管理等可插拔的治理功能。同时,开发者可以向这个 DAO 即服务平台提交新的治理模块,并获得持续的激励。[2021/3/22 19:07:06]
swapExactJarForJar()函数中传入的jar可以定义代币的类型
调用withdrawForSwap()函数?
随着swapExactJarForJar()函数的执行,当执行到上图289行的位于swapExactJarForJar()函数中的withdrawForSwap()函数时,经过一系列函数调用,最终执行位于0xcd892a97951d46615484359355e3ed88131f829d的deleverageToMin()函数以及deleverageUntil()函数,将当前StrategyCmpdDAIV2中可以被取出的代币(Amount_A)转移到位于0x6949bb624e8e8a90f87cd2058139fcd77d2f3f87地址的PickleJar智能合约中。
首发 | 欧科云链推出“天眼方案”推动链上安全系统再升级:8月28日,区块链产业集团欧科云链宣布推出区块链“天眼方案”,主要通过链上数据追踪系统研发、对外技术支持、凝聚企业众力等途径,全面助力区块链安全提升和产业平稳健康发展。
据了解,在“天眼方案”下,欧科云链集团将打造链上数据追踪系统,通过溯源数字资产、监控非法交易等手段,全力遏制等非法行为;协助执法机关办案,并为打造法务等区块链系统提供技术支持;为联盟链和基于各类业务的链上数据提供区块链+大数据的解决方案。[2020/8/28]
?deleverageToMin()函数以及deleverageUntil()函数
StrategyCmpdDAIV2智能合约向PickleJar智能合约转移代币的内部交易截图
PickleJar智能合约中的earn()函数
第三步:调用位于0x6949bb624e8e8a90f87cd2058139fcd77d2f3f87地址的PickleJar智能合约中的earn()函数(如上图所示)。
动态 | 可信教育数字身份在广州白云区首发 采用区块链等技术:12月25日,可信教育数字身份(教育卡)广东省应用试点首发仪式与应用研讨在广州市白云区举行。
据介绍,可信教育数字身份融合采用国产密码、区块链等核心技术,创新签发“云计算、边缘计算、移动计算”网络环境下的一体化数字身份,实现一体化密钥管理,构建“可信教育身份链”。(中国新闻网)[2019/12/25]
总共调用三次,目的是将位于当前PickleJar中的pDAI数目的DAI,从0x6b175474e89094c44da98b954eedeac495271d0f地址转移到位于0x6847259b2b3a4c17e7c43c54409810af48ba5210地址处的ControllerV4智能合约中,并在887行通过调用ControllerV4合约中的earn()函数(如下图所示),在下图152行中通过deposit()函数。
从而实现调用0xcd892a97951d46615484359355e3ed88131f829d的StrategyCmpdDAIV2合约中的deposit()函数,将PickleJar中的pDAI数目的cDAI铸造给StrategyCmpdDAIV2。
ControllerV4智能合约中的earn()函数
StrategyCmpdDAIV2合约中的deposit()函数
第四步:再次调用位于0x6847259b2b3a4c17e7c43c54409810af48ba5210地址处的ControllerV4智能合约中的swapExactJarForJar()函数,并在调用时传入3号和4号脏jar,以及0,0,CurveProxyLogic智能合约地址,0x20作为参数。
此处0x20是一个注入参数,目的是为了与CurveProxyLogic智能合约地址配合,执行位于0x6186e99d9cfb05e1fdf1b442178806e81da21dd8地址的CurveProxyLogic智能合约中的add_liquiditya()函数。
3号脏jar:
0xa2da08093a083c78c21aeca77d6fc89f3d545aed
4号脏jar:
0xa445e12d69e8bd60290f6935d49ff39ba31c6115
CurveProxyLogic智能合约地址:0x6186e99d9cfb05e1fdf1b442178806e81da21dd8
swapExactJarForJar()函数使用CurveProxyLogic智能合约地址和注入参数来执行指定函数
CurveProxyLogic智能合约中的add_liquiditya()函数
在此步骤之后,在第三步中存储在StrategyCmpDAIV2被从StrategyCmpDAIV2智能合约中转移到ControllerV4智能合约处。
至此所有可以被取出的代币被以cDai的形式存储在ControllerV4智能合约中,并且攻击者拥有取出cDAI的资格。
第五步,攻击者调用位于地址0x5d3a536e4d6dbd6114cc1ead35777bab948e3643的CErc20Delegator智能合约中的redeemUnderlying()函数,内部调用了位于0xbb8be4772faa655c255309afc3c5207aa7b896fd地址处的CErc20中的redeemUnderlying(),redeemUnderlyingInternal()以及redeemFresh()函数。
最终将所有获得的cDAI转换成DAI,提出所有DAI并完成攻击。
CErc20Delegator中的redeemUnderlying()函数
CErc20中的redeemUnderlying()函数
CErc20中redeemUnderlyingInternal()函数
安全建议
多次的DeFi攻击事件,表明了一个事实:“已审计”并不意味着其拥有了安全保证。
PickleFinance在10月或更早通过的安全审计,并不代表其新增的智能合约均得到了实时的安全检测。
高收益伴随着高风险,此次漏洞的爆发同样也是一个警示。
完备的安全保障=安全审计实时检测资产保障=CertiK审计服务CertiK实时检测安全预言机CertiK快速扫描CertiKShield去中心化资产保障资金池
CertiK的一系列安全服务及工具,覆盖了项目及用户的资产安全需求。
如您有审计需求,欢迎搜索微信关注CertiK官方微信公众号,点击公众号底部对话框,留言免费获取咨询及报价!??
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。