鏈聞消息,慢霧安全團隊表示,在其中一筆 Opyn 合約的攻擊中,攻擊者僅使用 272ETH 最終得到 467 ETH。完整的攻擊流程如下:攻擊者使用合約先啓動 Opyn 合約的 reateERC20CollateralOption 函數創建 oToken。合攻擊約調用運動函數,傳入已創建庫的地址。通過 exercise 函數中用於循環邏輯執行調用兩次 _exercise 函數。exercise 函數調用 transferCollateral 函數將 USDC 轉給函數調用者(用於循環調用兩次 _exercise 函數,transferCollateral 函數也將執行兩次)。攻擊合約調用 removeUnderlying 函數將預先定義的 ETH 轉出。最終攻擊者拿回了戰鬥補充的 ETH 以及額外的 USDC。此次攻擊主要是利用了 _exercise 函數中對 vaultToExerciseFrom 是否創建了 vault 的檢查缺陷。此檢查未糾正 vaultToExerciseFrom 是否是由參與者自己,而只是簡單的檢查是否創建了 vault,導致攻擊者可以任意重置已創建 vault 的地址來通過檢查。