KeyFrame內部研究專用

The Superpower of Code Search for Deployed Contracts, Gary Thung - DeFi security Summit 2023

DeFi Security Summit - DSS·7月16日週日·9 min英文

三句話摘要

使用代码搜索工具(Code Saw)进行以太坊智能合约审计的方法与应用 在智能合约数量和复杂度呈指数增长的时代,代码搜索工具通过函数级精确匹配和依赖关系可视化,为安全研究员提供了从成千上万份合约中快速定位特定风险模式的能力。 智能合约生态增长超出预期,代码量和执行复杂性都在指数级增长,这对开发者和安全研究员形成了前所未有的审计压力。Code Saw 通过函数级搜索功能让安全研究员能跨数百个合约快速定位特定漏洞模式,例如在 Compound V2 的重入漏洞被多个分叉协议沿用的情况下,仅需搜索函数签名就能找回所有风险合约。工具还能追踪不安全的 view 函数依赖关系,例如 Curve 的 get_virtual_price 函数虽然不修改状态但存在被操纵的风险,800 多个合约依赖此函数。此外代码搜索能快速识别开发团队自行实现的数据结构而非使用标准库版本的情况,以及追踪有漏洞库的供应链传播情况。

重點整理

重點
  • 1

    智能合约生态增长超出预期,代码量和执行复杂性都在指数级增长,这对开发者和安全研究员形成了前所未有的审计压力。Code Saw 通过函数级搜索功能让安全研究员能跨数百个合约快速定位特定漏洞模式,例如在 Compound V2 的重入漏洞被多个分叉协议沿用的情况下,仅需搜索函数签名就能找回所有风险合约。工具还能追踪不安全的 view 函数依赖关系,例如 Curve 的 get_virtual_price 函数虽然不修改状态但存在被操纵的风险,800 多个合约依赖此函数。此外代码搜索能快速识别开发团队自行实现的数据结构而非使用标准库版本的情况,以及追踪有漏洞库的供应链传播情况。

實用技巧與重點

乾貨
  • 增长指标:
  • 验证智能合约数量:自 2020 年增长 5 倍
  • 代码总量:290 万行
  • 平均交易合约调用:增加 3.3 倍(相比 2017 年)
  • 平均交易存储读写:增加 4.1 倍(相比 2017 年)
  • 工具名称:
  • Code Saw(以太坊代码搜索公开工具)
  • 具体漏洞类型与搜索方式:
  • 重入漏洞(Re-entrancy):搜索函数签名 `doTransferOut`,Compound V2 版本返回 ~300 个合约
  • 只读重入漏洞(Read-only re-entrancy):搜索 Curve 的 `get_virtual_price` 函数,返回 ~800 个依赖合约
  • Merkle 证明不当实现:搜索 `merkleproof`、`merkleVerify`、`merkleTree` 等关键词
  • 漏洞库传播:PRB Math 库漏洞,可通过特定 if 语句匹配追踪所有受影响合约
  • 主要功能:
  • 函数级搜索与直接跳转
  • 调用依赖图(Sankey chart):通过合约间 gas 消耗加权显示值流和执行流
  • 代理升级历史图表:展示以太坊顶级代理的升级趋势
  • 合约版本 diff:对比升级前后逻辑合约的代码差异

結論

結論

在智能合约数量和复杂度呈指数增长的时代,代码搜索工具通过函数级精确匹配和依赖关系可视化,为安全研究员提供了从成千上万份合约中快速定位特定风险模式的能力。

完整解析

詳細

以太坊生态规模的快速扩张正在改变安全审计的复杂性。根据统计,自 2020 年以来链上验证的智能合约数量已增长 5 倍,这些合约总计超过 290 万行代码。更具挑战性的是,这些合约的行为也变得越来越复杂。平均每笔交易的合约间调用相比 2017 年增加了 3.3 倍,存储层面的读写操作增加了 4.1 倍,这意味着协议之间的可组合性在深度增加,攻击面也随之扩大。

