CertiK:Keep3r項目中心化風險漏洞分析

2020-12-11 百家號

北京時間2020年11月20日, Telegram社群出現某些截圖聲稱Keep3rLink接受了CertiK的審計服務。

在此,CertiK鄭重聲明:CertiK團隊從未對 "Keep3rLink" 項目進行過任何審計。

同日,CertiK安全研究團隊發現Keep3r項目存在中心化安全風險。

項目擁有者擁有過大權限,可將允許獎勵的限制提高,從而可以向任意參與者發送任意數額的獎勵且可向任意地址鑄造任意數目代幣。

項目風險及相關細節

Keep3rV1:

代碼地址:https://github.com/

部署地址:https://etherscan.io/

Keep3rV1Helper:

代碼地址:https://github.com/keep3r-network/keep3r.network/blob/master/contracts/Keep3rV1Helper.sol

部署地址:https://etherscan.io/address/0x93747c4260e64507a213b4016e1d435c9928617f

如下圖圖一所示,Keep3r項目的Keep3rV1智能合約中定義了兩個角色:governance與pendingGovernance。

1178行setGovernance()函數允許當前governance角色將pendingGovernance角色設定為任意給定地址_governance。

同時在1186行acceptGovernance()函數中,當前pendingGovernance可以將自己授權為governance角色。

因此從邏輯上governance角色與pendingGovernance角色可以循環授權,且沒有任何event事件可以提醒投資者governance角色與pendingGovernance角色的變更。

此時,項目擁有者可以隨意設置擁有兩個角色的地址。

圖一:governance、pendingGovernance角色以及KPRH設置函數setKeep3rHelper()

一旦擁有governance角色,擁有角色的地址可以利用圖一中1169行setKeep3rHelper()函數對當前KPRH指向的Keep3rHelper智能合約進行修改。

修改之後圖二中1076行KPRH.getQuoteLimit()的具體實現就也極有可能被修改,接下來會返回給調用該函數的Keep3rV1合約不同的返回值。

圖二:對某個用戶keeper進行獎勵的函數workReceipt()

項目擁有者如果考慮發動攻擊,由於擁有governance角色,因此可以首先調用圖三中addKPRCredit()函數。

在916行對某一個job(假設job的地址為ADDR_A, 被項目擁有者掌握)的地址給與任意數目的信用數目credit(假設給與的credit數目為CREDIT_A, 關聯於ADDR_A)。

之後可以部署一個新的Keep3rHelper智能合約,然後在該智能合約中的將getQuoteLimit方法定義為返回uint類型變量的最大值。

然後項目擁有者可以使用ADDR_A的地址來調用圖1中setKeep3rHelper()函數,將KPRH值指向給定的Keep3rHelper智能合約。

最終調用圖二中workReceipt()函數,由於1076行代碼由於KPRH.getQuoteLimit()函數被指定返回最大值的緣故必定通過。

在1077行中由於項目擁有者使用ADDR_A的地址來進行的調用,其在該智能合約中擁有的信用數目為CREDIT_A,因此amount的數目可以為略小於CREDIT_A的任意值。

當通過1077行之後,amount的獎勵數目被給與keeper的地址。

最終該keeper可以調用合同內部的ERC20的轉移函數,將獲得的獎勵轉移到自己給定的地址中,完成攻擊行為。

圖三:對某個job增加信用數目credit的函數addKPRCredit()

除了上文講述的中心化風險漏洞之外,圖四中的mint()允許為governance角色的地址鑄造任意數目的代幣。

由於governance角色的地址可以通過圖一中的setGovernance()函數以及acceptGovernance()進行設置。

也就代表著項目管理者只要擁有governanvce角色,即可以通過重設governance角色地址的方式,向任意地址鑄造任意數目的代幣。

圖四:允許governance角色隨意鑄造代幣的函數mint()

通過查詢etherscan上Keep3rV1智能合約的數據,圖五顯示Keep3rV1擁有者地址為0x2d407ddb06311396fe14d4b49da5f0471447d45c。

同時,如圖六顯示,北京時間11月20日早11點governance角色的地址也為0x2d407ddb06311396fe14d4b49da5f0471447d45c。

可以得知項目擁有者擁有governance角色權限,因此有權限可以通過上述中心化漏洞進行攻擊並獲利。

圖五:Keep3rV1智能合約擁有者等相關信息

圖六:governance角色地址

總結

區塊鏈作為時代顛覆性的核心技術,也已在各個領域得到了廣泛的應用,隱藏在收益和利好之下的安全隱患也不應被忽視。

安全審計現在已經是高質量項目的標配。

若項目沒有被審計,對於用戶來說,投資行為則要格外慎重;對於項目方來說,則需要準備好相關資料並尋找專業並且聲譽好的審計公司進行審計。

若項目被審計過,則需儘量了解審計公司背景以及其審計報告中的各項指標。

