• 简体版 | 繁體版
  • 联系我们
  • 加入我们
  • 关于我们
  •  
  • 首页
  • 快讯
  • 价值号
  • 视频
  • 专题
  • 入驻价值号
  • 碳链APP
    微信公众号

    扫码下载App

  • 登录
  • 微信公众号

    微信公众号

导航
  • 首页
  • 快讯
  • 区块链+
  • 价值号
  • 视频
  • 专题
  • DeFi优选
碳链价值APP
专注服务于金融科技和区块链
立即打开

成都链安:DeFi浪潮下「狠角色」DEX够安全吗?

成都链安成都链安  •  2022-03-07
DEX够安全吗?

如今,随着人们对 DeFi 的兴趣日益浓厚,DEX(即去中心化交易所)风靡一时。它们解决了常见的 CEX (即中心化交易所)问题,那我们也会问,DEX够安全吗?

在上一篇说明了代币本身的安全问题后(纯干货分享(一) | DEFI安全问题之基础篇),现在来聊聊DEX在兑换代币时可能产生的安全问题。目前DEX主要面临的安全问题大致可分成两类:

(1)DEX项目本身存在的安全问题。

(2)作为第三方协议,与其他DEFI项目交互时产生的安全问题。

本文将对第一类安全问题进行介绍。

Part.1

-Decentralized Exchange

重入漏洞

重入漏洞在上一篇我们也提到过,它属于需要防范的经典漏洞。与普通代币的重入相比,Uniswap的重入漏洞的主要表现形式为:攻击者在一笔兑换交易中利用Uniswap未及时更新价格前发起二次兑换,由于此时Uniswap未更新价格,使得二次兑换可兑出的代币数量比正常兑换的多。此外,在Uniswap的重入攻击中,攻击者利用单笔交易可能只能获得微小的收益,因此攻击者往往倾向于使用闪电贷或者循环套利扩大战果。

以imBTC攻击事件为例,该事件是由于Uniswap V1在调用ERC777系列代币时,未充分考虑合约回调的情况。

具体表现为:攻击者使用imBTC代币兑换ETH时(如图1),合约先通过self.getInputPrice函数计算正确的ETH数额并将ETH发送到目标地址,然后调用self.token.transferFrom函数时,会调用imBTC合约的_callTokensToSend函数(如图2),而_callTokensToSend函数会调用用户指定存储imBTC代币的合约。因此,如果攻击者部署存储合约,并改写其中TokensToSend函数,那么当兑换代币时,pair(两种代币组成的交易对)合约调用攻击者部署的存储合约,就可以回调pair进行二次兑换,而二次兑换时pair合约账本还未更新,使得计算的ETH数额比正常兑换要多,以此来获利。

图1 Uniswap的tokenToEthInput函数图2 imBTC的transferFrom函数图3 imBTC的__callTokensToSend函数

详细攻击流程如下:

图4 ETH-imBTC事件流程图

那么,为什么在第二次调用tokenToEthSwapInput函数兑换代币时,发送的ETH会比正常兑换要多呢?我们可以用公式来还原可兑换代币数量的代码逻辑:

首先,正常兑换下,getInputPrice函数计算可兑换的ETH数量为:

且正常第二次可兑换的ETH数量为:

但重入后第二次可兑换的ETH数量为:

由此可知,在重入后第二次兑换中只有ETH的储备量减少,而imBTC储备量未增加。这样在分母不增加的情况下,导致了等量的imBTC可以兑换更多的ETH。

针对此类安全问题,成都链安建议:

当合约涉及到资产转移时,使用“检查-生效-交互”模式来处理逻辑,对关键的业务操作可以使用OpenZeppelin官方的ReentrancyGuard进行修饰。

Part.2

-Decentralized Exchange

swap函数未对K值进行校验

Uniswap的核心是常量乘积模型K=x*y,其中的K值是该pair合约持有代币数量的乘积,且要求之后的每一笔交易完成后K值必须增加(考虑手续费)。因此如果不进行K值校验,将很容易成为攻击点。

图5 Uniswap的价格波动

以Impossible Finance事件为例,该项目是Uniswap的仿盘,实现了两种兑换代币的函数:cheapSwap和swap。其中cheapSwap函数少了k值校验(如图6),但是项目方知道缺少K值校验的后果,专门为cheapSwap函数增加了onlyIFRouter做修饰,来限制cheapSwap函数只能被指定的Router合约调用。

图6 合约未检查k值的cheapSwap函数

