木星链 木星链
Ctrl+D收藏木星链
首页 > FTT > 正文

HOR:分析:Jet Protocol 任意提款漏洞

作者:

时间:1900/1/1 0:00:00

By:Johan@慢雾安全团队

据JetProtocol官方博客披露,他们近期修复了一个赏金漏洞,这个漏洞会导致恶意用户可以提取任意用户的存款资金,慢雾安全团队对此漏洞进行了简要分析,并将分析结果分享如下。

相关信息

JetProtocol是运行在Solana上的一个借贷市场,用户可将账号里的代币存入金库,赚取年化收益,同时也可以按一定的比例借出另一种代币。在这个过程中合约会给用户一个note凭证,作为用户未来的提款凭证,用我们熟悉的字眼来说就是LP,而本次漏洞发生的原因也和这个LP的设计有关。

我们知道和以太坊合约相比,Solana合约没有状态的概念,取而代之的是账号机制,合约数据都存储在相关联的账号中,这种机制极大提升了Solana的区块链性能,但也给合约编写带来了一些困难,最大的困难就是需要对输入的账号进行全面的验证。JetProtocol在开发时使用了Anchor框架进行开发,Anchor是由Solana上的知名项目Serum团队开发的,可以精简很多账号验证及跨合约调用逻辑。

俄罗斯央行行长:不会强迫公民使用数字卢布:金色财经报道,俄罗斯央行行长Elvira Nabiullina表示,不会强迫公民使用数字卢布。这绝对是自愿使用,对人们来说是一个额外的机会。然而,尽管其使用可能是自愿的,但数字卢布的隐私保证仍然存在一些问题。该法案明确避免提及“隐私”一词,这与数字欧元法律草案不同,该法案将其包含在21个不同的页面中。

俄罗斯工商会会长谢尔盖·卡特林表示,过去,我们认为数字卢布可以赋予俄罗斯央行重大权力,包括监控人们活动的能力。数字货币计算具有最大程度的透明度,也就是说,追踪交易将变得更加容易。[2023/7/28 16:04:37]

Anchor是如何工作的呢?我们可以从JetProtocol的一段代码说起:

programs/jet/src/instructions/init_deposit_account.rs

Bitfinex分析:市场仍然复杂且充满活力,但显示出看涨迹象:金色财经报道,Bitfinex Alpha发布文章称,比特币市场动态看起来很复杂,在经历了一段时间的价格横盘走势之后,最近比特币波动性上升,正在描绘出当前市场格局的多方面图景。?链上数据显示,尽管交易薄弱、市场流动性低,甚至在美国证券交易委员会对币安和Coinbase采取法律行动之后,HODLers继续以每月42,200 BTC的稳定速度积累,凸显出需求弹性。

虽然贝莱德和另外两家公司提交比特币现货ETF申请后,比特币波动性飙升,波动性指标仍然较低。BTC期权市场的实际波动率目前约为2%,这是自2021年牛市以来的最低水平。但隐含波动率仅略有增加。\t

总的来说,市场仍然复杂且充满活力,显示出看涨迹象,但仍受到监管机构和市场参与者的严格审查。[2023/6/27 22:02:37]

这里的deposit_account账号就是用于存储LP代币数据的账号,用户在首次使用时,需要调用合约生成该账号,并支付一定的存储费用。

近24小时有4,887.27枚BTC流出交易所钱包:金色财经报道,数据显示,近24小时有4,887.27枚BTC流出交易所钱包,近7天有2,256.1枚BTC流出交易所钱包,近30天有28,965.47枚BTC流出交易所钱包。截至发稿时,交易所钱包余额合计为1,885,980.25枚BTC。[2023/4/16 14:06:23]

而这里的?#?宏定义限定了这个账号的生成规则:

规则1:#

这个约束中,init是指通过跨合约调用系统合约创建账号并初始化,payer=depositor意思是depositor为新账号支付存储空间费用。

规则2:#

这个约束中将检查给定帐户是否是当前执行程序派生的PDA,PDA(ProgramDerivedAddress)?账号是一个没有私钥、由程序派生的账号,seed和bump是生成种子,如果bump未提供,则Anchor框架默认使用canonicalbump,可以理解成自动赋予一个确定性的值。

Otherside Wiki发布Otherside语言工具:金色财经报道,Otherside数据聚合器社区Otherside Wiki在社交媒体宣布推出“Otherside语言工具”,可以帮助社区用户使用Otherside/Koda语言进行写作,只需将文字输入文本区域就会生成相应的句子。截止目前,Otherside Wiki已根据Yuga Labs、10KTF和Otherside的各种帖子和推文找出了Otherside字母表中26个字母中的17个。[2023/3/11 12:56:02]

使用PDA,程序可以以编程方式对某些地址进行签名,而无需私钥。同时,PDA确保没有外部用户也可以为同一地址生成有效签名。这些地址是跨程序调用的基础,它允许Solana应用程序相互组合。这里用的是"deposits"字符+?reserve?账号公钥+?depositor?账号公钥作为?seeds,bump?则是在用户调用时传入。