CertiK採用形式化驗證工具來證明智能合約可靠性,公司內部審計專家將利用包括形式化驗證在內的多種軟體測試方法,結合一流的白帽黑客團隊提供專業滲透測試,從而確保項目從前端到智能合約整體的安全性。

近期,有部分項目方假借CertiK的名義發布不實審計報告。

首先,CertiK很感謝項目方對我們的認可。但項目方應對項目的發展負責,一份完整且符合安全標準的安全審計報告不可或缺,如您有審計需求,歡迎點擊CertiK公眾號底部對話框,留言免費獲取諮詢及報價!

CertiK在此提示:任何與CertiK審計相關的消息,請仔細甄別。切勿輕信相關不實內容,並請以CertiK官方或權威媒體發布的消息為準。

相關焦點

  • 首發| Keep3r項目中心化風險漏洞分析
    北京時間2020年11月20日, Telegram社群出現某些截圖聲稱Keep3rLink接受了CertiK的審計服務。在此,CertiK鄭重聲明:CertiK團隊從未對 "Keep3rLink" 項目進行過任何審計。同日,CertiK安全研究團隊發現Keep3r項目存在中心化安全風險。
  • CertiK中國區總裁探討:DeFi之盾--狂歡背後 審計是安全的護城河嗎?
    本次論壇對2020年火爆的DeFi領域閃電貸、中心化交易所與去中心化交易所之爭、DeFi安全審計、如何避免踩坑等話題作了深入淺出的探討。3. 除靜態審計之外,動態的安全防護更能夠防範攻擊事件。CertiK動態安全服務及安全保障:快速掃描——安全預言機——CertiKShield,從預警到實時評測到保險計劃,可以全方位為你的項目提供安全保障。
  • 波場項目「企鵝」兩小時捲款數百萬跑路,bitkeep錢包難辭其咎
    隨著流動性挖礦玩法的興起,一些不法分子也盯上了這塊「蛋糕」,通過在智能合約上留「漏洞」、「後門」等方式,大肆詐騙投資人數字資產。 繼翡翠、貝殼等「知名跑路項目」之後,9月30日凌晨,波場上再次出現一個上線僅兩小時就跑路的所謂流動性挖礦項目Penguin(企鵝)。
  • 美國安全審計公司CERTIK完成去中心化借貸協議TLC智能合約代碼審計
    CERTIK官網公告信息:美國當地時間11月6日,美國區塊鏈安全審計公司CERTIK完成Super Trister去中心化借貸協議TLC智能合約代碼審計,並發布安全審計報告,審計結果未發現重大或關鍵或主要漏洞。
  • 美國安全審計公司CERTIK完成去中心化借貸協議TLC智能合約代碼審計...
    CERTIK官網公告信息:美國當地時間11月6日,美國區塊鏈安全審計公司CERTIK完成Super Trister去中心化借貸協議TLC智能合約代碼審計,並發布安全審計報告,審計結果未發現重大或關鍵或主要漏洞。
  • Keep3r網絡實驗
    今天YFI創始人AC推特轉發了一篇文章,以下純機器翻譯,可以用於理解Keep3r項目。對於Hegic,用例:維護cron作業並非易事,因此讓我們看看Keep3r提供了什麼。進入Keep3r網絡在完成本節之前,我們需要澄清兩件事:1)我不會詳細介紹Yearn v2 keep3r的工作原理。您可以在這裡找到代碼:https : //github.com/Macarse/GenericKeep3rV2。
  • Yearn+Keep3r:DeFi時代的谷歌
    AC至今為止做了兩個事,一個聚合資產的Yearn,一個聚合人的Keep3r。到後面,AC可能會將這種協同合併變成標準化,通過Keep3r外包的形式進行合併,聚合全世界的DeFi項目。YFI+KP3R,目標或許是做DeFi時代的谷歌。 上一篇文章我說了至今為止AC相當於做了兩個事,一個聚合資產的Yearn,一個聚合人的Keep3r。
  • 加密世界裡的傳播紅利:想爆發,找Keep3r丨DeFi項目方新商機
    引言:現在AC已經成為DeFi加密世界最有影響力的人物,他的項目自然吸引了全世界的目光,而目前Keep3r裡的項目還很少,這正是新項目品牌曝光、線上推廣的極低成本的最佳模式。普通開發者其實可以利用Keep3r,因為既能從中獲得收入,又可以通過這種方式參與裡面的頂級項目,當然這也對項目方一樣,畢竟對於新誕生的項目來說是一種很好的曝光,也是低成本的廣告。
  • 首發| CertiK:我們每天遇到有漏洞的DeFi合約概率是多少 審計後又...
    智能合約當中,任何一個小bug,都可能會給項目或者投資者造成無法挽回的損失。受此警示之下,CertiK安全團隊利用CertiK天網系統 (Skynet),對自北京時間2020年12月4日0時至24時之間,新加入Uniswap的代幣智能合約進行了監控分析。在本次分析的時間段內,一共產生了29個智能合約代幣項目。
  • AC的又一個百倍幣,KeeP3R 又是一個劃時代的項目
    在聚合的背後,YFI做的工作是對不同平臺DEFI產品收益的數據收集,整理,分析,計算等。YFI對數字貨幣市場所做的貢獻,我們可以總結為兩點:一是整合了零散的DEFI收益市場,為用戶提供了可以直觀對比收益,分析投資性價比的工具,相當於是簡化了用戶參與DEFI的操作門檻和認知門檻。
  • 從KP3R 的增發和 Keep3R 經濟模式分析平臺業務增長能力
    昨天的文章我們講了Keep3R是一個去中心化的工作外包平臺,它連接著提供任務的項目方和尋找工作賺取收益的打工人Keeper。可以看出現在的任務類型已經擴展到了預言機餵價,清算,資金池守護,收益守護,投資策略更新,交易滑點餵價等等;提供任務的項目也擴展到了Uniswap, AAVE, Hegic, Yearn, Cream, Metakeep3r, Curve, Keep3R, Deforce, Hegic, Bzx, Sushi, Mushroom等等。
  • 層次分析法在項目風險分析中的應用
    項目風險分析是項目風險管理的主要過程之一,是指使用定性和定量工具分析可能對項目目標產生影響的各種不確定事件。將這種思想應用在風險分析中,能對項目風險重要程度進行排序,從而找到主要的項目風險並優先應對。層次分析法的主要步驟是根據研究問題的性質和目標,將研究問題劃分為幾個層次,對每個層次下的各因素兩兩進行重要性比較,然後按照層次之間的結構關係進行權重計算,使研究問題轉化為由低到高層次的一系列權重值,從而可以進行量化的分析和決策。
  • Loopring去中心化交易所:遏止盜幣風險 今日在ICORACE開啟眾籌
    但回顧歷史就會發現,交易所因為監守自盜、技術風險防範不到位等原因,一直都有著盜幣的事件發生:2014年當時世界最大的比特幣交易所Mt.Gox85 萬個比特幣被洗劫;2014年3月,那時人氣還不是很高的Poloniex被黑客攻擊,平臺存放的12.3%比特幣被盜;2016年8月香港的比特幣交易平臺Bitfinex由於網站出現安全漏洞,導致119756枚比特幣被盜……
  • 項目研究#01:Bounce 去中心化拍賣工具
    本研報是社區志願者研究員個人分析,不構成投資建議。如有疑問或不當之處,歡迎留言指正,並歡迎提供項目研報,我們將署名發布。數字貨幣市場風險巨大,請謹慎決策。  項目亮點:(1) 迎合一定的市場需求。17年I.C.O中心化眾籌平臺比較火,但是由於種種原因都關閉了。而去中心化眾籌平臺Bounce因為募資情況都在鏈上進行,所有數據公開透明,解決了之前中心化眾籌平臺存在的募資不透明,各種貓膩暗箱操作等痛點。(2) Bounce採取雙鏈同步。
  • 看代碼學PHP滲透(3) - 實例化任意對象漏洞
    最近我們小組正在做一個PHP代碼審計的項目,供大家學習交流,我們給這個項目起了一個名字叫 PHP-Audit-Labs 。現在大家所看到的系列文章,屬於項目 第一階段 的內容,本階段的內容題目均來自 PHP SECURITY CALENDAR 2017 。對於每一道題目,我們均給出對應的分析,並結合實際CMS進行解說。
  • Pwn2Own Tokyo :Netgear R6700路由器堆溢出漏洞分析
    這樣,我們可以完全控制Content-Length的值並觸發整數溢出漏洞。順便說一句,關於atoi上面的圖7 的實現,一個有趣的事情是,當它遇到非數字字符時,它不會停止。相反,它將繼續直到找到換行序列為止,然後將找到的\r\n其他任何字符解析為十進位數字。要確定每個字符的數值,請從字符代碼0中減去數字的ASCII字符代碼。0通過解析數字時,此公式將產生期望值9。
  • BitKeep冷錢包持幣生息不鎖倉打造真正的去中心化交易平臺
    數字貨幣交易所的本質是向數字貨幣項目方和投資者出售「市場平臺 (marketplace)」。數字貨幣項目方是「市場平臺」的上遊消費者——通過在此平臺上發行自己的代幣來籌資。投資者則是 「市場平臺」的下遊消費者——通過此平臺購買數字貨幣項目方的代幣,並在交易所組織的市場上賣出或再次買入代幣。儘管區塊鏈號稱去中心化,但交易所實質在數字貨幣市場中扮演了「中心」的角色。
  • KEEP項目產品需求規格說明書
    )1.3.3 一些優化: 用戶體驗提升增加播放音樂入口,使用戶可以在跑步時播放keep內置音樂。關聯的外部系統:支付寶支付系統,微信支付系統,只能設備(手環、體重秤等)6.項目風險Keep本次版本要做的直播功能,在這個小項目中,可能會出現的問題。