正常情况下,当用户使用Router合约兑换代币时,首先会使用getAmountsOut函数来计算正确的代币数量amounts;然后调用safeTransferFrom将用户的兑换消耗代币转入目标pair合约;最后,通过内部调用_swap函数来执行cheapSwap函数将兑换代币转至目标地址。

图7 Router01合约的swapExactTokensForTokens函数

但是,由于cheapSwap函数缺少了K值检验,如果攻击者部署恶意代币合约,在Router合约调用safeTransferFrom函数时,回调正常的pair合约进行同种兑换,由于,回调后的兑换使用的amounts仍是未更新之前的数据,已不符合改变账本状态之后的校验,那么攻击会导致以错误的价格兑换出目标代币,以此获利。

图8 合约进行k值校验的Swap函数

该事件的具体攻击步骤如下:

1. 在准备阶段攻击者部署了AAA代币合约,并使用闪电贷借来1000WBNB,兑换65140个项目方的IF代币。

2. 使用其中一半的IF代币(32570个)与攻击者自己部署的AAA代币构建IF-AAA交易池。

3. 执行AAA-IF-BUSD路径的代币兑换,且当Router合约调用AAA代币合约的transferFrom函数时会执行攻击者的恶意代码,重入至IF-BUSD的pair合约,并将另一半IF代币正常兑换出221897个BUSD。

4. 回归到AAA-IF-BUSD路径的兑换,将之前计算的amounts值传入_Swap函数中执行这笔兑换,用一半的IF又兑换了2521897个BUSBD。

5. 归还闪电贷,完成攻击。

图9 事件流程图

针对此类安全问题,成都链安建议:

在关键的兑换函数中必须做k值校验,不要为了节省gas和代码量就将K值校验和安全验证依赖外部验证,做到自身功能完善。

Part.3

-Decentralized Exchange

通缩代币未设置pair为分红例外

通缩代币在交易时会产生额外的分红与手续费。如果交易合约中包含了此类代币,且没有进行特殊处理,那么,就可能导致交易对合约记录的代币储量与实际的代币可用余额不一致。

以XSquid事件为例,XSquid是一种通缩代币,未将其与WHT代币组成的pair合约地址添加奖励例外列表,造成了pair合约除了正常代币兑换和流动性存储外,还存有多余的XSquid分红奖励代币。因此,攻击者就可以调用Swap函数将pair合约多余的XSquid代币转换为WHT提取(如图11),或者通过skim函数将多余的XSquid代币直接提取(如图12)。

图10 XSquid交易对合约未添加奖励例外

图11 Swap函数可以兑换多余的WHT代币

图12 skim函数可以提取大于reserve的部分

针对此类安全问题,成都链安建议:

DEX在添加通缩分红型代币时多注意手续费以及分红的处理情况。在创建通缩分红型代币交易对时,可以添加奖励例外来避免此类代币的分红问题。

此外,以下两类不属于DEX本身的安全问题,但是被项目方借助了DEX的特性实施诈骗,所以将其写在文章末尾。

PART.1

诈骗交易池

这类问题主要是指项目方在自己发行的代币里留有后门,创建与主流代币的交易池,诱使投资者使用手里存在价值的代币买入项目方代币,并且不断拉盘对投资者进行投资欺骗。

以下面的TRTC项目方为例,项目方创建了ETH-TRTC的交易池。但是在TRTC的代币合约对transferFrom函数做了相关限制,要求代币的转出方为owner(管理员)或者为Uniswap。因此对于投资者,仅可以通过Uniswap买入TRTC代币,而不能卖出TRTC代币。最后由项目方把投资者投入的ETH提走跑路,给投资者带来了巨大的损失。

图13 TRTC合约的transfer函数

图14 TRTC合约的ensure修饰

图15 TRTC合约的transferFrom函数

PART.2

项目方Rug Pull

Rug Pull是指项目方卷走投资者资金跑路的行为,目前已成为DeFi生态系统的最大骗局类型,项目方刻意制造代币价格暴涨的假象、许诺为提供流动性的投资者提供高回报等方式来大量聚集资金,一旦时机成熟就移除池子里的流动性或将代币卷走。这样的例子在DeFi屡见不鲜,AnubisDAO、Meerkat Finance、TurtleDEX、Squid token鱿鱼币等都是在卷款跑路之后,注销网站和社交媒体销声匿迹,导致投资者承担了巨大的损失。

写在最后

