首發| CertiK:賣意外險的保險公司也遭受了意外?Cover Protocol...

2021-01-10 金色財經

本文由CertiK安全驗證團隊撰稿,授權金色財經首發。

最近小區出現了一些流浪狗,聽說鄰居家有孩子看到狗嚇得就跑,結果反而被狗狂追咬了一口。

還好父母機智,給孩子上了個意外險,幾針狂犬病疫苗下來沒怎麼花錢。

作為幣民如果加密資產不幸被盜,但項目方或者你個人購買了保險,那麼也大可放心讓保險公司償還損失的資產。

可還有最差的一種情況:但是如果連保險公司都出了安全事故,受到攻擊了呢?

北京時間12月28日晚, CertiK安全技術團隊發現Cover Protocol發生代幣無限增發漏洞攻擊。

攻擊者通過反覆對項目智能合約進行質押和取回操作,觸發其中包含鑄造代幣的操作,對Cover代幣進行無限增發,導致Cover代幣價格崩盤。

技術分析 

主要攻擊分為以下步驟: 

1. 攻擊者設置攻擊必要的NOCLAIM代幣。

2. 攻擊者使用NOCLAIM代幣,為Balancer Pool提供流動性:

    ①總計向Balancer Pool提供了2,573個DAI的流動性

    ②攻擊者通過向Balancer Pool提供流動性,獲得了約132,688個Balancer流動性證明代幣BPT

3. 攻擊者向Cover Protocal中的Blacksmith.sol智能合約質押(stake)前一步中所得的所有Balancer流動性證明代幣。

質押時,攻擊者調用位於0xe0b94a7bb45dd905c79bb1992c9879f40f1caed5的Blacksmith.sol智能合約中的deposit函數,如圖一所示:

圖一:The deposit() function in blacksmith.sol

通過調用deposit函數,攻擊者將得到的BPT流動性證明質押到cover protocol中。

首先通過圖一中118行將當前流動性證明代幣的pool數據讀取到memory,然後調用121行代碼對當前pool的數據進行更新。

圖二:blacksmith.sol中的updatePool()函數

如圖二第75行所示,在updatePool()函數中修改的當前流動性證明代幣的pool數據是一份存儲在storage中的數據,與在deposit()中存儲在memory中當前流動性證明代幣的pool數據是兩份數據。

在圖二第84行lpTotal的值代表當前合同中總共存入的流動性證明代幣數目,由於該變量數值較小,因此通過84行公式pool.accRewardsPerToken的數值將會增大,更新過的accRewardsPerToken值存儲在storage中。

圖三:blacksmith.sol中的_claimCoverRewards()函數

接下來如圖三中318行所示,deposit()通過調用_claimCoverRewards()函數,向函數調用者(msg.sender)鑄造一定數目的cover代幣。

鑄造cover代幣的數目與pool.accRewardsPerToken, CAL_MULTIPLIER以及miner.rewardWriteoff三個變量相關。

請注意這裡pool.accRewardsPerToken的數值是使用了存放在memory中的pool數據,並非使用圖二中update()函數更新之後的數值。

同時,通過圖1中deposit函數得知,miner.rewardWriteoff的數值更新是在_claimCoverRewards()函數執行完成之後發生。

因此原本設計上應使用更新過的miner.rewardWriteoff的數值計算需要鑄造cover代幣的數目,這裡錯誤的使用了未更新過的miner.rewardWriteoff的數據,導致實際鑄造cover代幣數目比應鑄造代幣數目增多,最終導致了代幣增發。

質押成功之後,攻擊者通過調用blacksmith.sol智能合約中的withdraw()函數,將質押的BPT取回,同時取得額外鑄造的cover代幣,完成攻擊。

通過對比執行deposit()函數和執行withdraw()函數之後的代幣結餘表,我們可以發現通過這一組deposit和withdraw函數調用之後,攻擊者可以獲得約704個COVER代幣。

deposit()之後:

withdraw()之後:

