2020年,注定是魔幻的一年。就在刚经历了史无前例的“负油价”之后,4月21日,我们又见证了一笔价值1.75亿人民币的“黑客退款”。
事情的经过大致是这样的:
“重入攻击”细节复盘
北京时间4月19日上午8点45分,中国最大的DeFi平台dForce旗下的贷款协议Lendf.Me在区块高度9899681遭遇黑客攻击,短时间内,锁在协议内的价值2482万美元的12种币资产几乎全部消失,仅剩个零头2940美元,损失约99%锁仓资金。事件一发生,立即在DeFi世界掀起惊涛骇浪。
本次对Lendf.Me 实施攻击的攻击者地址为 0xa9bf70a420d364e923c74448d9d817d3f2a77822,攻击者通过部署合约 0x538359785a8d5ab1a741a0ba94f26a800759d91d 对 Lendf.Me 进行攻击。此次攻击中, Lendf.Me 累计的损失约 24,696,616 美元,具体盗取的币种及数额为:
WETH:55159.02134;WBTC:9.01152;CHAI:77930.93433;HBTC:320.27714;HUSD:432162.90569;BUSD:480787.88767;PAX:587014.60367;TUSD:459794.38763;USDC:698916.40348;USDT:7180525.081569999;
USDx: 510868.16067;imBTC: 291.3471。
攻击事件回顾:
4月18日 08:58
一名攻击者利用 Uniswap 和 ERC 777 的兼容性问题,通过多次迭代调用名为「tokensToSend」的方法函数来对该平台上的 ETH/imBTC 交易对进行重入攻击。
4月18日 12:12
Tokenlon 观察到异常后,立刻定义为 P0 级安全问题,并建立紧急处理小组。
4月18日 12:49Tokenlon 评估安全问题后,暂停了 imBTC 的转账功能并通知 Lendf.Me 及 其他 imBTC 合作伙伴自查安全风险。4月19日 8:58黑客开始对Lendf.Me合约发起攻击。4月19日 09:28Tokenlon 收到 Lendf.Me 反馈,遭遇类似 Uniswap 事件的重入攻击,出现大量异常借贷行为。4月19日 10:12为配合调研重入攻击事件,Tokenlon 暂停 imBTC 的转账功能。4月19日 11:32黑客完成攻击并盗走价值两千五百万美金的加密数字资产。4月19日 12:57Lendf.Me和USDx合约陆续被关闭。事情追溯至去年9月,dForce推出了去中心化网络借贷协议Lendf.Me,用户可以通过链上操作,进行数字资产存币理财和借贷服务。Lendf.Me允许用户以imBTC为抵押物来借出其他数字资产。
ImBTC是由数字资产钱包imtoken推出的一款在以太坊上1:1 锚定 BTC的Token,目的是将BTC的流动性与以太坊智能合约完美结合,持有BTC的用户包括矿工也可以来选择使用defi提供的借出或生息服务。
ImBTC由Tokenlon 负责发行和监管,其编写时采用的ERC-777规范被认为是通用ERC-20标准的更高级版本,可以兼容 ERC-20。然而最近出现ERC-777 代币与 Uniswap/Lendf.Me合约组合时,存在“重入攻击”漏洞,尤其是在DeFi环境中使用时。
该漏洞最初在Uniswap上发生,Uniswap是另一个基于ETH的去中心化借贷协议。就在Lendf.Me被盗前一天,即4月18日, Uniswap也遭重入攻击洗劫,ETH-imBTC资金池损失了1278枚ETH,价值约23万美元。
与今年2月借贷协议bZx因合约漏洞导致99万美元被攻击者套走的安全事故不同,这一次,单个的Uniswap、Lendf.Me和imBTC本身的协议并不存在安全问题,但协议间在调用合约时出现了漏洞风险。
从攻击的作案手法上来看,两起事件背后的主要逻辑是黑客利用了imBTC资产所用的ERC777协议与其他Defi协议的不兼容性,发起重入攻击(Re-entrancy),来劫持正常的事务并执行额外的非法操作。
“重入攻击”的手法在臭名昭著的The Dao事件中也曾出现过,以太坊因此分叉。攻击者往往通过恶意合约A来调取受攻击合约B上的某些函数,并在B的任意位置“重新进入”代码执行。
黑客执行了多次简单攻击的迭代。在每笔交易中,黑客都会将imBTC存入Lendf.me平台,该平台已在其帐户余额中进行了注册。来自同一笔交易的第二笔存款将添加少量的imBTC,这将允许使用“重新入金”来提取先前存入的代币。
至关重要的是,ERC777的回调机制在提取资金时未能更新黑客的余额。因此,他可以自由地重复提供和撤回imBTC,每次余额都增加一倍。
于是,黑客在Lendf.Me的协议上重复铸造出6700多枚假imBTC,并以此抵押,席卷了大约2500万美元的各种加密货币和稳定币,将资产洗劫一空。成功盗取资产后,立即通过1inch.exchange、ParaSwap、Tokenlon 等DEX平台,将盗取的币兑换成ETH及其他代币,此外,还将其余部分赃款转入了DeFi借贷平台Compound和Aave。
简单来说就是智能合约组合之后出现关键缺陷,被黑客利用了。
被盗资金“完璧归赵”
发动攻击后不久,有趣的事情发生了。
4月19日晚10点左右,黑客向1inch.exchange,ParaSwap和一个标识为“ Lendf.me admin”的帐户发送了三笔交易,归还了126,014枚PAX,总值达25万美元,并附言「Better future」。这似乎在暗示着什么,因为“pax”在拉丁语中表示“和平”。
4月20日凌晨3点左右,黑客竟然分批向Lendf.ME的admin 账户转回了38万余枚HUSD 和 320 余枚 HBTC,以及12.6 万 PAX,总价值超过200万美元,也就是说,黑客居然一次性退回了赃款的近十分之一。
随后,dForce官方在推特上发布了一堆“符号码”,疑似通过“密码”向黑客喊话或者进行“谈判”。
Lendf.me最终以温和的语气在链上向黑客留下信息,“Contact us. For your better future.”
更令人意想不到的是,4月21日13点40分左右起,盗取Lendf.ME的黑客竟然陆续向Lendf.ME归还了几乎所有盗窃的代币,包括57,992枚ETH,425.61枚MKR,13.7万枚DAI,50万枚USDT,252.34枚imBTC等等。
至此,3天之间,我们见证了史上最大的一笔,总价值接近1.75亿元人民币的巨额黑客还款。纵观整起追踪事件,整个过程依然充满了魔幻色彩。
看起来着实有些讽刺,但这次攻击也提醒加密货币交易平台应当更注重对交易参与者信息的收集工作,保证交易信息的透明度,从而构建真正的「Better future」。
“他似乎是一名优秀的程序员,但却是没有经验的黑客。”
有业内人士指出,正常情况下,黑客在盗取了这些巨额资产后,应当进行一段时间的彻底“沉默”,待事件逐渐“平息”后,通过“混币”、“粉尘化”等手法进行“洗币”,然后再逐步套现。
之所以选择第一时间还币,最有可能的是黑客本人的真实身份已经被dForce所掌握,通过dForce的沟通和谈判,从而追回了全部损失。
而这位黑客在开展攻击前,很可能并没有做好万全的准备,只是临时起意,以至于拿到1.75亿的巨额数字资产后,一不小心就漏出了破绽。
刚开始返回12.6万的PAX,让人觉得是在侮辱平台。不过后面再次返还更多资产,也有人觉得此次事件中的黑客可能是具有真正“黑客精神”的计算机极客,想通过这种“大事件”,指出行业漏洞,引领行业发展。
对此,区块链安全公司慢雾科技建议,DeFi协议的单一开发方在接入第三方协议时,应充分考虑平台本身的业务逻辑与接入方协议和资产的兼容性,以避免因兼容性发生不必要的安全问题。交易所、钱包应注意加强地址监控,避免相关恶意资金流入平台。
Lendf.Me事件敲响安全警钟
意外事件发生后,dForce平台能够积极处理、力挽狂澜,固然体现了平台本身的责任感。然而,技术上出现的重大漏洞,也为整个行业敲响了警钟。
加密货币被盗事件已不是第一次发生。黑客对加密货币的强烈渴望随着加密货币的价值攀升愈发强烈,他们通过利用合约漏洞、入侵网站、攻击加密钱包等多种方法盗窃加密货币,给加密货币持有者带来了不小的损失。
少数观点认为,黑客的行为利用了合约漏洞,某种意义上是被合约所允许的。但是代码有漏洞不等于平台同意,盗窃行为的本质并没有发生改变,黑客理应为他们的行为承担刑事责任。
事实上,包括盗窃行为在内,黑客针对加密货币所进行的的犯罪行为都会受到刑事法律的规制,从判决结果来看,黑客也将面临较为严厉的刑罚。本案中,黑客的攻击行为造成了Lendf.Me约2500万美元的资产损失,刑事制裁在所难免。
犯罪行为本身的应罚性毋庸置疑,但加密货币定性的不同可能指向不同的罪名,这点在我国表现的尤为突出。在加密货币的性质归属上,我国并没有形成一致的观点,加密货币被盗面临着盗窃罪和非法获取计算机信息系统数据罪两个不同的保护路径,前者肯定了加密货币的财产属性,后者则将加密货币视为信息。需要注意的是,两者在量刑上存在较大差距,盗窃罪量刑要远远高于非法获取计算机信息系统数据罪,这给司法实务留下了很大的不确定性。
不止我国,包括美国在内的一些国家在加密货币的定性上也未能达成一致:
美国商品期货交易委员会(CFTC)将加密货币视为商品;美国证券交易委员会(SEC)将符合HOWY测试的加密货币视为证券;美国金融犯罪执法网络(FinCen)将加密货币视为在一种特定情况下扮演货币功能的交换媒介,可以适用货币规则;美国国税局将加密货币视为一种财产,具有合法的财产属性,需缴纳税收。
赋予加密货币明确的定性是各国都在努力的方向,对于更好的引导、管理加密货币活动具有重要的意义。
黑客通过非法手段获得的加密货币,俗称“黑钱”,难以安全地使用。为了避免公安机关的追踪,势必要对资金进行掩饰,使其看起来“清白”。因此,黑客通常借助交易所和OTC交易商的力量,通过复杂的交易使资金来源难以追溯。正如此次攻击中,黑客不断通过1inch.exchange、ParaSwap、Tokenlon等DEX平台将盗取的币兑换成ETH及其他代币,完成代币的转移。
从执行角度看,区块链的不可篡改性的确为警方追踪资金去向提供了可能,但去中心化的特征也为黑客隐匿身份创造了空间。他们先将加密货币分散,再进行洗钱、提币、洗币等操作,步骤相当繁琐。资金经过拆分转入不同的地址,大额的资金会沿着前进方向进一步小额拆分,进而构建出更为复杂的资金网络,加大警方追踪侦测的难度。
但洗钱过程并非难以察觉,黑客盗窃的目的最终是为了变现,而变现的途径无非是场外交易或交易所交易。如果交易所和OTC交易商能够做好客户信息搜集、尽职调查和信息保存工作,并能将动态及时上报,那么非法资金的流动是可以被及时发现并引起警方注意的。并在最大程度上切断资金外流通道,追回赃款,挽回加密货币持有人的损失。监管机构或调查金融犯罪等机构也得以通过搜集到的各方面信息进行梳理、比对,逐步还原资金流向。
然而,加密货币能够全球性流通,追踪过程无法靠一己之力完成,还需要借助国内外等多方力量的协助,执行起来要复杂得多,即便能够准确定位黑客的身份和位置所在,将丢失的加密货币全部追回的可能性也并不大。
加密货币安全公司CipherTrace CEO David Jevans曾表示,当交易平台或交易所遭到黑客攻击,由于加密货币可以轻易地跨越不同的国界,只有20%的被盗加密货币能够找回。
接连两次的攻击都在警示我们,保障加密货币的安全不能仅依靠区块链技术本身的优势,可以看到黑客已经掌握了DeFi系统性风控漏洞的要害,无论是加密平台还是加密货币持有者,都应当提高风险防范意识。
对加密平台而言,尽可能的弥补技术短板,提升交易信息的透明度,并完善相应的反洗钱预警机制,在第一时间对加密货币风险作出反应。
对加密货币持有者而言,无论是反洗钱机制还是刑事法律制裁,都只能起到事后救济的作用,而目前制度框架还处在搭建和完善中,未必能提供强有力的保护。因此,提高警惕心理,妥善保管交易密钥,强化账户认证端口才能尽到最大程度的事前防范。
“飞船”起飞爆炸,DeFi就此灭亡?
“我对于官方能给补偿什么的,基本不抱希望。” DeFi借贷协议Lendf.Me资产被盗后,多数投资者存放在平台上的资产打了水漂,“白特幂”便是其中之一。他在社交平台上表示自己存入Lendf.Me用来理财的USDT因该协议被攻击而消失一空,但他觉得开发团队的赔付能力不足,并透露出放弃追索的想法。
“前阵子,这个DeFi项目成为了Multicoin资本投资的第一个开放金融项目,跟投的包括火币、招银国际等知名资本方,但也融到了不过150万美元。就目前的情况看,我不认为团队有能力填补眼前近2500万美元的资产损失。”
这个事件背后,另外一个魔幻的地方在于,国外加密货币圈子的朋友,相当部分嘲讽起了Lendf.me,甚至是整个中国的相关区块链项目。
在区块链创业赛道里,中国团队集中分布在公链、Dapp领域,做Lendf.me这样协议类的团队非常少。而中国的“区块链项目”,似乎被太多的资金盘项目给污名化了,导致在部分外国朋友眼中看来,中国的项目就是空气、诈骗。
“如果你真的信任中国的DeFi协议,你可以换个新工作了”
“我们应该提供这样一项咨询服务,如果有人想在并不了解的中国项目里投资,我们只需要告诉他们别投资,就可以拿到3成咨询费了。”
“你真的会相信中国的DeFi项目?”
与现有的银行、证券交易所等中心化金融系统不同,DeFi的创建们希望能用代码和智能合约创造一个无需审查权限、地位平等、人人可参与的开放金融生态。DeFi大规模发展的基础设施是各种去中心化协议,从功能上看,这些协议包含了发行资产、交易、抵押借贷、融资等各种现实世界中存在的金融职能,且可利用智能合约的桥接,让各种功能在一个体系内实现。
理想是美好的,现实总是很残酷。DeFi无法逃脱中心化系统也可能面临的风险,包括安全风险和经济危机,在抗风险能力上,还没有中心化系统强大。
进入2020年,DeFi领域几乎每个月都发生了大规模的资产风险事件。其中既包括像bZx、Lendf.Me出现的技术风险,也包括MakerDao在“3·12”市场剧烈波动下的流动性风险。此次,Uniswap和Lendf.Me两协议先后遭攻击,2500多万美元的资产被盗,DeFi金融基础设施再次暴露了脆弱性。
今年2月,在ETH Denver大会期间,黑客在15秒内连续利用Dydx、Compound、Uniswap、bZx和Kyber总共5个DeFi产品,一顿操作成功套利35万美元。全程15秒钟,1分钱都没有花,变戏法一样获得了超过35万美元的收益,而且这一系列操作,丝毫不违规,完全是一次完美合法的套利行动。
DeFi金融系统和它的基建成员们,既要面对智能合约漏洞遭黑客攻击的风险,也存在贷款的结构性缺陷;如果出现滥用职权的超级管理员突破道德约束,还将面临毁灭性的打击;bZx漏洞事件暴露出了潜在的市场操纵风险;“3·12”的市场大跌又让外界一睹DeFi在市场流动性风险到来时的应对局促。
DeFi的目标应该是让无法享受金融服务的人也能无门槛地获得金融服务,改善生活甚至改变命运,而不应该是让用户成为炮灰。财产安全问题得不到保障,DeFi做得再出色,也不会有用户。
不可否认的是,无需权限、抗审查、开放性的DeFi金融体系依然十分脆弱,建设者们仍旧需要在一次次的风险中巩固基础设施。
DeFi作为一种全新的范式转移,开启了新兴的金融模式之路,会在一定程度上改善我们的基础金融业务,未来依然令人激动。然而,如何保障其安全性,是今后区块链从业者必须要解决的问题。
总之,安全永远排在第一位。道阻且长,前途是光明的,道路是曲折的。
投资者如何平衡风险及收益?
想要获得收益,必须接受风险。不确定性是这个世界的本质属性。
目前,不同的DeFi产品,风险各不相同。抵押借贷类DeFi产品的风险包括:
(1)智能合约代码安全性引入的风险;
(2)智能合约Admin Key引入的运营风险;
(3)持有特定资产本身的风险;
(4)抵押借贷类DeFi本身的市场风险
(5)智能合约平台的风险;
(6)用户自身私钥管理的风险。
针对智能合约代码安全性引入的风险,安全审计报告是规避智能合约风险的第一道关口,也是最重要的关口,也是目前唯一能前置规避智能合约风险的措施,我们需要更加重视平台关联的审计报告。时间是最好的检验,经过长时间有效实战检验的智能合约,风险将显著降低。
针对智能合约Admin Key引入的运营风险,用户需要检查运营方是否主动披露Admin Key权限、Admin Key的权限范围,以及对Admin Key权限是否设置了延时生效机制。延时生效机制是防范Admin Key的侵入式权限对用户造成伤害的有效防御手段,同时也是反应运营方态度的关键看点。同时,用户可以检查持有Admin Key权限的运营方本身的信誉,其所处的司法管辖区是否能起到有效的保护作用。
对于用户来说,学习相关知识,建立一套完善的、适合自身的私钥管理体系,是非常重要的。其中备份、保密机制、物理存放安全以及人身事故后的预案。同时可以通过使用智能钱包规避私钥管理的风险。另外,从投资的角度,务必遵守“分散原则”。