DeFi沦为黑客取款机背后——DeFi智能合约安全漏洞的法律探讨
DeFi沦为黑客取款机背后——DeFi智能合约安全漏洞的法律探讨
背景:
2020年4月18日,DeFi平台Uniswap被黑客利用了Uniswap 和ERC777 标准的兼容性问题缺陷实施了重入攻击,攻击者利用此漏洞消耗尽Uniswap ETH-imBTC 池约1,278个ETH。[1]
2020年4月19日,网传国产DeFi 借贷协议Lendf.Me 被曝遭受黑客攻击,黑客利用imBTC的ERC 777合约漏洞来实现重入攻击,Lendf.Me损失了大约2500 万美元。Lendf.Me为此被嘲笑沦为黑客取款机。[2]
2020年4月25日,Lendf.me黑客事件发生不到一周,链上期权协议Hegic 发布推文称代码中出现错误(typo),无法为新创建期权合约解锁过期期权合约中的流动性,有152.2ETH(约合28537美元)被永久锁定在未行使的看跌/看涨期权的合约池中。[3]
然而,以上安全事故并非个例,根据区块链安全服务商PeckShield的统计,包括前两者在内,2018年底到2020年4月,DeFi安全事件有12起,大部分源于智能合约安全漏洞。仅2020年4月的3起案例中2起与ERC777合约漏洞有关。
DeFi怎么了?智能合约还靠谱吗?法律上有没有救济手段呢?
DeFi与智能合约
DeFi,即Decentralized Finance,常被称作分布式金融或者去中心化金融,去中心化交易所、网络借贷平台、保险平台、去中心化钱包等都是属于DeFi范畴。DeFi产品是散布于世界各地的人以点对点的方式参与金融活动的平台,如消费、借款、贷款、交易,甚至赌博,而无需依赖银行和政府等中介机构,因此备受去中心化拥趸们的追捧,成为不可忽视的活跃于金融领域的力量。
DeFi产品在区块链平台上运作,大量且频繁的交易则依赖于部署在链上智能合约予以自动化处理。以太坊上,数字货币的发行和流通、借贷、投票、拍卖等,都已有现成的智能合约模块可供调用,各种新的智能合约也在不停编写和部署中。
智能合约的安全漏洞
笔者曾在《智能合约的法律思考》一文中,详细分析了智能合约的本质就是计算机代码,其被部署于区块链上,以供交易在预设条件满足时的自动执行。智能合约在自动化执行、效率等方面具备了其他执行方式所无可比拟的优点。但是,基于其计算机代码的本质,智能合约也有不可忽视的局限性。
代码漏洞
计算机代码由人类编写,不可避免的存在漏洞。一个比较有利的证据是,英国伦敦大学学院副教授Ilya Sergey与新加坡国立大学多位学者合著的论文Finding The Greedy, Prodigal, and Suicidal Contracts at Scale[4]指出:"将近 100万份智能合约进行每份10秒分析时间的分析后发现,这其中有34200份智能合约很容易受到黑客攻击,其中2365份有明显漏洞。"
这些漏洞,是黑客攻击的切入点,隐藏着用户财产损失和信息泄露的风险。
执行不能
智能合约区别与普通合同的显著特点是其能够做到不可逆地自动执行。并且,凭借区块链不易篡改的技术特点,部署于区块链的智能合约所储存和运行的方式也是不易修改的。基于区块链技术的智能合约的这一特点就像是硬币的两面,利弊参半。
一方面,自动执行特征大大提高了合同履行效率和合同当事方的违约成本;另一方面,一旦存在安全漏洞,智能合约的漏洞修补将会非常困难。即使有管辖权的司法机关作出有效的裁决或判决,由于部署在区块链的智能合约由区块链自动运行,法院或其他第三方也无法强制修改[5]。进一步而言,基于区块链的智能合约,其数据被分布记载于全链节点,就是修改某一个节点上的数据,也无法实现全链记录的变动。[6]
智能合约的安全审计
如前文所述,智能合约存在安全漏洞的概率极高,一些区块链安全服务商随及推出了智能合约安全审计服务。简单来说就是在智能合约上线运行前,由区块链安全服务商对于智能合约的安全性进行审查,评估是否存在安全漏洞,并出具报告。
那么,智能合约安全审计对于避免防范安全漏洞风险的作用有多大呢?
从技术角度来说,专业区块链安全服务商对于智能合约的安全审计确实能够发现安全漏洞,但是能发现多少,改进的建议是否有效,还取决于审计人员的专业水平和是否有足够的工作时间。但即使是安全审计人员,也不可能在有限时间内穷尽发现所有漏洞。
从成本角度来说,聘请第三方安全审计,必然会增加项目的经济成本,而且最终转嫁给用户。而DeFi的一大特点就是成本低,所以这部分成本项目方和用户不一定愿意承担。进一步而言安全审计后,修改bug势必推迟项目上线,在唯快不破的DeFi界,项目方不一定有足够的意愿有效地修改全部已知漏洞。一个例子是,本文开头说到的Hegic案例中,Trail of Bits在为期3天的代码评审(不是安全审计)过程中发现了HegicOptions 中至少存在10个可能会伤害用户的关键缺陷,Trail of Bits向Hegic团队给出的建议是推迟部署,然而,Hegic在修改了部分bug后依旧匆忙上线[7]。
法律责任和救济
如前文论述,智能合约存在漏洞几乎是不可避免的,只是漏洞的数量和严重程度的区别。那么DeFi的智能合约安全漏洞导致用户损失的情形下,法律责任应该如何分配?用户有无寻求救济的途径呢?
违约责任和侵权责任
与法律救济相关的民事责任承担分为两大类,一类是违约责任,一类是侵权责任。违约责任基于双方已建立的合同关系,例如买卖关系、服务关系,而其中一方违反了合同约定,就应当根据合同的约定承担相应的违约责任,例如赔偿损失、支付违约金等。侵权责任中,一方侵犯了他方的民事权益,则应当依照法律规定承担侵权责任。
两者的区别在于,大部分情况下,前者违约方承担责任的依据是合同约定,后者侵权方承担责任的依据是法律规定。
法律救济的难点
DeFi项目中,由于智能合约和区块链的技术特点,确实在法律救济的实现上,有相当大的难度。
首先,由于智能合约及区块链的特点决定了DeFi项目中参与各方分布于世界各地,并且同一方也可以在不同时间不同地点参与DeFi项目,管辖权难以确定。
其次,责任范围难以界定且用户举证困难。在事故的背后,损失的形成其实包含多方参与的结果。而且,由于数字化平台复杂的程序语言,对于用户而言,证据的搜集、处理和提供都十分困难。
最后,责任方的赔偿能力或可执行的财产不足。由于DeFi项目以及数字货币的特殊性,对于黑客而言,其大部分财产是盗取的数字货币,但由于技术原因,目前执行机关并没有能力强制执行这一部分的数字资产用以赔偿受害人的损失。而对于项目方而言,DeFi项目成本低、门槛低的特点使得其并没有足够的资产来赔偿用户的损失。
责任主体
1. 黑客
黑客,作为造成DeFi安全事件的罪魁祸首,毫无疑问是造成投资者受损的侵权主体。法理上,黑客的行为明显是侵犯了用户及DeFi项目的财产权和隐私权,可以依照侵权责任法律的规定追究黑客的侵权责任。但是,由于互联网的特殊性,使得用户直接寻找黑客赔偿的可能性几乎为零。
2. 项目方
尽管DeFi安全事故中往往是黑客攻击导致用户遭受损失,并且从技术中立的角度来说,交易相关的违约责任和损害赔偿责任,除法定或合同约定的责任外,立法不应当因为项目采用了智能合约而加重某一方的责任。
但是,项目方作为一个DeFi服务提供者,如果项目方在智能合约的编写、部署过程中存在故意或重大过失而使得智能合约存在漏洞易受黑客攻击等原因导致用户遭受损失,项目方应当存在一定的侵权赔偿责任。而项目方在向用户承担赔偿责任后,应当取得代位求偿权,向黑客进行索赔。从另一方面来说,考虑项目方与用户形成金融基础设施的服务关系,如果双方在服务合同中约定了项目方对于平台等基础设施承担安全保障义务,那么由于项目方提供的智能合约漏洞造成用户损失的,用户可以根据服务条款追究项目方的违约责任。
但是,由于损害主要是由黑客的行为造成,无论是根据侵权责任法还是根据合同约定,都很难适当界定项目方在其中的责任范围,既不过于苛责又达到救济目的。
3. 安全审计方
第三方安全审计,有点类似公司的财务审计,为项目方提供安全审计服务的,其在报告中往往会有一些免责条款。在此情况下,免责条款是否有效,用户是否可以向安全审计方追究责任,责任范围的大小,也是需要个案讨论的。但总的来说,用户依赖于安全审计报告作出决策导致的损失,用户或项目方很难实现向第三方安全审计服务商追偿。
实现法律救济的思考
从现有实践来看,以目前的传统救济方式,DeFi项目中,因智能合约漏洞导致用户损失的,用户很难得到救济。无论是项目方经营主体的履责能力,还是寻找黑客的困难程度以及时间花费,亦或是判决执行的难度,都为实际实现DeFi安全事故中的法律救济蒙上了一层厚重的阴霾。以下是我们分别从民事救济以及监管执法两个层面对救济途径的探索和思考:
1. 民事救济
(1) 约定管辖
正如上文提到, DeFi项目中参与各方分布于世界各地,管辖权难以确定。我们建议DeFi项目方可以考虑在提供的智能合约中明确约定管辖权,包括约定适用法律、管辖地、法院或仲裁庭等的方式,以避免在上述安全事故发生时用户和项目方处于无处可诉的尴尬局面。
(2) 设定合同义务
在项目方与用户形成金融基础设施的服务关系时,如果双方在服务条款中约定了项目方对于平台、智能合约等基础设施承担必要的安全保障义务,那么由于项目方提供的智能合约漏洞造成用户损失的,用户可以根据服务条款追究项目方的违约责任。
(3) 追究侵权责任
如前文所述,黑客必然存在侵权责任,而DeFi项目方也可能因其故意或重大过失而对DeFi智能合约的安全漏洞存在侵权责任。因此,即使没有明确的合同约定,受损害的用户也可根据所适用的法律向侵权方追究侵权责任,例如要求侵权方赔偿损失。
(4) DeFi商业保险
就如汽车的交强险一般,DeFi项目平台可以考虑通过购买一定的商业责任保险,来提高DeFi项目在发生黑客入侵或智能合约漏洞等问题引发的用户损失事件中的赔偿能力,并以此增加用户对于该DeFi平台的黏性和忠诚度。例如,美国洲际交易所旗下的交易所Bakkt就为其托管的比特币购买了1.25亿美元的保险。
2. 监管和执法
随着DeFi项目的普及化,参与主体广泛,影响面日益加大,我们认为有必要从监管和执法角度考虑针对DeFi着手立法,从而规范DeFi项目的运行,也在受损害方寻求法律救济时有法可依。以下我们在Defi监管和执法方面的关于立法的思考。
(1) 牌照监管
传统金融领域属于严监管行业。尽管DeFi项目的初衷是去中心化,但是DeFi项目所提供的金融基础设施服务与金融服务密不可分,从某种程度上取代传统金融领域中金融服务机构的地位,为了保护用户及项目方,对于DeFi项目设立地或上文中提到的约定管辖地金融监管机构,仍可以对项目方设定牌照许可要求,要求项目方满足一定规模条件,取得牌照后方可正式运行。
另外,出于提高项目方赔偿能力等目的,我们认为监管机构可以在审核牌照申请时要求项目方预存一部分风险准备金或满足上文中提到的民事救济要求。
(2) 警方追查
如前文所述,用户几乎没有直接寻找黑客进行索赔的能力,因此用户应当及时报警,交由警方处理。而作为项目方的法定义务,项目方应当积极配合警方寻找黑客,包括提供IP地址、KYC资料等交易信息,以期尽快找到黑客,将其绳之以法。
(3) 举证责任倒置
从立法或释法角度,则可以通过举证责任倒置的方式给予普通用户更多保护。DeFi平台中大量运用区块链、智能合约等新兴技术,作为普通用户而言,如果按照"谁主张,谁举证"的原则,其举证难度极大且难以实现;而项目方作为金融基础设施服务的提供者,掌握了交易记录及服务相关的各种数据,有更强的举证能力。因此出于公平考虑,在举证规则的立法中,就与智能合约有关的争议解决中,在用户请求项目方承担违约或侵权责任的情形时,建议考虑适用严格责任原则,由项目方承担举证责任,证明项目方在用户损失中没有侵权行为或无因果关系。
尽管通过上述方式,可以从一定程度上弥补DeFi安全事故中用户法律救济无门的困境。但是,真正实现有效的法律救济从来都比纸上谈兵要困难地多。
当然,相信随着DeFi的发展和其用户规模的不断扩大和日益成熟,监管机构的重视、介入以及科技发展,或许能够找到适当的救济方法。
结语
作为新兴技术的产物,无论是智能合约还是DeFi都需要一个成熟完善的过程。但不可否认的是,这些新兴技术确实对丰富金融产品活跃金融市场具有一定的积极意义。对于新技术需要有一定的包容度和耐心。相信在经历时间的考验后,基于智能合约的DeFi会在竞争激烈的金融市场中占据一席之地。
[注]
[1] https://blog.csdn.net/PeckShield/article/details/105671833
[2] https://tech.ifeng.com/c/7vpWWTa2CyL
[3] https://www.chainnews.com/articles/737927084710.htm?from=groupmessage&isappinstalled=0
[4] https://arxiv.org/pdf/1802.06038.pdf
[5] Primavera De Filippi, Aaron Wright:《监管区块链:代码之治》第167页
[6] 樊晓娟,《智能合约的法律思考》,《时代观察》2020.2
[7] https://www.chainnews.com/articles/737927084710.htm?from=groupmessage&isappinstalled=0