攻擊者通過反覆執行deposit和withdraw函數,可以使Blacksmith函數無限鑄造代幣,並將代幣轉到自己的地址中,由此獲利。

攻擊發生後,截止發稿時,cover官方已經將blacksmith遷移到安全版本:

有漏洞的blacksmith地址:

0xe0b94a7bb45dd905c79bb1992c9879f40f1caed5

臨時修復後的blacksmith地址:

0x1d5fab8a0e88020309e52b77b9c8edf63c519a26

臨時修復後的blacksmith合同臨時禁止了一切質押和取回操作,以此阻止攻擊者繼續實行攻擊。 

本次攻擊最初攻擊者共獲利440萬美金,約合人民幣2900萬人民幣

有其他攻擊者利用該漏洞發動類似攻擊,例如Grap.finance項目官方參與了利用該漏洞的攻擊,獲利4350個ETH代幣。

在攻擊發生後幾個小時,Grap.finance項目官方通過Twitter聲稱對本次攻擊負責,並表示已將所有的獲利退回給了Cover Protocol。

安全建議

為了確保數字資產不因任何非技術原因遭受損失,項目方應及時為項目產品購買保險,增加項目方和投資者的安全保障方案,確保其因受到攻擊所造成的損失可以被及時補償。

作為世界頂尖的審計公司,CertiK目前已經進行了超過369次安全審計,審計了超過198,000行代碼,並保護了價值超過100億美元的加密資產。

近期,CeritK推出了CertiKShield去中心化資金保障計劃。

CertiKShield不僅可以為項目及其社區成員提供保障,同時,CertiK作為主營業務為審計的安全公司,我們確保自己的保險項目擁有更高的安全性

相比於純粹的保險公司,安全技術的背書及團隊對於安全的重視和一系列的保障,CertiKShield是安全領域內構建的保險,並且有著巨大的成長和發展空間。

聲明:本文由入駐金色財經的作者撰寫,觀點僅代表作者本人,絕不代表金色財經贊同其觀點或證實其描述。

提示:投資有風險,入市須謹慎。本資訊不作為投資理財建議。

