原作者 | HodlBot-Anthony Xie
译者 | 区块律动BlockBeats 0x4
在 7 月 4 号的币安 API 被攻击本该是一件大事,当天,有 11 个名为 SYS 的 Token 在币安交易所内以 450 万人民币(96 个比特币)的价格被成交,相对其之前价格瞬间暴涨了 320 万倍。但这件事却因为当时最重磅的八卦「李笑来录音门」所被人忽视了。
本文作者 Anthony Xie 来自加拿大,是量化交易&智能投顾公司 Hodlbot 的创始人,作为各大交易所 API 的长期使用者,他看到了一些不同寻常的数据。
当每个人谈论的焦点都是 11 个 SYS 居然以每个价值 96 个比特币的价格成交 (共约 700 万美元) 时,他发现一个更惊人的事实:有 13152 个 SYS 以每个价值 1.1 比特币的价格成交(价值约为 9700 万美元)。后者的金额比前者要大出 13 倍,并且,作者也因此产生了更深的疑问,黑客是如何找到这些账数字货币大户并「定点爆破」的。
让我们来阅读原文一探究竟。
关注我(原作者)的人都知道我是一家量化交易投资公司的创始人,我们利用交易所的 API 为投资者提供简单的数字加密货币多样化投资。目前,我们的平台调用 Binance 的 API 进行工作。
可想而知,当我得到币安(Binance)上周被黑客盗取了 4500 万美元(7000个比特币)的消息时,内心十分惶恐不安。
在那之后,暴风雨似乎平息了,币安发布声明表示资金现在是安全的,他们将承担起所有损失。
但是我对这一声明并不满意,关于此次事件的新闻报道少得可怜,很少有信息流露出来,正因为如此各路谣言如野火一般燎原。
作为一个希望币安获得成功的人,我在写这篇文章的时候感到很矛盾。但是我必须对自己的用户和社区负责,对这起事件进行彻底的调查。我将尽力对事件进行全面的分析,澄清谣言。
我们知道的事情
在我们深入挖掘细节之前,先来利用官方来源发布的信息整理出事件的简要时间表。
7 月 3 日 晚上 8:44 UTC
SYS 的价格从 0.0004 BTC 拉升到 96 比特币。
7 月 3 日 晚上 9 点左右 UTC
币安因为计划外的维护而关闭了交易所
7 月 3 日 晚上 11 点左右 UTC
作为安全防范措施,币安重置了所有 API 密钥。
7 月 4 日 上午 12 点左右 UTC
币安重新启用了 API 密钥的创建。
7 月 4 日 下午 4 点左右 UTC
币安完成了系统维护
7 月 4 日 下午 6 点左右 UTC
币安发布了一份官方事件回顾报告,声明该事件是由不正常的 API 交易活动造成的。
币安所谓的不正常的 API 交易活动是什么?
要理解为什么 API 攻击常常会带来加密货币的价格被拉升到匪夷所思的高度,我们首先需要了解币安的 API 是如何工作的。
对于门外汉来说,币安的 API 允许计算机以编程方式与交易所进行交互,就好像是用户自己在操作一样。想要启用 API 访问,用户首先要生成一组 API 密钥,这些秘钥是为用户账户提供交互权限的凭证。
在币安的系统中,有三个不同级别的 API 权限:
只读权限:获取用户有关持仓、交易历史和市场活动的数据。
交易权限:可替用户执行交易
提款权限:可从交易所中提款
在默认情况下,只读权限与交易权限是默认启用的,然而提款权限却不是默认启用的。因为提款权限涉及的风险更高,币安强制用户为其预先设置 IP 白名单和双重认证。
因此,即便攻击者窃取了用户名、密码或 API 密钥,他们往往不能获得提款权限。在这种限制条件下,黑客必须想法设法将盗取的资金转移到有提取权限的账户中。
黑客拿到 API 后通常的做法:
在攻击之前,攻击者会囤积大量的某一种加密货币,这种被选为目标的加密货币通常交易量很小,订单也很少。
在这之后,攻击者使用被盗账号通过 API 提交大量的购买订单,交易价格通常高得离谱 (一般来说是正常价格的 1 万倍)。
攻击者通过出售他们之前低价囤积的此种加密货币赚取了巨额利润。
最后一步,攻击者把他们的战利品巨额资产从币安中提走。一旦这些资金从交易所转移到了区块链中,几乎任何人都不可能逆转交易。
API 数据告诉我们的那些事
与其在黑暗中抓瞎,不如让我们用币安的 API 来提取 SYS/BTC 交易的历史数据,一探究竟。
价格波动与交易量
在 7 月 3 日之前 SYS 的价格并没有什么特别之处,然而 7 月 3 日当天价格却十分可疑地飙升至 96 比特币。
与此同时,SYS 的单笔交易量和总交易量都出现了大幅上升。
历史订单数据
当我们开始从 /api/v1/aggTrades 中提取数据时,事情变得有趣起来。
从此端点获取的完成交易的历史记录显示,同一时间,相同的订单以相同的价格发起交易,使得交易数量迅速攀升。
请注意,当时每个人都在谈论的焦点都是 11 个 SYS 居然以每个价值 96 个比特币的价格成交 (约 700 万美元),但是他们更应关注的是另一个大单,有 13152 个 SYS 以每个价值 1.1 比特币的价格成交(价值约为 9700 万美元)。
通过在一个气泡图上绘制所有的交易订单,我们对于这种交易规模可以有更直观的认识。图中每一个圆圈都代表一个订单,每个圆的大小表示以美元计算的总交易量。
总量为13,152个SYS的交易订单非常可疑
因为我们掌握了所有参与交易的 ID,因此可以用它来获取所有单个交易订单。
/ api / v1 / historicalTrades
我把所有交易订单的历史数据都放在了 google 数据表中(区块律动BlockBeats友情提示:点击阅读原文查看,科学上网)。
我们发现这 13152 个 SYS 交易总量是由 132 个独立发起的交易订单组成的,每一个订单都以 1.1 比特币的单价购买了 99 个 SYS,最后一次的购买订单为 84 个 SYS,最终总订单交易量达到了 13512 个 SYS,整个过程十分整齐划一。
我们已经联系了币安,并确认了上述每一个单笔交易都来自同一个人。这就意味着用于执行这些交易订单的帐户数量必须在 1 到 133 之间。
比较常见的解释是 API 密钥被钓鱼了,这些被黑了的账户被黑客用于发起攻击。我觉得这种说法还是存在很多疑点,黑客们从哪里能找到这么多土豪账户(账户中至少有 69 万美元)?
以单价 96 比特币的价格购买了 11 个 SYS 的订单就更加离奇了,这意味着某人的账户上一定有 1056 个比特币 (约为 6,694,406 美元)。
在这一点上,或许是黑客制造了系统故障或利用了系统漏洞提交了大量错误交易。
与 VIA 币价格暴涨进行数据对比
让我们将此与 VIA 价格暴涨事件进行比较,我们都知道这是一起由黑客钓鱼 API 密钥发起的攻击。
3 月 6 日之前,VIA 的数据还展现出正常的交易波动。就在 3 月 7 日,价格突然暴涨。
与 SYS 一样,VIA 的订单数量和交易量也大幅上升。
虽然 VIA 的交易活动图和烛台图看上去与 SYS 十分相似,但他们的历史成交数据却大相径庭。
我们看到了在 SYS/BTC 出现异常波动当天有不少大额订单,而 VIA/BTC 出现价格波动的时候则是存在大量账户提交了小额订单。在我看来,VIA 这一次的价格波动是更为典型的 API 钓鱼攻击。
这么来看 SYS 的价格波动就相当古怪了。
再来看看这些在图中排成一条直线的诸多订单。
如果我们把所有的 SYS 交易拆分成单笔交易,并比较它和 VIA 的交易量分布,就会发现很明显 SYS 的交易量要大得多。
看到这两组截然不同的数据后,我们真的能说这两起事件都是 API 秘钥钓鱼攻击吗?
清除谣言
有大约 7000 比特币正在从币安的热钱包中被提走
这里被监测到的交易链接(区块律动BlockBeats友情提示:点击阅读原文查看,科学上网)。许多人都以这个为证据到处张扬,认为这些资金是非自愿从币安的热钱包中撤走的。
到目前为止,币安还没有对这些指控做出回应,这种沉默让谣言的野火越烧越旺。
纠正一个常见的误区
我以为币安的最大提款额度是 50 比特币,那么 2000 比特币怎么能从热钱包里转出呢?
因为有时作为输出的金额超过了用户想要支付的金额。在这种情况下,比特币客户端会创建一个新的比特币地址,并把差额发送回这个地址,这就是比特币的找零机制。
比如你想从商店买一块钱的棒棒糖,你打开你的钱包,发现里面只有一张 20 元面值的人民币。你能支付的最小金额是多少呢?当然不是 1 块钱,你不能把这张 20 元钱的纸币撕下 20 分之 1 再交给营业员。你必须把这张 20 元面值的人民币全部交给收银员,然后因为你只需要支付 1 元钱,收银员会找给你 19 元。
币安很聪明地对一组提款进行了批量处理,并在一次交易中将它们全部发送出去。因此,将大量的找零发送回币安的找零地址这种事情并不少见。
我使用 Blockexplorer API 提取了从 4 月 30 日到 7 月 6 日交易输出列表,并以输出量进行降序排序。
如图所示,有许多大笔交易输出都超过了 2000 比特币,这是因为找零被发送回了返回地址。
我不是说我确信这一种提款行为得到了币安公司的授权,但是超过 2000 个比特币的高额交易并非罕见,当然它们也不能被当成盗窃的证据。
针对 SYS 的 51% 攻击
我不想详细讨论这个话题,因为 SYS 开发团队已经发布了一份完整的情况报告。长话短说,他们声称这一起事件是一个奇怪的巧合,SYS 并没有被黑。
在 SYS 3.0.6 的更新中,许多矿工将自己需要的交易费用设定在高于违约率的水平之上。因此,许多收费低于这一费率的交易并不会被人知晓。
由于活跃的矿工较少,通常需要一分钟就能结清的交易往往会在内存池中等待数小时。当这种情况发生时,许多交易就会被集中到一个单独的区块中。这导致了巨大的批量输出,有些输出甚至超过 10 亿 SYS,同时还存在相当数量的未确认交易累积在一起。
在这些未经确认的交易中,SYS 团队监测到了一些企图从 SYS 价值最高的账户中提款的交易,这些价值最高的账户被怀疑是币安交易所的热钱包。
一开始,SYS 团队认为这是一种可疑的行为并通知了交易所。在那以后,他们从交易所得到确认这种交易并不是黑客攻击的产物。
*本文翻译自量化交易投资公司 HodlBot 的 Medium 文章,因为该公司使用币安交易所的 API 进行投资交易,与币安有直接利益关系,所以相关涉嫌软广的内容已做淡色处理,读者请自行斟酌内容的合理性,本文重点讨论币安API重置事件的经过和分析,不讨论去中心化和中心化交易所利弊
保卫中心化交易所
在这种时刻,你总是可以听到人们在呼唤变革。
我也认同去中心化交易所是未来的大势所趋。但在我们抨击中心化交易所之前,是否可以先问问自己:
我们是否将去中心化和区块链的不可逆想的过于理想化?
毕竟,在一些灾难性事故面前集权才是大多数组织的采用的标准解决方式,因为它快速而有效。
就拿币安来说吧,币安没有将交易上链,而是将它们记录在一个内部分类账上,因为这样做他们能够回滚所有的恶意交易。
迄今为止,币安在及早发现异常交易行为并采取预防措施方面做得很好。他们对并非自身错误的黑客攻击也承担起了责任。他们不仅支付了用户的损失,甚至将所有交易费收入用的 10% 投入了保险基金,用以防范未来的攻击与事故。
币安在 VIA 与 SYS 上避免了两次灾难性事故,这难道还不能让我们对其报以信任吗?
将这次 SYS 事件与区块链上发生的其他错误比较一下吧。
还记得造成 6000 万 ETH 损失的 DAO 事故吗? 你在其中角色如何?一些人认为代码就是法律,而另一些人则想挽回错误。这一次的争论如此激烈,不仅引发了一次硬分叉,并催生了 ETC。
我不知道最终的答案如何,但绝对不是所有的中心化交易所都应该下地狱。我们离完全抛弃中心化交易所还有很长的路要走。
针对 V 神的评论「中心化交易所应该在地狱里彻底烧毁」,Kraken 的 CEO 杰西 鲍威尔 (Jesse Powell) 做出了下述回应,他的说法也回应了我的观点:
「我可以向你保证,我们交易所已经在地狱里燃烧了。谢天谢地还没有完全烧光,但是已经处于地狱第六层的冤魂界了,这里可难熬着呢。我们这些中心化的异教徒就是那些不得不与监管者、银行、黑客和困惑的新手打交道的一群人。
我知道 Vitalik 的评论不是针对我个人的。我也梦想有一天我们能走到这一步:去中心化交易所越做越大以至于中心化交易所不再具有任何优势。但是在今天离这一点还有很长的一段路要走,我们需要经由中心化交易所才能走到梦想中的这一境界。」
想要到达彼岸就得先修桥,过了桥之后才能一把火烧掉它。
评论