西班牙巴斯克地区制定加密税法:金色财经报道,西班牙巴斯克地区的所有三个主要西部省份——吉普斯夸、比斯开和阿拉瓦,都将试图对加密货币的“不受监管的市场”“设置税收上限”。第一个这样做的是比斯开政府,该政府批准了一项当地法案的“初步草案”,该法案将要求提供“加密货币买卖服务”的公司向比斯开国库和税务服务机构提供“详细信息” 。“虚拟货币所有者持有的加密货币和法定货币的余额”。这可能适用于居住在比斯开的加密货币所有者,交易所也有义务交出“对上述货币的操作”的数据——即交易数据。比斯开议会将对拟议的法律进行投票。如果它被接受,它将在2023年1月1日生效。很快吉普斯夸和阿拉瓦也制定了类似的提案。(cryptonews)[2022/5/22 3:33:18]

规则3:#

这是一个SPL约束,用于更简便地验证SPL账号。这里指定deposit_account账号是一个token账号,它的mint权限是deposit_note_mint账号,authority权限是market_authority。

Account的宏定义还有很多,这里略表不提,详细可以考虑文档:

https://docs.rs/anchor-lang/latest/anchor_lang/derive.Accounts.html

有了这些前置知识,我们就可以直接来看漏洞代码:

programs/jet/src/instructions/withdraw_tokens.rs

正常情况下,用户调用函数withdraw_tokens提币时,会传入自己的LP账号,然后合约会销毁他的LP并返还相应数量的代币。但这里我们可以看到deposit_note_account账号是没有进行任何约束的,用户可以随意传入其他用户的LP账号。难道使用别人的LP账号不需要他们的签名授权吗?

通过前面分析宏定义代码,我们已经知道了market_authority账号拥有LP代币的操作权限,确实不需要用户自己的签名。那么market_authority又是一个怎么样的账号呢?我们可以看这里:

programs/jet/src/instructions/init_market.rs

这个market_authority也是一个PDA账号。也就是说合约通过自身的调用就可以销毁用户的LP代币。那么对于恶意用户来说,要发起攻击就很简单了,只要简单地把deposit_note_account账号设置为想要窃取的目标账号,withdraw_account账号设置为自己的收款账号,就可以销毁他的LP,并把他的存款本金提现到自己的账号上。

最后我们看一下官方的修复方法:

补丁中并未直接去约束deposit_note_account账号,而是去除了burn操作的PDA签名,并将authority权限改成了depositor,这样的话用户将无法直接调用这里的函数进行提现,而是要通过另一个函数withdraw()?去间接调用,而在withdraw()?函数中账号宏定义已经进行了严密的校验,恶意用户如果传入的是他人的LP账号,将无法通过宏规则的验证,将无法通过宏规则的验证,因为depositor需要满足signer签名校验,无法伪造成他人的账号。

programs/jet/src/instructions/withdraw.rs

总结

本次漏洞的发现过程比较有戏剧性,漏洞的发现人@charlieyouai在他的个人推特上分享了漏洞发现的心路历程,当时他发现burn的权限是market_authority,用户无法进行签名,认为这是一个bug,会导致调用失败且用户无法提款,于是给官方提交了一个赏金漏洞,然后就去吃饭睡觉打豆豆了。

而后官方开发者意识到了问题的严重性,严格地说,他们知道这段代码没有无法提现的漏洞,而是人人都可以提现啊,老铁,一个能良好运行的bug你知道意味着什么吗?!所幸的是没有攻击事件发生。

目前在Solana上发生过多起黑客攻击事件均与账号校验问题有关,慢雾安全团队提醒广大Solana开发者,注意对账号体系进行严密的审查。

标签:HORDEPDEPOPOSICHORSE价格TradePlusPOSI币

FTT热门资讯
APT:获币安、a16z等2亿美元投资,新兴公链Apotos靠什么赶超前辈?

作者|秦晓峰3月29日,根据币安官方公告,币安旗下投资机构BinanceLabs宣布投资公链项目AptosLabs,具体金额未知.

1900/1/1 0:00:00
SOL:《财富》杂志特稿:Solana Labs及其创始人如何构建Web 3核心层?

作者:AnneSraders、DeclanHarty原标题:《HowAnatolyYakovenko’scryptostartupSolanaLabsisbuildingwhatinvestor.

1900/1/1 0:00:00
ULT:被社区Fomo的CULT.DAO是什么来头?

随着人们对DAO的理解越发深入,以及在OpenDAO空投等一系列事件的推动下,类似的空投活动以及DAO的推出已经司空见惯.

1900/1/1 0:00:00
DAO:对话Dragonfly合伙人:大多数DAO既没有去中心化也不自治

DragonflyCapital是一家拥有超过20亿美元资产管理规模的加密资产投资公司,其管理合伙人Haseeb身兼数职,包括投资者、创始人、软件工程师,甚至是职业扑克玩家.

1900/1/1 0:00:00
EARN:CGV Research:为什么要投资Move-to-Earn赛道?

加密行业最迷人的地方在于,它从来都不缺乏新的叙事。2022年的第一个季度,加密行业虽然历经乌克兰俄罗斯战事、美联储加息预期等不确定性影响,但STEPN、Genopets等“Move-to-Ear.

1900/1/1 0:00:00
加密货币:从Paradigm谈起,机构对被投加密企业的控制权正在减弱?

作者:MilesKruppa原文来自:FT译者:念银思唐在Web2的互联网发展历程中,风投机构对其投资组合的业务方向、人事任命、发展节奏总是进行诸多参与,主要投资方也总会在董事会占有一席之地.

1900/1/1 0:00:00