安全研究团队 Neodyme 12 月 3 日在推特公布可于每小时“超领” 2,700 万美元、相当每分钟偷走一台兰博基尼 Huracan 的借贷协议漏洞,威胁的资金超过 26 亿美元。目前被通知曝险的项目皆已完成修补,Solana Labs 也很乾脆地修改开发参考文件,确保同个漏洞不会再度出现于新项目上。
安全研究团队 Neodyme 12 月 3 日发布官方声明表示,发现了 Solana 协议库中有关借贷合约的严重漏洞,该漏洞允许攻击者每小时窃走 2,700 万美元,相当于每分钟一台蓝宝坚尼 Huracan,目前 Larix、Solana Labs、Solend 和 Tulip 等已经修补完毕。
价值数十亿美元的漏洞
Neodyme 表示,他们最近在 Solana Program Library(SPL)中发现了一个漏洞,该漏洞允许使用者向协议提领资金时“四捨五入”到最接近整数,这只有在误差的单位为 Lamport(类似比特币的 Satoshi)时会发生,在通常的情况下这会让部分的用户损失部分差额(多拿或少拿皆然),大致平衡。
然而,对有心人而言,这小小的差额就是庞大的获利机会。Neodyme 在 Solana 区块链的副本上进行攻击验证,结果成功在单次交易“多拿”了 0.000001BTC(约 0.047 美元)。
据 Neodyme 估计,若真有心要大幅获利,可以在单笔交易中执行 300 次这个漏洞,若再将许多交易一次包在同个区块内,则“多拿”的状况可以来到每秒 7,500 美元或每小时 2,700 万美元的程度,这相当于每分钟可以赚到一台兰博基尼 Huracan。
急通知项目修补
Neodyme 发现该漏洞遍及 Solana 上的数个 DeFi 项目,包含 Larix、Solend、Tulip、Accumen、Soda 等共八个借贷项目可能暴露在风险当中,总计受影响的 TVL 高达 26 亿美元。
Neodyme 立刻透过 Telegram、Discord、Twitter、电子邮件等管道与项目方联繫,结果发现 Soda、Acumen、Port 三个项目早已修补漏洞、或是尚未展开借贷服务所以不受影响。收益聚合器 Tulip 、借贷协议 Solend 和 Larix 则立刻採取行动,防止从协议取出的资金可以大于存入。
值得注意的是,该漏洞早在 2021 年 6 月 5 日便由 Neodyme 的研究员 Simon 在 Github 上公开,但由于相对可以“多拿”的资金,手续费更为高昂,缺乏攻击效益下导致该漏洞修补未被重视。但若将盗领币种换为比特币等高价位代币,则不法获利便能盖过手续费,12 月 1 日 Simon 见该漏洞仍未被修补,Neodyme 团队方展开攻击验证。
Neodyme 对此指出:
就算四捨五入丢失一枚代币看似无害,但这也应该被视为严重漏洞,
因为你永远不知道该代币在未来可能值多少钱。
目前攻击行为很难被侦测到,因为攻击过程很缓慢、可以拉到数天以上,顶多造成 APY 下降且不会触动人和警报,这使得修补漏洞成为当务之急,Neodyme 建议项目方可以把自己加入 Solana Explorer 的已知密钥列表中,如此便能藉由社群的力量检核是否安全,Solana Labs 目前已修改开发参考文件,确保该漏洞不会出现于往后新诞生的项目中。