Injective 因二元期权市场 ID 冲突遭到攻击,损失 490 万美元

Injective 是一种专注于去中心化金融的 Layer 1 区块链协议,于 8 月 31 日因其二元期权结算系统中的严重漏洞遭到攻击,损失约 490 万美元。攻击者在 19 小时内创建了 299 个即时二元期权市场,利用市场标识符冲突实现余额人为膨胀和未经授权的提款。此次攻击得以实施,源于该协议哈希逻辑中的缺陷:在未使用分隔符的情况下拼接市场参数,使一个以 INJ 计价的保险基金标识符能够与一个以 USDC 计价的二元期权市场标识符发生冲突。这一事件加剧了外界对 Injective 决定将其核心链代码库从 GitHub 移除的质疑,批评者认为此举阻碍了独立安全审计,并使该漏洞得以长期未被发现。

攻击者在 19 小时内创建 299 个市场

攻击者系统性地滥用无需许可的市场创建机制,于 8 月 31 日在 19 小时内创建了 299 个即时二元期权市场。每个市场均通过一个由攻击者自主管理的预言机运行,该预言机被刻意配置为永不提供价格。预言机符号经过明确构造,以触发无价格退款路径,而到期时间戳与结算时间戳之间仅相隔数秒。

链上分析显示,此次攻击依赖于攻击者自有子账户之间的自成交。攻击者存入抵押品,以操纵后的价格同时持有多头和空头头寸,并利用退款机制在每个周期提取约两倍于存入金额的资金。在一笔已记录的操作中,约 105,000 USDC 产生了超过 204,000 USDC 的提款。随后,攻击所得资金通过 CCTP 跨链至 Ethereum,在 Uniswap 上兑换为 ETH,并汇集至地址 0x5a18…69ea。截至发稿时,约 1,980 ETH(约 488 万美元)仍未转移。

Injective 链停止运行 3 小时 42 分钟

Injective 链停止运行约 3 小时 42 分钟,从 8 月 31 日 16:10 UTC 的区块 181,027,006 持续至 19:52 UTC 的区块 181,027,007。与近期事件后回滚交易的 Cronos 不同,Injective 在这一时间段内仅前进了一个区块,保留了所有已执行的交易。

最后一次攻击尝试之所以失败,仅仅是因为其结算时间戳在区块生产严重放缓期间过期了;在验证者介入前,出块间隔已降至约 38 分钟。停止运行后,区块生产于 19:52 UTC 恢复。

市场 ID 冲突导致未经授权的提款

根本原因可追溯至 Injective 核心逻辑中的市场标识符冲突。该协议通过拼接 oracleType、ticker、quoteDenom、oracleSymbol 和 oracleProvider 来生成 market_id,且不使用分隔符或长度前缀。这种哈希方案使攻击者能够创建一个以 INJ 计价的保险基金,并使其标识符与一个以 USDC 计价的二元期权市场标识符发生冲突。

当结算进入无价格退款路径时,系统试图使用所关联 INJ 基金的原始整数余额来弥补人为制造的 USDC 赤字。由于代码将以最小单位计价的 INJ 余额视为足以覆盖以美元计价的短缺,因此绕过了剩余头寸之间所需的折扣处理,并允许对人为膨胀的余额进行全额提款。

Injective 将核心代码库从 GitHub 移除

这一事件再次引发了对 Injective 决定将其核心链代码库从 GitHub 移除的审查,该决定此前被解释为旨在减少攻击面。批评者认为,此次攻击证明了通过隐蔽性实现安全的根本局限:攻击者仅依靠公开的 SDK 文档、最高至 1.17.2 版本的旧版编译二进制文件,以及在线运行的 Frontrunner 测试网,就通过实证方式逆向还原出了该漏洞。与此同时,独立审计员和白帽研究人员无法获得主动识别该缺陷所必需的源代码级访问权限。

协议在事件期间未发布公开声明

沟通失误加剧了技术漏洞的影响。在停止运行期间,Injective 的官方社交媒体渠道持续发布推广新产品的营销内容,却没有承认这一事件或安抚用户。这种做法与 MANTRA 和 Cronos 等公开披露近期宕机事件的协议形成鲜明对比。

一条提供悬赏的链上消息由一个未经验证的智能钱包发送给攻击者,但 Injective 尚未确认官方是否参与其中,发送者身份仍不明确。截至发稿时,该协议尚未就此次攻击、对用户的影响或计划采取的补救措施发布任何公开声明。

常见问题

攻击者于 8 月 31 日利用了 Injective 上的什么漏洞?

攻击者利用了 Injective 二元期权结算逻辑中的市场标识符冲突。该协议在不使用分隔符的情况下拼接参数来生成 market_id,使一个以 INJ 计价的保险基金标识符能够与一个以 USDC 计价的二元期权市场标识符发生冲突。这一缺陷使攻击者得以绕过所需的余额检查,并提取人为膨胀的余额。

Injective 链于 8 月 31 日停止运行了多久?

Injective 链停止运行约 3 小时 42 分钟,从 8 月 31 日 16:10 UTC 的区块 181,027,006 持续至 19:52 UTC 的区块 181,027,007。在停止运行期间,该链仅前进了一个区块,保留了所有已执行的交易,而不是回滚交易。

为什么 Injective 移除 GitHub 代码库的决定引发了批评?

Injective 以减少攻击面为由,将其核心链代码库从 GitHub 移除。批评者认为,这一决定阻碍了独立安全审计。攻击者仅利用公开的 SDK 文档、旧版二进制文件和测试网就逆向还原出了该漏洞,这表明通过隐蔽性实现安全的做法失败了,同时却剥夺了白帽研究人员主动识别该缺陷所需的源代码访问权限。

免责声明:以上内容(如有图片或视频亦包括在内)均为平台用户上传并发布,本平台仅提供信息存储服务,对本页面内容所引致的错误、不确或遗漏,概不负任何法律责任,相关信息仅供参考。

本站尊重他人的知识产权、名誉权等法律法规所规定的合法权益!如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到qklwk88@163.com,本站相关工作人员将会进行核查处理回复

(0)
上一篇 2026年9月1日 下午3:33
下一篇 2026年9月1日 下午3:35

相关推荐

风险提示:理性看待区块链,提高风险意识!