歡迎回到 Sherlock 的漏洞聚焦,我們將突顯在 Sherlock 審計中發現的一個影響深遠的漏洞。 本週,我們檢視在 @GMX_IO 競賽中由 @0xdeadbeef____ 和 @IllIllI000 發現的拒絕服務漏洞。 感謝 @int0x1catedCode 的詳細分析。
漏洞摘要: 該漏洞允許攻擊者通過提供與實際數據不匹配的假回退原因長度來操縱訂單執行流程。這導致協議的錯誤處理讀取不正確的內存區域,可能會干擾執行過程或在處理失敗的訂單時導致意外行為。
攻擊步驟: 1. 設置階段 部署一個實現自定義回退行為的惡意合約 該惡意合約應可由目標協議調用(例如,作為回調處理器)。 2. 構造惡意回退數據 使用虛假的長度參數結構化回退數據。 3. 通過協議執行訂單 創建一個將觸發與惡意合約互動的訂單 當協議處理該訂單並調用惡意合約時,它將使用構造的數據回退。 協議的錯誤處理嘗試使用虛假的長度解碼回退原因。 4. 觸發內存讀取溢出 協議根據虛假的長度參數讀取內存 這導致它讀取超出實際回退數據邊界的內容。
影響是什麼? 服務拒絕:訂單可能無法正確執行,阻礙合法的協議操作,例如清算不良頭寸 訂單執行中斷:批量訂單處理可能會被暫停,影響多個用戶 燃料費詐騙:處理格式錯誤的回退數據可能會消耗過多的燃料費
根本原因: 1. 未檢查的長度參數:協議在回退數據中信任提供的長度值而不進行驗證 2. 缺少邊界檢查:未驗證聲明的長度是否與實際數據大小相符
緩解措施: 1. 始終驗證回退數據長度 2. 實施最大長度限制
我們很自豪能夠通過這次發現幫助 @GMX_IO 確保安全。 當它絕對需要安全時,Sherlock 是正確的選擇。
2.32K