一文解析 xPet 项目的安全风险

封面:xPet

最近,一款名为 xPet 的链游在推特平台上迅速走红,有人形容这个项目像 Web3“牛皮癣” 般病毒式传播,其关注人数和用户数也呈现快速增长的趋势。xPet 是一款结合游戏和社交的早期项目,在仅仅上线两周的时间就吸引了大量用户的注意力。得益于 GameFi 赛道的回暖和 xPet 的机制设计,xPet 目前存入了 2785 个 ETH(约 658 万美元),成为近期备受关注的项目。同时,与之相关的安全问题同样不可忽视,为了帮助用户了解其中的潜在风险,Beosin 安全团队今天将对 xPet 的设计机制和合约代码进行详细分析,揭示其中存在的安全隐患。

xPet  机制分析

xPet 是一款基于 Arbitrum 构建的宠物游戏,其玩法结合了 Tipcoin 与此前在 Base 链爆火的 Fren Pet,通过喂养宠物进行升级、获利。xPet 与此前类似项目的不同点在于 xPet 是以浏览器插件形式推出的,通过绑定推特进行登录,后续的游戏奖励任务也是与推特完全绑定。

官网: https://www.xpet.tech/

目前的游戏内容主要为喂养宠物、升级工厂、刷推特做任务获得宝箱。参与 xPet 的游戏用户首先需要将自己的宠物升级,因为宠物的等级需要到达 7 级才能生产 $Berry,$Berry 可以在工厂中转换成 $BPET 进行获利。而升级宠物需要支付 xPet 的两种代币中的一种:$XPET 或者 $BPET,在游戏初始时,用户需要存入 ETH 进行抵押,借出 $XPET($XPET 与 $BPET 可以进行 1:1 的转换)或者在 XPET-ETH 交易池购买 $XPET。其游戏经济系统的设计如下图所示:

source: Beosin

xPet 合约分析

xPet 的主合约为 ERC1967 可升级合约。其代理合约地址为

0x1B0D12879960A768D02bd223ef735D4231a15348,

其逻辑合约地址为

0xcD4420B70e2669De8dE9d62dd7fEa4D19b320768。

$XPET 代币合约地址为

0x00cbcf7b3d37844e44b888bc747bdd75fcf4e555$BPET

代币合约地址为

0x6daf586b7370b14163171544fca24abcc0862ac5

本次我们通过 Beosin VaaS 工具扫描该合约,结合 Beosin 安全审计专家的分析,发现 xPet 相关合约存在以下潜在的安全风险

Beosin VaaS

xPet  主合约

xPet 主合约主要负责 ETH 与 $XPET 的借贷逻辑,但主合约为可升级合约,项目方并未对该可升级合约中的逻辑合约进行开源,无法检测其逻辑合约是否有逻辑错误或潜在风险。

对于可升级合约的安全,Beosin 建议:1.  初始化合约与依赖项开发者可能会在部署合约时忘记初始化合约和依赖项,导致合约存在严重漏洞。2.  注意存储冲突升级合约时修改存储可能会导致不同版本合约之间的存储冲突,不同的变量可能指向同一存储位置,导致数据错误和资金损失。3.  注意权限开发者需对合约的升级权限进行限制,避免攻击者获得合约升级的控制权。

$XPET  代币合约

$XPET 代币合约继承 ERC20 和 AccessControl 合约,有以下潜在风险:

1.  中心化风险合约将部署者设置为管理角色,这是一个中心控制点。如果部署者的帐户遭到泄露,这将会带来巨大风险。2.  代币可访问性

由于合约将所有代币铸造给自己,因此调用 withdraw 函数和 convert 函数是将代币转移的唯一方法。这种设计集中了代币的流动。

3.   合约未对 withdraw 和 convert 两个函数设置事件建议这两个函数设置为被调用时发出事件,以便进行外部监听并追踪相关信息。

$BPET  代币合约

与 $XPET 代币合约类似,其单点风险不容忽视:1.  中心化风险

该代币合约将合约部署者设置为管理员和铸造者,这将权力集中在部署者手中,如果部署者的地址遭到泄露,这可能会带来严重的安全风险。

2.  铸造无上限

convert 函数对可铸造的代币数量没有限制。 如果部署者决定铸造过多的代币卖出获利,这将会导致代币价格暴跌。

EagleEye 对于 BPET 铸币风险提醒

3.  角色管理

合约未实现撤销或转移角色的功能。如果合约需要转移所有权或铸币者因任何原因需要被移除,这可能会成为潜在的安全问题。

其它风险

除了合约风险外,由于 xPet 需要用户在推特进行带有 “xPet” 文字的评论才能获得游戏奖励,目前推特中已出现大量包含 xpet 的无关回帖,引发众多推特博主的不满。推特的开发者协议规定禁止使用推特相关开发者产品产生垃圾信息。如果 xPet 被推特禁用,目前其游戏玩法将彻底暂停。

推特开发者协议: 

https://developer.twitter.com/en/developer-terms/policy

总结

xPet 项目的核心逻辑合约未开源,两种代币的合约中心化风险明显,对于铸造新代币未进行特别的权限限制,用户需要注意相关风险。部分合约代码可以进一步提升安全性。在此之前,市场已出现过多次 GameFi、SocialFi 的热潮,用户应当做好资金管理和项目调研,在充分了解项目的风险后理性参与

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。