相關焦點

  • 2020年9月意外險排名,保險公司十大排名
    站在保險公司的角度,他們認為設計一款特別便宜沒有利潤的產品出來,即使賣到了天量,也不算成功。所有的保險公司一致認為「創新」出一些別人沒有的東西後,既能保證自己的利潤,又能大賣,這才叫成功的產品設計。 現在就連最簡單的意外險,也在走向越來越複雜的「創新」道路上了。
  • 案例說險:「猝死」不是意外,300萬保額意外險,保險公司贏官司
    案例始末2017年5月李某通過自己控制的公司在寶雞市某銀行貸款300萬,作為公司實際控制人,貸款的同時購買了《借款人意外傷害保險》,約定①李某因為意外原因導致身故的,銀行將獲得保險理賠金;②意外傷害是指,遭受外來的、突發的、非本意的、非疾病的客觀事件致使身體受到的傷害。該份意外險保費7200元。
  • 什麼是建工意外險?解讀建工意外險保險責任與保險特徵-工保網
    建設工程意外傷害保險,即建工意外險,由於是團體保險形式,也稱建築施工人員團體意外傷害險。建工意外險,是指建設工程相關人員在建設施工區域內施工、檢查工作等活動中,因遭受意外傷害而造成傷殘、死亡等安全事故,保險公司在保險期限與保險責任範圍內負責支出醫療費用、傷殘保證金、死亡保證金賠付的安全生產保險。
  • 怎樣才算意外,意外險包括哪些範圍?
    二、意外險包括哪些範圍1、一般意外在保險期間內,被保險人不幸遭受意外事故導致身故或傷殘,以及因意外傷害事故需門診或住院治療,發生的醫療費用,例如剛才提到的花盆高空掉落,如果被砸之人不幸身故,那麼按照保險約定,他將可以獲得相應的保險金賠償。
  • 公司旅遊,泡溫泉「突然死亡」,保險公司:意外險不賠「猝死」!
    就保險而言,上面的猝死和「意外險」的一些特性很像!因此,對於很多不了解保險的朋友,就會不管是非,強行將猝死納入了意外險的範圍。那麼意外險和猝死有哪些共同點和不同點呢?意外險的「意外」是指外來的、突發的、非本意的、非疾病的情形,這屬於四個缺一不可。
  • 意外保險包括哪些範圍
    意外保險包括哪些範圍,意外保險提供被保人因遭受意外事故而死亡、傷殘的意外傷害及意外醫療保障。通常,意外險責任範圍包括意外身故、意外傷殘、意外醫療、意外住院津貼四種。常見的意外險有旅遊意外險、航空意外險、交通意外險等。那麼,意外險包括哪些範圍?下面小編為您解答。
  • 一懷孕女子出意外,保險公司拒賠!意外險賠不賠,這些原因要了解
    張女士想到了之前購買的意外險,於是便向保險公司申請理賠。可保險公司最後拒絕了張女士的理賠請求。保險公司拒絕的原因,主要是由於張女士懷孕,即使造成了意外,也屬於保險公司免責條款的範圍。對被保險人來說,懷孕了,風險會進一步增加,所以大多數的保險公司的意外險產品都會把「被保險人妊娠、流產、分娩」列為免責條款。
  • 意外險哪個保險公司最好?代表產品有哪些?
    很多小夥伴在買保險時都尤為關注保險公司的規模實力,就像最近一個比較熱門的話題——意外險哪個保險公司最好?奶爸認為,沒有哪一款產品可以稱得上是「最好」,因為每個保險公司設計的產品都有不同的側重內容,所以沒有最好的產品,只有最合適的產品。
  • 這些「意外」,意外險可能不會賠!
    1.保險中對意外的定義在保險條款中,意外傷害是指遭受外來的、突發的、非本意的、非疾病的客觀事件直接致使身體受到的傷害。我們來仔細看一下這四個條件的具體指向:要注意的是:只有同時符合這四個條件,才能滿足保險條款所定義的「意外」。
  • 愛人意外懷孕,意外險到底能不能賠?
    有了寶寶如果算是意外的話,那應該就是最讓人感到甜蜜的意外吧。很多朋友買的第一張保單就是「意外險」。今天咱們就來聊聊,保險公司眼中的意外,和你腦子中想的意外,有哪些不同,可能會讓你很意外哦。保險公司眼中的意外,更偏向於這個詞的第2條註解。因為保險就是預防將來要發生的不幸的事件或不好的後果,所以只有不幸的事件更貼近意外事實。
  • 買的意外險居然發生意外不理賠?那是因為你對意外險理解有誤!
    雖然這兩個都是意外險,但是在理賠時卻會因為意外事故的原因不同而產生很大的差別。1. 意外傷害險:發生燒傷、殘疾、死亡等意外傷殘/意外死亡的大問題,保險公司按合同約定賠付。2. 意外醫療險:因意外身體遭受傷害產生一些小問題,有了醫療開支,保險公司按照合同給予報銷。
  • 保險小課堂:意外保險怎麼買,你真的了解嗎?
    意外險——槓桿最高的險種之一意外保險,全稱為意外傷害保險,屬於人身保險業務之一。意外險的保險金給付條件為被保險人因遭受意外傷害造成死亡、殘廢。從產品的基本內容來看,投保人向保險人交納一定的保險費,如果被保險人在保險期限內遭受意外傷害並以此為直接原因或近因,在自遭受意外傷害之日起的一定時期內造成的死亡、殘廢、支出醫療費或暫時喪失勞動能力,則保險人給付被保險人或其受益人一定量的保險金。
  • 意外險不賠的「意外」你都了解嗎?別以為什麼意外都能賠!
    現如今,隨著人們保險意識的提升,購買意外險的人也越來越多。意外險因為價格便宜,通常一年幾百就能有十幾萬的保額,具有其他保險望塵莫及的優勢。但是很多人認為意外險是只要發生了意外就可以賠償,然而事實卻並非如此!意外險也有理賠範圍,不是所有意外都能理賠,今天多保魚小編就來聊聊意外險的範圍問題,幫助大家在以後挑選意外險的時候可以瞭然於胸,快速做出選擇!
  • 賠完工傷保險後,還可以申請團體意外險理賠嗎?
    工傷保險切實保障了受傷害職工的合法權益!02團體意外險保什麼?團體意外險的保險責任、給付方式與個人意外傷害保險相同,區別在於團體意外傷害保險是以團體方式投保的。被保險人:勞動者投保人:用人單位保障責任:通常包含意外身故、意外傷殘、意外醫療、意外住院津貼等。是否強制購買:否團體意外險的受益人是勞動者本人或指定/法定受益人,由保險公司給付保險金。團體意外保險參保條件比較嚴格,對被保險人的年齡有嚴格要求,根據職業類別、風險係數等,費率有所區別。
  • 有必要買意外險麼?意外險知識分享,建議收藏
    現在隨著社會的發展,人們的保險意識也是越來越強,例如在生活中越來越多的人開始為自己配置意外險。不過,也有一部分人因為不了解意外險,再加上每年需要支付相應的保險費,因此會問到「有必要買意外險麼」這個問題。下面就針對買意外險的相關知識和大家分享介紹一下。
  • 友邦保險的王牌意外險,拒賠了!
    涉及友邦保險的王牌意外險產品「安益意外傷害保險」(根據主附險不同,也稱添益意外傷害保險),全文如下(僅更改部分標點符號):《記錄一次被拒賠的友邦意外險,給大家防坑》我還是一個比較有保險意識的人可能很多人看到這一條都會覺得,蚊蟲叮咬完全符合啊,保險公司應該賠!其實不然,大部分的保險公司不把蚊蟲叮咬歸結於意外,是不予理賠的。
  • 僱主責任險、團體意外險和工傷保險的對比分析與建議
    彪哥:1、經濟賠償責任被保險人僱傭的人,在保單有效期限內,在受僱過程中,在保單列明的地點,從事保單列明的被保險人的業務活動時,遭受意外而受傷、致殘、死亡或患與業務有關的職業性疾病所致傷殘或死亡的經濟賠償責任;2、被保險人的有關訴訟費用霞妹:僱主責任保險還有兩項附加責任?是什麼?彪哥:附加醫療費保險和第三者責任保險。
  • 配置意外險的最大意義是什麼?意外又指的是什麼?
    2017年保險行業協會統計了123家保險公司、共8.9億份的意外險保單,整理出來的意外險數據顯示:: 所以,對意外傷殘、尤其是輕度意外傷殘造成的收入損失進行補償,只有意外險可以做到。 這也是意外險無可替代的原因,也是意外險的最核心價值所在。 02 對保險來說,什麼是意外?
  • 男子上廁所摔倒身亡,意外險又不賠?保險公司為何總有么蛾子?
    要說生活中常見的意外,摔跤絕對是榜上有名,所以對於摔倒導致的事故,一旦被拒賠就會引發大家對保險的懷疑。然而在意外險的理賠過程中,摔倒究竟算不算意外,應該如何理賠,卻飽受爭議。特別是有些情形可能還與被保險人的既有疾病有關,就更是說不清楚。今天我們就通過一個拒賠的案例來看一看關於投保意外險後摔倒的情況,保險公司和法院都是如何看待的。
  • 男子被蚊子叮咬後死亡 120萬意外險遭拒賠!保險公司:不屬於意外
    因金某任職的建築公司在他去非洲期間為他投保了兩份《團體境外工作人員意外傷害保險》,基本意外保額為100萬,意外醫療為10萬。金某的家屬主張保險公司理賠120萬的意外身故險,而保險公司認為,金某投保的是《團體境外工作人員意外傷害保險》,意外傷害需要滿足保險合同的明確定義:滿足」外來的、突發的、非本意的、非疾病的客觀事件「,而金某屬於瘧疾死亡,不屬於」意外「,故保險公司拒絕理賠。