成都链安建议项目方使用锁仓和多重签名来控制代币流动性,避免出现砸盘跑路的情况。投资者不要被天上掉馅饼的事情冲昏头脑,防范虚假宣传。

展开全文
打开碳链价值APP  查看更多精彩资讯
声明:本文内容为作者独立观点,不代表碳链价值立场,且不构成任何投资理财建议。
0 0
DEXDeFi

扫一扫,分享到微信

相关推荐

现实资产代币化,是DeFi进入下一个增量时代的门户吗? 深度

现实资产代币化,是DeFi进入下一个增量时代的门户吗?

深潮TechFlow 2022-07-04 深度
DeFi
代币化现实世界资产(Tokenized Real-World Assets ——RWAs)是怎样将DeFi规模扩展到全球水平?这篇文章涵盖了我对当前机遇和挑战的看法。
FATF 最新报告解读:哪些领域将成为下半年的监管关注重点? 深度

FATF 最新报告解读:哪些领域将成为下半年的监管关注重点?

白泽研究院 2022-07-03 深度
DeFi
FATF 的新报告指出了将在 2022 年下半年及以后成为监管议程重中之重的关键问题
去中心化交易所的无限战争 深度

去中心化交易所的无限战争

SevenUp DAO 2022-07-01 深度
DEX
在极低的迁移成本下 DEX 基本不具备 Web2 互联网产品的用户网络效应,所以即使对 DEX 赛道的头部选手而言,也是一场是有始无终的「无限战争」。

碳链快讯更多 ›

2022-07-04

CoinShares宣布收购拿破仑资产管理公司

2022-07-04

数字银行YAP完成4100万美元融资,Aljazira Capital等参投

2022-07-04

加密借贷平台Vauld暂停平台提款,或将进行重组

2022-07-04

NFT巨鲸在NFTfi抵押147个CryptoPunks,共贷出约316万美元

2022-07-04

​彭博社:Curve 3pool中USDT流动性占比为65%,投资者对Tether仍持谨慎态度

2022-07-04

欧洲央行计划提高加密货币规则的协调性要求

2022-07-04

QQ音乐测试版本上线虚拟社区“Music Zone”

2022-07-04

欧易OKX推出大宗组合交易平台:无滑点、多腿组合交易

2022-07-04

East Ventures新基金完成5.5亿美元募资,将专注金融科技和Web3领域

2022-07-04

吉利成立区块链科技公司,注册资本1亿元

2022-07-04

俄罗斯加密媒体bits media遭该国监管机构封锁

2022-07-04

特斯拉或将在第二季度财报中报告4.4亿美元的比特币减值损失

2022-07-04

魏鹏举:金融化并非是数字藏品真正的问题,传统的文化资产、艺术资产就可以金融化

2022-07-04

Voyager拥有的加密资产及现金约16.5亿美元,对三箭资本的索赔超6.5亿美元

2022-07-04

外媒:Tether卖空者数量正在增加

2022-07-04

在中国互联网监管机构注册的区块链服务总数达到1821项

2022-07-04

中非共和国正式推出国家加密货币Sango

2022-07-04

接陕西省工商局通知,数藏平台“赛博艺术藏品”暂关闭市场

2022-07-03

美图:上半年净亏损同比增加超过99%,主要因为已购买加密货币减值

2022-07-03

传中国邮政测试数字藏品频道

2022-07-03

可口可乐在Polygon网络上推出骄傲系列NFT

2022-07-03

分析师:比特币或面临新一轮下跌,将短暂回调至1.6万美元后反弹

2022-07-03

全聚德将与中青报联合发行数字藏品

2022-07-03

全国首笔跨境电商数字人民币普惠贷款落地苏州

2022-07-03

以太坊转账成本持续下降,Gas费用触及19个月低点

2022-07-03

Celsius裁员约150人,占总员工数的四分之一

2022-07-03

韩国检察机关将对Terra崩盘事件开启第二轮全面调查

2022-07-03

MicroStrategy当前BTC持仓价值较三个月前减少58%

2022-07-03

经济部长辞职后阿根廷投资者寻求加密货币对冲,USDT法币成交量飙升

2022-07-03

Ripple报告:区块链将对企业产生重大影响

2022-07-03

Ripple围绕CBDC互操作性和金融普惠性推出黑客马拉松,奖金达19.7万美元

2022-07-03

三箭旗下场外交易平台TPS Capital仍在运行,但其复杂所有权结构或加大债权人追款难度

2022-07-02

Peter Schiff寻求出售旗下Euro Pacific International Bank

