Morpheus 审计报告分享2:ChianLink 数据源有着不同的“心跳”

漏洞信息

漏洞报告

  1. https://code4rena.com/audits/2025-08-morpheus/submissions/S-709

漏洞代码

  1. https://github.com/code-423n4/2025-08-morpheus/blob/a65c254e4c3133c32c05b80bf2bd6ff9eced68e2/contracts/capital-protocol/ChainLinkDataConsumer.sol#L78-L107

漏洞背景

Heartbeat

Heartbeat 是 ChainLink 价格更新的周期,不同的 Data Feeds 会拥有不同的 Heartbeat。

比如 稳定币/USD 和 BTC/ETH 价格的 Heartbeat 约为 24 小时。

ETH/USD 价格的 Heartbeat 约为 1 小时。

漏洞案例

在 ChainLinkDataConsumer 合约中,通过 getChainLinkDataFeedLatestAnswer() 函数返回 pathId_ 对应的价格。其中 dataFeeds 存储的是价格的计算路径,比如 dataFeeds = BTC/ETH, ETH/USD 对应着 BTC/USD 的价格。

在 getChainLinkDataFeedLatestAnswer() 函数中依次读取 dataFeeds 中对应的每个价格,并检查其更新时间间隔是否小于 allowedPriceUpdateDelay。

但是由于不同的 Data Feeds 会拥有不同的 Heartbeat,同样以 dataFeeds = BTC/ETH, ETH/USD 为例:

  1. 当 allowedPriceUpdateDelay 设为 1 H 时,读取 Heartbeat 为 24 H 的 BTC/ETH 价格将会返回 0 值,无法正常进行计算。
  2. 当 allowedPriceUpdateDelay 设为 24 H 时,由于 ETH/USD 价格的 Heartbeat 为 1 H ,过宽的限制可能会读取到过时的价格,从而计算出错误的最终价格。

修复方案

为每个 Data Feeds 设置对应的 Heartbeat 时间,不要共用同一个阈值时间。

补充材料

ChainLink 的 Data Feeds 之间除了 Heartbeat 有所差异外,价格精度 decimals 也有所不同。

Decimals

不同的 Data Feeds 会有不同的 decimals,基本分为 8 和 18 两类。

比如 ETH/USD 的 decimals 为 8:https://etherscan.io/address/0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419#readContract

而 BTC/ETH 的 decimals 为 18:https://etherscan.io/address/0xdeb288F737066589598e9214E782fa5A8eD689e8#readContract

相关推荐
漠月瑾-西安16 天前
PHP曝出两个严重RCE漏洞:CVE-2026-109618、CVE-2026-109619技术分析与修复指南
网络安全·php·漏洞分析·漏洞修复·远程代码执行
合天网安实验室1 个月前
CVE-2026-40281漏洞复现记录
漏洞分析·gotenberg·换行符注入·api接口漏洞
deepseek231 个月前
MCP SSRF 连环漏洞拆解:从 Google 到 mcp-server-fetch,Agent 的信任链如何变成攻击链
安全·漏洞分析·ssrf·ai agent·mcp
阿菜ACai2 个月前
20260911-Etherfi AtomicQueue 攻击事件:订单校验逻辑未实现,用户授权被滥用
漏洞分析
带娃的IT创业者3 个月前
深度解析:大模型供应链安全危机与Hugging Face评估漏洞实战复盘
大模型·llm·漏洞分析·hugging face·供应链安全·ai安全
阿菜ACai6 个月前
PolyMarket Ghost Fills(幽灵订单)探究
漏洞分析
ybdesire6 个月前
间接提示词注入真实样例鉴赏
网络安全·语言模型·漏洞·漏洞分析
阿菜ACai7 个月前
20260428 - ZetaChain 安全事件分析
漏洞分析
阿菜ACai7 个月前
20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过
漏洞分析
Gobysec10 个月前
Goby 漏洞安全通告|GNU InetUtils Telnetd USER环境变量注入 权限绕过漏洞(CVE-2026-24061)
数据库·安全·gnu·漏洞分析·漏洞预警