整理一下balancer 攻擊的流程 🤔
攻擊的起因:Balancer 部分 Pool 包含會通貨緊縮的 Token,像是 STA。STA 通貨緊縮的意思是每次轉帳會自動耗損 1%,也就是會收 transfer fee,而這種通貨緊縮的 token 會改寫標準的 ERC20 transfer & transferFrom 的行為。
攻擊手法:
- 駭客從 dydx Flashloan 104K ETH 並換成 WETH
- 駭客去 Balancer 去來回交易 WETH/STA 很多次,STA 實際上在每次轉移時會收 1% 費用,但 balancer pool 並沒有考慮這件事。所以 balancer pool 內部紀錄的 STA 數量會多於真實的 STA 數量
- 駭客呼叫 balancer pool gulp() 將 Pool 的實際 STA 數量寫入到 balancer pool 的內部紀錄,也就是內部紀錄可能還有 100 個 STA 但會因此被改寫成 1wei STA,此時 pool 中 STA 很少所以相對於 pool 中的其他 token 很貴
- 駭客此時用 1wei STA 去換取 WETH 很多次,但因為 STA 轉移要收費,所以實際上此 Balancer pool 沒收到 STA 但卻持續吐出 WETH
- 駭客歸還 104K ETH flashloan,收穫滿滿
與 STA 類似的還有 STONK,覺得這個 tweet 說的很殘酷但很寫實 😆
https://twitter.com/CryptoCatVC/status/1277319629405290499Reference:
1inich:
https://medium.com/@1inch.exchange/balancer-hack-2020-a8f7131c980ebalancer:
https://medium.com/balancer-protocol/incident-with-non-standard-erc20-deflationary-tokens-95a0f6d46dea (edited)