保險庫受到黑客攻擊?Pinecone被攻擊事件全解析

原標題:《獨家 | 靈蹤安全:Pinecone被攻擊事件分析》

作者: 靈蹤安全

8月19日,BSC上的收益聚合項目Pinecone Finance的保險庫受到黑客攻擊,損失約350萬沒PCT代幣(市值約合20萬美元)。

截至寫稿時為止,項目方已經針對此次攻擊中受損的用戶發布了補償計劃:項目團隊及投資人共持有491萬枚代幣,將用所有代幣補償用戶。

儘管此次攻擊受損的金額相對近期動輒千萬、上億美元的金額不算太大,但這起攻擊事件還是給我們留下了值得吸取的經驗和教訓。

這次攻擊出現漏洞的地方在於轉賬過程使用的代幣有損耗,而合約對這個損耗沒有處理好於是就導致漏洞出現從而被黑客攻擊。

在正常狀況下,用戶之間轉賬(ERC-20等)代幣的時候,如果代幣在轉賬過程中沒有損耗,處理起來是比較簡單的。但如果某些代幣在轉賬過程中會出現損耗,則處理這類代幣的轉賬就要非常小心了。

在Pinecone項目中,其代幣PCT是作為資金池的質押代幣,在其合約設計的代幣轉賬過程中會有手續費的損耗。而項目將這個損耗計入了用戶的份額中,於是用戶份額和質押的PCT總額就會出現偏差。這個偏差就能被攻擊者用來領取多餘的獎勵。

具體而言,本次攻擊存在漏洞的合約有:

PineconeFarm合約,其地址為:

0x4099f27fb72788b7bb5cb64e3d2b865eb82d0f8f

farm合約使用的策略合約IPineconeStrategy,其地址為:

0x1e542DB46eb87cc8E5fA8e1856eC53F89dc4bC89

PCT代幣合約,其地址為:

0x6019384a802310117a6E889e7021d2d0A144fE50

漏洞涉及的相關代碼片段為:

PineconeToke的_transfer()函數:

保險庫受到黑客攻擊?Pinecone被攻擊事件全解析

在這裡,PineconeToken的transferFrom的調用了_transfer()函數,在_transfer()中用戶轉賬會收取手續費,因而實際到賬的金額比transferFrom傳入的 amount 值要小。

PineconeFarm合約的deposit()函數:

保險庫受到黑客攻擊?Pinecone被攻擊事件全解析

在上述代碼中,PineconeFarm將存入的PCT質押到IPineconeStrategy合約中獲取收益。通過使用BSC的vm trace工具,可以發現這個IPineconeStrategy是一個VaultRabbitCake合約。PineconeFarm對用戶份額share的計算會用到_wantAmt。而這個_wantAmt和下面的函數片段又有關聯。

策略合約的deposit()函數

保險庫受到黑客攻擊?Pinecone被攻擊事件全解析

從上述代碼可以看出,在計算sharesAdded時,其分母是wantTotal,而wantTotal 依賴balance()。balance是關聯的總鎖倉PCT餘額。由於實際的PCT餘額小於 deposit傳入的金額_wantAmt,這就會造成用戶份額在計算時增加了。

最後,當攻擊者調用withdraw函數時,只要輸入比deposit值大的參數就可以贖回超過質押數的PCT代幣。

按照這個機制,黑客在攻擊時,可以重複重複調用deposit和withdraw功能,從而導致合約質押的PCT損耗不斷增加、資金池持有的PCT餘額不斷變小。然後在計算獎勵時,由於使用資金池中的餘額作為分母,而分母越小,則可額外領取的獎勵就越多。

了解了代碼的漏洞及相關機制后,我們再來看黑客諸多攻擊中的一次攻擊:

這次攻擊中,黑客的地址為:0xfc6682db7e9f57882e8b18ebc9adc7a19f770494,其交易流程如下:

保險庫受到黑客攻擊?Pinecone被攻擊事件全解析
保險庫受到黑客攻擊?Pinecone被攻擊事件全解析

可以看出第一筆交易0xe446f質押了8.1萬PCT,然後在0x76d33 提取獎勵時卻提取了16萬PCT。

我們繼續查看withdraw交易的參數,可以看出傳入amount值為 22603495a2af5d0ccc34,將其轉換為10進制數就是16萬,遠超質押金額8.1萬。詳細細節如下圖所示:

保險庫受到黑客攻擊?Pinecone被攻擊事件全解析

從這次攻擊的漏洞原因看,在轉賬時有損耗的代幣在參與收益類項目時,存在較多的問題。因此靈蹤安全提醒項目方要充分考慮損耗對收益計算的影響。

對此類問題,靈蹤安全一直以來都會在審計時特別和項目方強調。另外我們也再次強調審計在項目中的重要性,希望項目方在項目上線前充分做好審計工作。

作者:

靈蹤安全CEO 譚粵飛

美國弗吉尼亞理工大學(Virginia Tech, Blacksburg, VA, USA) 工業工程(Industrial Engineering) 碩士(Master)。曾任美國硅谷半導體公司 AIBT Inc(San Jose, CA, USA) 軟件工程師,負責底層控制系統的開發、設備製程的程序實現、算法的設計,並負責與台積電的全面技術對接和交流。自2011至今,從事嵌入式,互聯網及區塊鏈技術的研究,深圳大學創業學院《區塊鏈概論》課程教師,中山大學區塊鏈與智能中心客座研究員,廣東省金融創新研究會常務理事 。個人擁有4項區塊鏈相關專利、3本出版著作。

本文鏈接:https://www.8btc.com/article/6677186

轉載請註明文章出處

(0)
上一篇 2021-08-24 14:11
下一篇 2021-08-24 14:37

相关推荐