KeyFrame內部研究專用

This DeFi Smart Contract Vulnerability Makes You Lose Everything Instantly

0xUnstuck·7月21日週二·11 min英文

三句話摘要

首存者攻擊(Inflation Attack)—— 第一位存款者透過捐贈代幣來操縱份額價格,使後續存款者的資金變成零份額並被盜取。 整數四捨五入加上第一位存款者的絕對權力造成盜竊,只需虛擬份額偏移就能根本防止。 份額計算的整數四捨五入是漏洞根源。Vault使用「存款÷總份額÷總資產」的公式計算份額數,當除法結果小於1時會四捨五入到0。第一位存款者可以透過操縱這個公式來決定份額初始價格。

重點整理

重點
  • 1

    份額計算的整數四捨五入是漏洞根源。Vault使用「存款÷總份額÷總資產」的公式計算份額數,當除法結果小於1時會四捨五入到0。第一位存款者可以透過操縱這個公式來決定份額初始價格。

  • 2

    Deposit和Donate的區別是攻擊的本質。Deposit會鑄造新份額並增加資產,但Donate(直接轉帳)只增加資產不鑄造份額,導致現有份額價值在不知不覺中上升,後續存款者因此獲得0份額。

  • 3

    虛擬份額偏移是業界標準防禦方案。在分子分母各加入固定的虛擬份額和資產(如1000虛擬份額+1虛擬資產),使第一位存款者無法獨佔價格決定權,捐贈操作也無法有效提高份額價格。

  • 4

    此漏洞已在多個真實vault中造成數百萬美元損失,被納入ERC-4626標準作為必須防禦的攻擊向量。

實用技巧與重點

乾貨
  • 攻擊步驟:(1)存入1 Wei獲得1份額 (2)捐贈100代幣 (3)受害者存入100代幣→四捨五入得0份額 (4)攻擊者用1份額贖回200代幣
  • 虛擬份額參數:示例中1000虛擬份額 + 1虛擬資產
  • 修復代碼:在deposit和redeem公式中的分子分母各加常數
  • 測試驗證:在Sepolia測試網實際部署,交易可在Etherscan上查證
  • 相關標準:ERC-4626 Vault Standard、OpenZeppelin實現
  • 開發工具:Foundry框架測試

結論

結論

整數四捨五入加上第一位存款者的絕對權力造成盜竊,只需虛擬份額偏移就能根本防止。

完整解析

詳細

首存者攻擊利用的是代幣Vault中份額計算的數學漏洞。一個全新Vault在第一次接收存款時,份額與資產的比例尚未確定。按照標準公式,新份額數 = 存款金額 × 現有總份額 ÷ 現有總資產。當Vault剛啟動時資產為零,第一位存款者實際上可以決定份額初始價格——這是攻擊的突破口。

攻擊精妙之處在於區分了兩種送錢方式。正式的「存款」(Deposit)會鑄造份額給存款者;「捐贈」(Donate)則是直接轉帳到Vault,完全不鑄造份額。攻擊者首先以1 Wei的金額正式存款,獲得Vault唯一的一份額,成為100%所有者。隨後攻擊者直接轉帳100個代幣進入Vault——這步至關重要,因為它不走deposit邏輯,所以不會鑄造新份額。結果是那唯一份額現在代表了101個代幣的所有權,份額價格被人為拉高100倍。

當真正的受害者存入100個代幣時,Vault計算應發份額數:100 ÷ 101 ≈ 0.99份額。但份額必須是整數,系統四捨五入的結果是0份額。受害者的100個代幣確實進入了Vault,但他對這些資產沒有任何所有權。最後攻擊者用唯一的1份額贖回,獲得Vault內所有資產(201個代幣),淨利潤等於受害者的全部存款。這個漏洞已在多個真實DeFi協議中造成數百萬美元損失。

防禦方法稱為「虛擬份額偏移」,現已成為ERC-4626標準的標配。實現極其簡單:在所有份額公式中,人為地在分子分母各加入固定值(如1000虛擬份額和1虛擬資產)。這些數字永遠無法贖回,但改變了整個數學。攻擊者的1份額現在淹沒在1000多個虛擬份額中,不再能單獨決定價格;捐贈資產被分散到數千份額上,幾乎不影響份額價格;受害者的100代幣會計算成接近2000份額,贖回時能取回幾乎全部投入。幾個加號就徹底消滅了這個攻擊。

關鍵時刻

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