據慢霧區消息,去中心化年金協議Punk Protocol 在公平啟動的過程中遭遇攻擊,慢霧安全團隊以簡訊形式將攻擊原理分享如下:
1. 攻擊者調用CompoundModel 合約的Initialize 函數進行重複初始化操作,將合約Forge 角色設置為攻擊者指定的地址。
2. 隨後攻擊者為了最大程度的將合約中資金取出,其調用了invest 函數將合約中的資金抵押至Compound 中,以取得抵押憑證cToken。
3. 最後攻擊者直接調用withdrawToForge 函數將合約中的cToken 轉回Compound 獲取到對應的底層資產並最終將其轉給Forge 角色。
4. withdrawToForge 函數被限制只有Forge 角色可以調用,但Forge 角色已被重複初始化為攻擊者指定的地址,因此最終合約管理的資產都被轉移至攻擊者指定的地址。
總結:本次攻擊的根本原因在於其CompoundModel 的Initialize 函數未做重複初始化檢查,導致攻擊者直接調用此函數進行重複初始化替換Forge 角色,最終造成合約管理的資產被盜。
陀螺財經訊