Security
是否可以使用 .send() 使用負氣體來執行可重入攻擊?
還沒有測試過,但我認為理論上這可以工作。它可能會像這樣工作:
攻擊者首先將大量數據寫入儲存,因此有數據要刪除。
在合約中使用 .send() 進行攻擊,攻擊者會呼叫他的備份函式並使用 delete() 釋放空間,這樣他就可以使用比實際可能的更多的氣體,從而使他有足夠的氣體來執行可重入攻擊。
這甚至可能嗎?如果沒有,為什麼不呢?
這是不可能的,因為負 gas 累積在一個單獨的退款櫃檯中,並且僅在交易結束時提供(最多為所用 gas 的一半)。請參閱Gas 退款的限制是什麼?