2022-07-02

英伟达GPU二手市场价格下跌50%,购买量同步下降

2022-07-02

FatMan:新加坡登记记录显示,三箭资本控制着5处高端房产

2022-07-02

Custodia Bank CEO:行业不良行为和监管机构不作为导致加密货币崩溃

2022-07-02

Cosmos开发公司Ignite裁员超50%

2022-07-02

香港回归25周年系列策划《风继续吹》数字藏品正式上线

2022-07-02

哥伦比亚国家土地局集成基于Ripple XPRL区块链的数字土地注册系统

2022-07-02

6月以太坊链上NFT销售额仅为6.8亿美元,达2021年8月以来低点

2022-07-02

三箭资本已向纽约法院申请破产保护

2022-07-02

BlockFi与FTX US达成总价值6.8亿美元的信贷额度和收购选择权协议

2022-07-02

Meta将于9月关闭其Novi加密钱包项目试点,并建议用户尽快提款

2022-07-02

Voyager Digital宣布暂停交易、存取款及忠诚度奖励

2022-07-02

Ripple完成7亿枚XRP锁定,价值超2.1亿美元

2022-07-02

美联储戴利:支持美联储7月再加息75个基点,预计联邦基金利率到2022年年底将被提升至3.1%

2022-07-01

火币创始人李林寻求出售其在火币中的股份

2022-07-01

云创作工具Echo3D完成550万美元融资,Qualcomm Ventures领投

2022-07-01

以太坊扩容项目AltLayer完成720万美元种子轮融资,Polychain Capital等领投

2022-07-01

全球500位超级富豪上半年财富总计缩水1.4万亿美元,创史上最大跌幅

推荐文章

  • 从监管视角解析NFT如何赋能实体产业

    2022-06-02

  • 来自 a16z 联合创始人的加密课程:Web3 应该从 Web1 学到些什么?

    2022-06-02

  • Consensys:代币设计和发行的 30 个注意事项

    2022-06-01

  • 字节跳动天使投资人Tim Gong:Web3的未来架构需要支持基于海量个人信息的数字资产交易

    2022-06-01

  • 深度研究:如何设计代币经济学框架?

    2022-05-31

价值号更多 ›

吉时通信
吉时通信
文章: 133
  • 以太坊合并:如何影响显卡和区块链行业?
  • 以太坊合并的底层观察:区块结构和MEV
  • 宏观视角解析LUNA和UST崩盘:稳定币的路在何方?
链集市ChainMarket
链集市ChainMarket
文章: 177
  • 区块链产业周刊丨全球区块链商业委员会与全球数字金融合并;最高人民法院发布区块链司法应用相关意见;蚂蚁链区块链应用专利获国家授权
  • 区块链将如何帮助我们解决气候问题?
  • 区块链产业周刊丨国家级数据云平台“人民云”正式上线;徐工机械成立包含区块链技术的国重实验室;欧盟推进数字欧元发展阶段
Unitimes
Unitimes
文章: 380
  • 深度研究:如何设计代币经济学框架?
  • 创作者经济:正统性危机之下的变革之路
  • 哈佛商业评论:Web3的机遇和挑战
换一批

热门标签

新基建 比特币 以太坊 矿业 DeFi 共识对话 区块链+ 研报 美联储 央行数字货币 无限QE 加密衍生品 AI 云计算 大数据 5G 政策 交易所 稳定币 电子支付 Libra 算力产业 联盟链 公链 区块链 加密货币 Nervos Cosmos EOS STO

邮件订阅

及时、全面、专业、准确的资讯与数据,致力于为区块链爱好者以及数字货币投资者提供最好的服务。

App内打开

邮件订阅

及时、全面、专业、准确的资讯与数据,致力于为区块链爱好者以及数字货币投资者提供最好的服务。

Moshou

碳链价值是集资讯、行情、数据于一身的区块链信息服务平台,我们追求及时、全面、专业、精确的资讯与数据,致力于为区块链创新者和数字货币投资者提供优质的服务。

关于我们 加入我们 联系我们 隐私条款
微信公众号

扫一扫关注微信公众号

Copyright © 2018-2020 碳链价值 京ICP备18046423号
下载碳链App

下载碳链App

微信公众号

微信公众号

微信公众号

微信公众号

打赏文章作者

支付宝打赏二维码 支付宝扫一扫打赏
微信打赏二维码 微信扫一扫打赏

# 热门搜索 #

CBDC 比特币 DeFi 以太坊 区块链