面对这些挑战,Electric Capital 开发了 Code Saw 作为公开工具供安全研究员和开发者使用。代码搜索的核心价值在于快速定位特定风险模式的批量实例。以重入漏洞为例,当 Compound V2 被发现存在特定函数漏洞后,虽然官方及时修补,但许多分叉项目没有同步修复。通过在 Code Saw 搜索函数签名 `doTransferOut`,安全研究员能在约 300 个合约中逐一排查是否存在相同漏洞。更新的攻击向量如只读重入漏洞则源于 view 函数虽然不修改状态但其返回值可被操纵的特性;Curve 的 `get_virtual_price` 函数被约 800 个合约作为价格预言机依赖,任何一个依赖合约如果在调用此函数时被重入,就可能获得过时或被操纵的价格。

除了漏洞检测,代码搜索还能追踪数据结构和算法的实现质量。许多团队为了定制化或其他原因自行实现 Merkle 树等关键数据结构,而非使用 OpenZeppelin 等标准库,这些自实现版本往往成为隐患。最近一个案例中,安全审计师发现 PRB Math 库存在 bug,Code Saw 能通过搜索特定代码模式快速识别所有部署了漏洞版本的合约,从而填补了区块链生态缺乏传统包管理器的空白。

工具的可视化功能进一步增强了审计效率。通过 Sankey 图表展示合约间的调用依赖,研究员能清晰看到交易执行时的价值流向,这对理解多合约系统的交互逻辑至关重要。此外,代理合约升级历史图表能揭示以太坊中升级频率的长期趋势,而合约版本 diff 功能让审计人员能直观比对升级前后逻辑合约的变化。团队未来计划添加合约存储状态查看、代码注释众筹等功能,并扩展对非 Solidity 语言的支持。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web3 安全」的內容

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️
8 min
Web3 安全英文8月14日

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️

Zach Humphries

  • 機構支撐的積極意義:價格操縱常被視為負面,但Ripple掌握大量XRP供應與escrow,在熊市期間提高價格下限,實際上替零售投資者鎖定了低風險的積累區間,這不是剝削而是市場穩定機制。
  • 歷史模式驗證:2024年7月至11月XRP在50美分附近橫盤整理,低點觸及42美分(wick),高點65美分;隨後11月5日至12月5日單月上漲456%,年底到2025年初累計漲幅534%,這個歷史周期正在1美元價位重演。
  • 比特幣聯動邏輯:講者在4-5月就預測「如果比特幣跌至60k以下,XRP會跌至1美元或更低」,此預測精準應驗,反映出熊市中兩者的明確連動關係。
Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady
72 min
Web3 安全英文PODCAST8月5日

Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady

Zero Knowledge

  • 反向 Linux 架構:Commonware 刻意暴露棧各層級控制,讓開發者自訂執行環境、共識機制、密碼學實現,而非像 Cosmos SDK 只允許應用層以上定制。2-3 個月能組裝一條定製鏈,代價是額外深度但回報是長期維護成本降低及效能優化彈性。
  • 容錯假設的典範轉移:Alpine Glow(Solana 2025)實現單輪投票定終的關鍵是將容錯預算分離為獨立的 Byzantine 和 Crash 容限。傳統系統把 33% 當一個整體預算;新模型允許 20% 惡意加 20% 崩潰,打破了 PBFT 理論界線,釋放單輪設計空間。
  • Minimet 與 Multimet 的遞進:Minimet 是 5F+1 設定下的乾淨構造,實現更短視圖延遲;Multimet(剛發布)進一步允許並行 mini-commits 且驗證者可推翻領導者審查,使用者交易在全球分布式網路達到 200-300 毫秒端到端定終。
Private Information Retrieval (PIR) with Alex Hoover
64 min
Web3 安全英文PODCAST7月29日

Private Information Retrieval (PIR) with Alex Hoover

Zero Knowledge

  • PIR 保護的是訪問模式,不是資料本身
  • PIR 與加密不同,它關注的是隱藏「客戶端查詢了什麼」,而非「資料是否加密」。在公開資料庫(如區塊鏈)上,客戶端可以在不洩露查詢對象給伺服器的情況下檢索特定條目,解決了輕量級客戶端的隱私和防審查問題。
  • 客戶端預處理方案是突破瓶頸的關鍵