Hyperlane 速率限制 ISM 和 Hook 中的访问控制缺陷

作者在 Hyperlane 的智能合约代码库中发现了一个严重漏洞,该漏洞存在于其速率限制的实现中,攻击者可以以极小的成本完全关闭跨链Token传输和消息验证,Hyperlane 团队通过实施适当的访问控制措施解决了该问题。

Hyperlane的速率限制ISM和Hook中的访问控制缺陷

Sujith Somraaj

摘要

在审查Hyperlane的智能合约代码库时,我发现其速率限制实现中存在一个严重漏洞,攻击者只需极少的努力和成本,即可完全关闭跨链代币转账和消息验证。

什么是Hyperlane?

Hyperlane是一个无需许可的互操作性层,可实现安全的跨链通信。它使用各种安全机制,包括速率限制,以防止滥用并确保系统稳定性。但是,其速率限制实现中的一个基本缺陷会产生重大漏洞。

漏洞:公共速率限制消耗

问题在于Hyperlane的RateLimited合约,特别是在validateAndConsumeFilledLevel()函数中。此函数实现了用于速率限制的Token桶算法,但被标记为public,没有任何访问控制:

function validateAndConsumeFilledLevel(
    uint256 _consumedAmount
) public returns (uint256) {
    uint256 adjustedFilledLevel = calculateCurrentLevel();
    require(_consumedAmount <= adjustedFilledLevel, "RateLimitExceeded");

    // Reduce the filledLevel and update lastUpdated
    uint256 _filledLevel = adjustedFilledLevel - _consumedAmount;
    filledLevel = _filledLevel;
    lastUpdated = block.timestamp;

    emit ConsumedFilledLevel(filledLevel, lastUpdated);
    return _filledLevel;
}

问题:任何人都可以直接调用此函数并消耗所有可用的速率限制容量,从而有效地执行拒绝服务攻击。

但是,继承此函数的合约从未覆盖它或添加任何适当的访问控制。

影响分析

此漏洞会影响两个关键组件:

1. RateLimitedHook

  • 影响:阻止发送合法的代币转账

  • 持续时间:最多1天(速率限制重新填充的DURATION常量)

  • 攻击者成本:最低 gas 费用

2. RateLimitedIsm

  • 影响:阻止合法的消息验证

  • 持续时间:最多1天,直到速率限制自然重新填充

  • 可重复性:可以持续执行攻击

攻击场景

以下是攻击者可能利用此漏洞的方式:

  1. 监控速率限制:调用calculateCurrentLevel()以检查可用容量

  2. 耗尽限制:使用全部可用金额调用validateAndConsumeFilledLevel()

  3. 重复:随着速率限制重新填充,继续攻击以维持持久的DoS

// 攻击演示
uint256 availableCapacity = rateLimitedHook.calculateCurrentLevel();
rateLimitedHook.validateAndConsumeFilledLevel(availableCapacity);
// Now filledLevel = 0, blocking all legitimate transfers

现实世界的后果

此漏洞可能使攻击者能够:

  • 停止跨链操作:长时间阻止链之间的所有代币转账

  • 中断协议操作:阻止消息验证,破坏核心功能

  • 经济损失:迫使用户等待或支付更高的 gas 价格来竞争

  • 声誉风险:损害用户对协议可靠性的信任

  • 竞争优势:竞争对手可以利用这一点来破坏Hyperlane的运营

修复方法:

Hyperlane团队通过实施适当的访问控制措施来解决了该问题。

[fix: remove public fn from RateLimited library (#6355) · hyperlane-xyz/hyperlane-monorepo@46bb080

Description

Fixes a bug which allowed anyone to conduct a denial of service attack on the `RateLimitedHook` and `RateLimite…

github.com](https://github.com/hyperlane-xyz/hyperlane-monorepo/commit/46bb080551c9c2d5451eaa601113ecddcff311ca)

经验教训

此漏洞突出了几个重要的安全原则:

  1. 最小权限原则:函数应具有最小的必要可见性

  2. 按设计进行访问控制:关键函数必须实施适当的授权检查

  3. CVSS 分数:可能为 8.5+(高)

  4. 纵深防御:速率限制应与其他安全机制结合使用

  5. 彻底的测试:安全测试应包括对抗性场景

负责任的披露

此漏洞已负责任地披露给Hyperlane团队,使他们能够在公开披露之前解决该问题。由于Immunefi的漏洞赏金计划不涵盖该问题,因此未支付赏金。

Hyperlane的开发人员(或)集成商在使用这些合约时应格外小心,因为这些合约未充分包含在漏洞赏金计划中,可能包含漏洞。

漏洞提交

[hyperlane_rate_limit.md

hyperlane_rate_limit.md

GitHub Gist: instantly share code, notes, and snippets.

gist.github.com](https://gist.github.com/sujithsomraaj/dd246f9e8701a2735887aed569f9b43d)

  • 原文链接: mirror.xyz/sujithsomraaj...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
sujithsomraaj.eth
sujithsomraaj.eth
江湖只有他的大名,没有他的介绍。