分类
期权交易指南

USDT安全嗎?

然后,单击“ 注册” 按钮。

USDT安全嗎?

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

*本文原创作者:umiiii,本文属FreeBuf原创奖励计划,未经许可禁止转载

6月28日,慢雾科技发布了一条针对 USDT 的预警和漏洞分析,提醒各大交易所尽快暂停 USDT 充值功能,并自查代码是否存在该逻辑缺陷。全文如下:

#预警# #漏洞分析# 交易所在进行 USDT 充值交易确认是否成功时存在逻辑缺陷,未校验区块链上交易详情中 valid 字段值是否为 true,导致“假充值”,用户未损失任何 USDT 却成功向交易所充值了 USDT,而且这些 USDT 可以正常进行交易。

很遗憾,经过笔者的一番查找发现,网上的很多资料都倾向于描述 USDT 的资本意义,而对于技术上原理的文章却寥寥无几。于是经过一些调查,笔者发现这个漏洞实际上并不能归因于 USDT 本身,而是交易所一方的问题导致。这种漏洞起因可以说非常简单,但一旦利用成功,造成的后果却难以估算。区块链开发中,各种低级错误,诸如大小写拼错导致的智能合约漏洞也是数不胜数(如:http://www.freebuf.com/vuls/175904.html),仅以本文抛砖引玉。本文将回答以下问题:

USDT 是什么?USDT 的转账是怎么实现的?USDT 的转账/提现手续费给了谁?

1. 背景知识

ETH 在近一年来因为智能合约系统而受到了广泛地关注,大家可以用 5 分钟时间就发出自己的第一个代币,而代币的发行、转账则都依赖于智能合约,底层则是由 USDT安全嗎? ETH 公链承载。事实上,远在 ETH 诞生之前,大家就想用比特币主链做点啥。其中,一个重要的概念被提出来了:染色币。具体来说,染色币是指在普通的比特币交易中附上一些信息,借助比特币底层基础设施来记录。然而,比特币官方开发组(Core)对这种方式颇有争议,将用于存储信息的 OP_RETURN 字段从 80 字节骤然缩小到了 40 字节( https://github.com/bitcoin/bitcoin/pull/3737)。

Mastercoin基础架构

Omni Layer(原名 Mastercoin)

Omni Layer 也属于染色币,其核心思想是将 Omni Protocol 层的数据用某种方式写入比特币区块链中,目前在协议定义中有三种, Class A 、 Class B 和 Class C 。

1. Class A - 这种方法是利用了比特币每个地址本质上都是大小为 20 bytes 的二进制字符串。先将数据分割成 20 bytes 为一组的数据块,然后使用 Base58 编码作为目标地址发送即可。当然这些被发送的 UTXO 将永远丢失。使用这项技术的还有 cryptograffiti。

2. Class B - 这种方法利用了比特币的 multisig ,即多签特性。发送一笔 1 of n 的多重签名交易(即,n 个地址中,任何一个地址签名即可花费这笔 UTXO)。当前版本的 Omni USDT安全嗎? Layer 协议中最大支持 n = 3。

3. Class C - 这种方法则利用了 OP_RETURN 操作码储存数据,目前来看,基本上所有的 Omni layer 层的交易都采用了这种方式。使用这项技术的还有 CoinSpark 。

Omni Protocol 能让用户发行自己的数字资产,其中资产编号为 31 的就是被广泛使用的 USDT 。而日常中,发送 USDT 使用的交易类型是 Simple Send 。

下面是对 Simple Send 交易的定义。

xxx.png

Simple Send 是一项将 Omni Layer 层中特定的数字资产从原地址转移到目标地址的操作,注意原地址和目标地址均使用比特币的地址。

可以看到上面的交易并没有任何的余额信息,这就是说,原地址的 Omni Layer 层数字资产,由 Omni Core 自己维护一个额外的账本并校验

xx.png

Omni core 的实现是遍历交易,自己维护一个 tally map,下图所示是 Omni core 正在逐笔扫描并构建账簿。

以随机抽取的某笔交易为例(b364bea8e4a9c9aeefda048df6f71dd62dc39d07a2286340e7c83c19b7ffd895):

输入 (1) 0.00500000 BTC

源地址输出 (3) 0.00498879 BTC

地址解析失败 - (解码) 0.00000000

1FoWyxwPXuj4C6abqwhjDWdz6D4PZgYRjA 0.00000546 转账目标

1NJdUJGCJgZ4YEwthHD1skdHPsr5TxHbpq 0.00498333 找零

其 OP_RETURN 字段为 6f6d6e69000000000000001f0000001ac68eac4b

6f6d6e69 0000 0000 0000001f 0000001ac68eac4b

0000 => 交易类型:Simple Send(0)

0000001f = 31 => 货币:USDT

0000001ac68eac4b = 115000388683 = 1150.00388683 => 转账金额

与 Omni 浏览器的内容一致。

usdttx.png

raw data

而 Omni 浏览器 中的 Raw Data,则是由 Omni Core 自己根据扫描比特币区块链并重新构筑账本后输出的内容,这其中就有我们今天的主角 valid 了。

2. 漏洞分析及实操

从背景知识中我们可以看出,实际上对于余额的校验是通过客户端来进行的,但很遗憾的是,与比特币不同,Omni Layer 并没有 UTXO 机制,这也就导致了无效交易也能被广播。

穩定幣,穩定嗎?全球最大穩定幣 USDT 發行商 Tether 現金儲備縮水,或是件好事

2021年11月,美國總統金融市場工作小組 (President’s Working Group on Financial Markets, PWG) 發布了一份關於穩定幣的報告,闡述穩定幣與傳統金融監管面的差距並提出建議。該工作小組由美國財政部國內金融副部長梁內利 (Nellie Liang) 博士領導。梁內利是一位經驗豐富的經濟學家,曾在聯準會任職近 30 年。我們認為,她對傳統金融體系的熟悉與對穩定幣市場的深入理解,對於加密貨幣產業與社群是極其重要的,因為我們可以藉此了解經濟學家和監管機構,評估與看待穩定幣市場的角度。

在 PWG 的報告中,強調目前穩定幣生態系統的三個主要風險:擠兌風險、支付系統風險與經濟權力過度集中。這些風險也引發質疑聲浪,擔憂穩定幣是否能在金融危機中,維持其流動性和實際運作。報告中也指出,有必要最小化經濟權力的集中並增加彼此的協作互通。

資產配置多元化,可降低穩定幣之風險

梁內利在 2 月 15 日向參議院銀行、住房和城市事務委員會作證時表示:「從過往歷史看來,如果沒有足夠的保障措施,銀行存款和其他類型的私人資金,都有可能為消費者和金融系統帶來潛在風險。」

梁內利也提出穩定幣的擠兌風險,「當人們面臨經濟壓力或不確定性而失去信心,急於提領或出售他們手中的穩定幣時,這樣的擠兌風險就會對傳統金融體系造成衝擊。我們在 2008 年的金融危機中,就親身經歷過這樣的流動性危機。」

一旦穩定幣出現擠兌情形,穩定幣持有者大量地拋售 USDT,加密貨幣交易所就必須向 USDT 發行商 Tether 大規模贖回美金。

「高品質」流動性資產

Tether 最需要的是擁有「高品質」流動性資產,以應對可能導致擠兌的兩種情況。一是在全球金融危機期間,人們急於將手中資產變現,以保持更高的流動性來渡過難關;二是因為不信任 Tether 這家公司,而大規模地擠兌其發行之穩定幣 USDT 的情形。

PWG 的報告闡明,穩定幣應該由 「高品質的流動資產 」(high-quality liquid assets) 來支持與美金一比一掛鉤。被問及穩定幣為完全儲備制度,對比美聯儲的部分準備金制度,應該如何看待時,梁內利表示:「舉例來說,貨幣市場基金是 100% 完全儲備,這就是高品質的資產,出現擠兌的可能性非常有限。 她也提到,若有存款保險、最後貸款人制度或貼現窗口機制的支持,再結合妥善的資產監管,部分準備金制度也可以有效防止擠兌。

2007 至 2008 年的環球金融危機,就暴露出傳統銀行體系的脆弱,包括先前被認為極為安全的商業銀行存款。2007年,世界開始面臨次貸危機,隔年,美國投資銀行貝爾斯登 (Bear Stearns) 因為不動產抵押貸款證券過度曝險,面臨嚴重的流動性問題而向聯準會求助。與貝爾斯登一樣,雷曼兄弟 (Lehman Brothers) 也因次貸債券而遭受歷史上最大的破產。正因這些公司的資金過度槓桿,導致他們在不斷惡化的金融環境下,完全失去控制。

同樣是在這樣的金融危機之下,中本聰於 2008 年 10 月 31 日發表了具有歷史性意義的比特幣白皮書。

英國《泰晤士報》 2009 年 1 月 3 日曾報導:「英國財政大臣被迫考慮第二次出手拯救銀行」。這句話被中本聰寫在了比特幣的創世區塊上,警告所有人傳統銀行系統的脆弱性和不穩定性。

如今,情勢已經越來越明朗,像 Tether 這樣的穩定幣發行商必須要依據現今的經濟情勢,更謹慎且靈活地分配其資產儲備的比重。觀察短期和長期的經濟前景,以確保任何穩定幣發行者在不同的市場條件下,都能履行其發行之數位貨幣的功能與價值。

結論

如前文所述,如果 Tether 繼續現在的多元資產配置,不再單純持有現金,將可以在經濟承壓之際降低風險,繼續扮演加密貨幣市場中最穩定的船錨,這對於建立在 USDT 之上的眾多 DeFi 項目而言,尤其重要。

我們正站在歷史的風口浪尖,不久的將來我們會看見更多清楚的法律規範,對發行穩定幣的公司有更明確的監管措施。在一場美國參議院委員會聽證會的開場宣言中,共和黨參議員帕特·圖米 (Pat Toomey) 對PWG的報告發表評論:「與其用既有框架創造所謂的『靈活性』,任由銀行監管機構掌握自由裁量權,國會應該扛起責任來建置新的監管方法。」

Bithumb评测

Bithumb评测

Bithumb评测

然后,单击“ 注册” 按钮。

这是注册过程的一部分,您需要提供一些基本信息。您会注意到,与某些交易所不同,Bithumb要求提供更多详细信息,但是,他们需要这样做以确保不违反韩国法规。

Bithumb评测

您需要输入您的电子邮件地址,然后单击“ 检查重复项”。 您还需要在方框中打勾,以使他们知道您不是机器人!

接下来,您需要输入您的国籍。您还需要输入手机号码。输入正确的号码非常重要,因为您需要输入正确的号码才能完成注册。

Bithumb评测

输入手机号码后,点击 SMS Request。然后将向您发送一个6位数的密码,您需要在手机验证号码框中输入该 密码

接下来,您需要输入您的个人信息。这包括您的全名,出生日期性别。 您还需要输入完整的家庭住址。

Bithumb评测

Bithumb评测


您还需要勾选两个条款和条件框。最好阅读这些内容,以确保您了解Bithumb的条款。

Bithumb评测

对输入的所有信息满意后,单击“ 注册” 按钮。确认电子邮件将发送给您,您需要在到达时单击确认电子邮件。

现在,您被分类为1级,这意味着您可以立即进行交易而无需做任何进一步的事情。但是,如果您要进行大量交易,则需要将帐户升级到下一个级别。

谁应该使用Bithumb?

您可能还记得我之前提到的Bithumb平台非常适合初学者。该网站设计非常清晰,使用简单的颜色。一切也都贴上了标签,交易非常简单。

Bithumb评测

更好的是,您还可以使用虚拟信用进行操作,这为您提供了绝佳的机会,在使用真实资金之前对其进行了测试。但是,在使用虚拟模式之前,您需要先开设一个帐户。

另一方面,Bithumb平台也适合专业交易者!您可以使用许多不同的交易工具,例如图表分析和烛台。此外,由于Bithumb的交易量是世界上最大的,所以对于那些想进行大量交易的人来说,总是有良好的流动性。

还有一个很酷的功能叫做“汇款”,使人们可以向国际汇款

在客户支持方面,Bithumb交易所具有24/7的实时聊天功能,以及电话支持。这意味着,如果您的帐户有任何问题,可以随时获得帮助。

Bithumb评测

Bithumb评测:Bithumb安全吗?

在将来之不易的现金存入第三方交易所之前,始终必须首先了解它们的安全性,这一点始终很重要 。

那么,Bithumb安全吗?首先,韩国的加密货币监管略强,因此交易所有责任确保客户资金安全

您可能已经从上述注册说明中注意到,您需要提供完整的个人信息。这样可以确保每人只能开设一个帐户,并且还可以限制匿名交易

我还提到,您不仅需要提供您的手机号码,而且还要确认它。此外,Bithumb允许您设置两因素身份验证。这意味着,每次登录或尝试提取资金时,都需要输入发送到手机的号码。

Bithumb黑客?!

2017年6月,据报道Bithumb服务器遭到黑客攻击,造成约1000亿韩元的损失。当时,这笔费用约为9400万美元。据报道,黑客入侵了31,000个个人账户进,这意味着很多人失去了他们的钱。

作为回应,Bithumb团队表示,他们将退还所有受影响的人,最高可达900美元。尽管自从(至少我们知道)以来,该交易所没有遭受任何黑客攻击,但令人十分担忧的是,黑客能够破坏其安全控制。

这应该强烈提醒您,您应该只在交易所内保留少量加密货币,因为您永远不能百分百确定它们不会被黑客入侵。

交易所最近遇到的另一个问题是韩国当局的深入调查。其中包括国家税务部门,金融情报部门以及金融监管机构。

这些机构正在调查Bithumb是否在依法行事,以及最初报道调查消息时,各种加密货币价格都在下跌。然而,好消息是,在2018年6月,据报道该交易所被清除了任何不当行为

USDT安全嗎?

DeFi 很火、Compound 很热,业内都仿佛打入鸡血一般地参与到这个生态,创新、革命,终结中心化的这一天似乎马上就能到来。预言机、智能合约钱包、去中心 化借贷、去中心化交易、去中心.

DeFi 很火、Compound 很热,业内都仿佛打入鸡血一般地参与到这个生态,创新、革命,终结中心化的这一天似乎马上就能到来。

预言机、智能合约钱包、去中心化借贷、去中心化交易、去中心化 blah blah.

很多区块链行业内的从业者们开始乐观地认为 DeFi 的黄金大厦已经基本完工。

不过,在 DeFi 晴朗的天空上,却还飘忽着几朵令人不安的乌云。

这两次的事件,在业内引起了轩然大波,尤其是 Lendf.me 的被盗,更是引发了更广泛地讨论:

“难道 DeFi 了之后,丢币就全得是用户承担了吗?”

幸运的是,因为盗取 Lendf.me 的人只是一名普通的程序员,并不是职业的黑客——他并不懂得如何更好的隐匿自己的行踪。因其泄露了 IP,并进一步被定位,最终这位程序员只能主动退还资产以避免受到法律上的惩罚。

在这件事情上,Lendf.me 的项目方和用户可以说是极其幸运的,他们躲过了巨额资产损失及冗长的法律诉讼的风险,从行业的角度上讲,找回了肯定是好事。但好事归好事,笼罩在 DeFi 生态上的乌云仍未消散,DeFi USDT安全嗎? 的未来还安全吗?

不过我们今天要跟您聊的是另一朵乌云,从安全的角度上讲,另一朵乌云的复杂度要低很多,但其影响却更广泛——几乎影响到了每一个参与 DeFi 的用户。

其影响程度明明很严重,但却一直被行业内的用户和从业者们所忽视。这朵乌云如达摩克利斯之剑,悬于 DeFi 的之顶,无论你是否无视它,它一直都在那里,静静地看着你,等待着机会将你一口吞啮。

作为比特派安全实验室成立之后的第一篇文章,我们将系统的把这朵乌云给大家讲清楚,并且还会包括完整的智能合约案例来给大家演示这朵乌云对于普通用户可能造成的资产安全风险。相信通过本文,用户们就能清楚的意识到,当你去参与以太坊的 DeFi 生态时,很多你不经意地操作所带来的风险可能没那么简单,这其中的风险,可以大到没有上限。

答案很简单,风险只是你存入的1万 USDT。剩下的 99 万都在你的钱包里,无论是黑客还是交易所老板都拿这些钱没办法,他们能偷走的只有那1万。

好了,现在相同的场景放到 DeFi 里:

还是假设你有100万 USDT,现在你决定往一个去中心化的 DeFi 合约里存1万,如果出了问题(同样是 DeFi 智能合约/项目方被黑客攻击或者是 DeFi 老板跑路),你的风险上限是多少?

还是1万吗?错!你现在的风险上限很可能变成了100万 USDT,即便剩下的99万 USDT 明明还是安安静静地躺在你的钱包里,甚至你可以很小心地把这些 USDT 保管在绝不触网、绝对安全的硬件冷钱包里也一样,你的百万资产极有可能一瞬间就会灰飞烟灭,BOOM!

这笔交易很简单,其实就是【0x3693】 这个地址授权给【Uniswap V2: Router 2】合约无限动用自己全部 USDT 的权力。

在完成了这个授权操作后,Uniswap 就可以很方便地操作你的资产了,后续的调用少了,访问次数也少了。有的合约甚至还可以帮你兑换以太矿工费,也就是说,让你在没有 ETH 做矿工费的情况下,仍然可以调用这个合约。

其实跟合约授权相关的安全性跟是否开源以及有没有经过第三方审计关系不大,现在 DeFi 生态的大部分(基本上全部)复杂的智能合约,都是可以升级代码的,也就是说,今天的代码可能的确不能转走你的币,但明天 Owner 作恶更新一下代码,就能把你的币一扫而空了。

(这里要特别说明一下,合约代码升级之后合约地址会发生变化,因此如果 Owner 想要转走你的币的话,还需要你再次进行授权,但考虑到各个 DeFi 项目以及各个钱包软件里对于授权操作都是一键完成的,因此,无论合约 Owner 改了几版代码,用户其实都不会关注到。因此,对于普通用户来说还是面临着同样的风险。)

在这个样例中,我们模拟了一个智能合约漏洞的情况,假设合约开发者不小心将 ExchangeDemo 合约的 USDT安全嗎? transfer 方法访问控制权限设置成了 public。在这种情况下,只要你对该合约进行了授权操作,哪怕你没有对该合约进行过任何转账操作,别人都能直接转走你钱包里的全部 Token,就这么简单。

在这个例子中,合约开发者升级了 ExchangeDemo 合约,升级之前的 claim 方法本来只能支取合约上的 token 的余额,但开发者将其修改成可以转走用户授权的 token,也就是更新之后,用户再进行授权操作,开发者就可以轻松的调用 claim 方法转走用户钱包里的币了,就这么简单。

通过 ExchangeDemo V1 和 V2 两个版本的智能合约样例我们可以看出,因为滥用授权,即便用户没有或者只向合约转入了很少的资产,如果合约有授权转账相关的漏洞,则所有授权过的用户钱包内的资产都将面临风险。即便是没有漏洞,合约开发者也具备更新代码后拿走授权用户钱包内全部资产的权力。

因此,合约本身至少会有相关接口来进行转币操作,当然这个转币操作都是功能性的,比如说为了抵押的目的向合约地址存入5万USDT,或者为了兑换的目的向合约地址存入1千USDT,好了,现在的问题是,既然合约本身就有这类的接口,合约 Owner 也就有可能(这里需要看合约代码的写法)未经你的许可继续使用相同调用让你往合约里存入更多的资产,也就是说,即便不升级代码或者没有相关漏洞,这种可能性也是存在的,尤其是那种可以替你代付了以太矿工费的合约,说明连调用的发起审核都可能是由合约 Owner 来负责的。

也就是说,如果一个智能合约在你授权后能够有一个方法将你的一千元转入合约地址,自然也可以用相同的方法转入一万、十万、一百万,而转入合约地址或者其它相关地址之后,合约 Owner 其实就有能力拿走这些资产了。

这里我们要说明一下,像 0x 这类的合约在这一点上是做了一些防范的,他们在调用接口时验证了用户的签名,也就是说至少能确保调用操作是用户发起的。但这种其实就很依赖于合约代码的编写方法了,合约代码里可以验证用户签名,也可以验证合约 Owner 的签名,当然还可以啥都不验证,合约方法也可以是由用户调用或者是由合约 Owner 调用,不同的写法会把你钱包里币的控制权给了不同的角色,听着是不是很吓人呢?

估计又有人要说了,如果智能合约的 Owner 不作恶,不就没这个问题了吗?

另外,更为重要的是,你本来以为合约 Owner 对于你的资产的影响仅仅局限于你参与到该智能合约的部分,比如说你为了交易而转给 dex、为了理财而转给去中心化借贷合约的币,你以为合约 Owner 只能影响到你存进去的那部分资产,现在就应该明白了,合约 Owner 能影响到的不止是这一部分,他还能影响你钱包里的剩余资产,无论你的钱包是热的还是冷的,没关系,都可以是我的。

接着说,即便是我们假设合约 Owner 是道德上极其完美的人,但随着智能合约越来越复杂,众所周知出现漏洞的风险也就越来越高,在之前的理解里,大部分人可能认为的都是如果出现漏洞,主要的资产风险还是合约内的,攻击者最多也就是把你存在合约里的币都给拿走。但本文中的样例告诉了你这么一个事实,如果合约漏洞恰好是跟授权转账相关的,那风险就扩散了,所有曾经给该合约授权过的地址都会被一扫而空,只要攻击者扫描一下都有那些地址进行过授权操作,然后挨个把这些地址上的币都给转走就好了。

更重要的是,这还给了智能合约的开发者们如何安全的保管 Owner key 提出了更高的要求,如果哪天你的 Owner key 丢了,那完蛋的可不仅仅是存在合约里的币,完蛋的是所有授权用户钱包里的全部资产,这又有谁能承担呢?

看到这里,你是不是就明白为什么本文的标题是“以太坊 DeFi 生态当前最大的安全隐患”了吧?

由于以太坊生态里对于授权的滥用已经到了非常严重的程度,我们甚至可以说几乎所有的 DeFi 合约都在毫无节制的索取无限授权,在这种情况下,出于小白鼠的目的实验各种 DeFi 项目的行为本身无可厚非,但如果告诉你,所冒的风险是你的全部资产,而并非仅仅是拿来参与 DeFi 的那点儿币,你又该作何感想呢?

上述列表中的前面几个 Compound、Uniswap、Kyber 正是当前 DeFi 世界中炽手可热的明星项目,但这些项目却无一例外的选择了让用户无限授权以获得用户资产的完全控制权,也就是说任何用户只要是使用过上述项目,你的钱包里的币就有可能随时会面临本文中所提到的风险,这其实是很遗憾的一件事情。

上述合约都应调整自己的授权代码,将其改为按需授权,比如说,你只需要兑换 1000 USDT,那就只授权 1000 USDT,额外的所要授权都是越权行为。

使用这些合约的用户也应该改变自己的 DeFi 合约使用行为,应该将不参与 DeFi 的币放到另一个不会授权给任何应用的地址,以保护自己的资产安全。

以比特派钱包中很常用的批量转账功能为例,我们的做法是有限授权,也就是说,如果你需要将 100个USDT 转到 50个地址上,比特派只会授权 100个USDT,不会产生任何额外的授权。

再比如说,比特派的代付 USDT 矿工费功能,我们就完全没有使用合约授权,哪怕明明是使用授权方式实现起来更简单,我们都没这么去做,其实就是因为这个道理,项目方应该以用户的权益放在首位,任何徒增用户风险的行为都应该被抵制。

考虑到这朵乌云之下的安全,普通用户参与 DeFi 应该采取哪些防范措施呢?

2、使用多个以太坊地址,将存币地址和参与 DeFi 地址分开,把仅用于 DeFi 活动的币放到 DeFi 地址中,这样即便是乌云压顶了,存币地址里的币还是安全的;