高智商犯罪:價值 4000 萬人民幣的 3 行程式碼

買賣虛擬貨幣

幾行平淡無奇的程式碼,悄無聲息地薅走價值約 4000 萬元人民幣,駭客的手段是越來越高明瞭。

神奇的是,這次安全事故發生後,代幣的價格沒崩,沒有單獨的受害者,也沒有維權,就因為駭客沒偷專案方的秘鑰,也沒盜走使用者的資產,而是採用了一種更隱蔽的方式:在礦工兢兢業業挖礦的時候,悄悄「增發」了 RVN(Ravencoin),讓人以為(至少看起來)像是系統正常產生的代幣。

事情的經過是這樣的。

6 月 29 日早上,海外的 CryptoScope 團隊成員最先發現區塊鏈專案 Ravencoin 並沒有按照預期執行,在每個區塊正常產生 RVN 之外,還額外建立了多餘的 RVN。他們很快對異常進行標記。在確認漏洞後,他們聯絡了 Ravencoin 開發團隊。

經開發團隊確認,Ravencoin 確實存在漏洞,隨後團釋出緊急修復公告。截至這時,漏洞已經讓系統多產生了約 1.4%(約 3 億枚)的 RVN 代幣,這部分憑空產生的代幣,數量大概是所有 RVN 礦工埋頭苦幹 44 天的開採量。

由於這部分 RVN 沒有任何限制,等到被發現時,大部分代幣已經流入了加密市場,凍結、回滾等常規操作已經無法奏效。

根據 CryptoScope 的披露,這些被增發的代幣,大部分流入了幣安,少部分流入了 OKEx。或許,這個「聰明」的駭客並沒有急躁地賣出砸盤,而是有耐心地出貨,一直到被發現。根據加密貨幣行情網站 Coinmarketcap 的資料,今年 6、7 月份,RVN 代幣的二級市場價格並沒有產生明顯下跌,甚至在 7 月 6 日後迎來了上漲。

不幸的是,在開發團隊釋出補丁和新協議執行之前的幾個小時,又有人利用這個漏洞「增發」了約 480 萬枚 RVN。根據團隊的披露和確認,至少有三個加密地址牽涉其中。

核心開發者 Tron Black 透露,其中有一個「攻擊者」留下了蛛絲馬跡,開發人員掌握了資訊後,希望對方將增發的 RVN 轉至 RXBurnXXXXXXXXXXXXXXXXWUo9FV 地址進行銷燬。據披露,被掌握資訊的「盜賊」後續將增發的部分代幣打回了銷燬地址。最終,大約 390 萬枚 RVN 代幣透過這種方式被銷燬掉了。

Ravencoin 為什麼會被盯上?

駭客之所以盯上 Ravencoin 的挖礦程式碼,而不是盜走團隊的私鑰,或者使用者的幣,其實也有原因。

Ravencoin 簡稱 RVN,中文名是「烏鴉幣」或「渡鴉幣」,於 2018 年 1 月誕生,無 IC0,無預挖礦,是個純粹的「社羣幣」。烏鴉幣在比特幣原始碼基礎上進行演算法改良,最佳化轉賬環節,並增加類似以太坊的資產通證發行功能,意在打造一個完全去中心化、社羣自治的區塊鏈服務平臺。

其實,區塊鏈領域中完全社羣化的專案並不算多,因為沒有預挖和預留,估計除了老老實實挖礦的收入,開發團隊手上也沒多少幣。之前加密貨幣交易平臺幣安的創始人趙長鵬,就曾公開讚揚烏鴉幣團隊:「沒有 IC0,社羣化專案,低調謙遜的團隊,不需要上幣費。」

去年 10 月,烏鴉幣升級演算法,更改為 X16R 的升級版 X16Rv2,目的就是為了阻止烏鴉幣網路上 ASIC 礦機繼續挖礦。在此之前,大約有 83% 的算力是 ASIC 礦機,升級後,RVN 的算力很快從原來的 30T 下降到 5T 左右。

有意思的是,這個並沒有公佈全部成員,基本只有 Bruce Fenton 和 Tron Black 兩位開發者露臉的團隊,不過,這沒有影響外界對專案的估值。

此前,在接受媒體採訪時,美國電商巨頭 Overstock 的前 CEO Partrick Byrne 表示已將數百萬美元投入了烏鴉幣,並聲稱提供的服務比人們意識到的還要多。去年 10 月,他在推特回答網友詢問曾買入什麼加密貨幣時坦言,是比特幣和烏鴉幣。而包括 Medici Ventures 和 tZERO 也曾表示,要在基礎設施方面支援烏鴉幣的開發。

沒想到,平日低調的烏鴉幣竟然被駭客盯上了。

駭客的方法

一位微信名為「奮鬥的 M4ster」的社羣成員提供了他的分析思路,發現這名駭客只用了 3 行程式碼就成功「生成」了價值 4000 萬人民幣的財富。

問題出在上面這段程式碼,從程式碼表達上看,這部分與鑄幣有關,但這段程式碼只有一個 else if。

在程式碼語言中,else if 是「否則如果」的意思,是一種判定條件,很顯然,這段程式碼裡只判定了一個條件,沒有繼續判定其他條件。

於是,駭客只要傳送一筆交易,就可以憑空鑄出一筆新幣,即便這筆新幣不在正常的 RVN 總量範圍內,而是超出總量之外的數量,一筆交易就可以憑空造成 50 萬枚 RVN。

RVN 總量有 210 億枚,幾十萬的新增幾乎就是九牛一毛,誰都發現不了。駭客笑了。

從 5 月 9 日,駭客發起第一筆攻擊開始,他用了近兩個月時間,總共傳送了 5000 筆交易,慢慢造出了約 3 億枚 RVN,佔總量的 1.4%,總價值 4000 萬人民幣。

駭客的最後一次攻擊發生在 6 月 29 日。當時 CryptoScope 團隊正在解 bug,順便看了一眼瀏覽器,突然就覺得 RVN 的總量有點問題。在駭客持續攻擊了 2 個月後,這一行為最終被發現了。

一般來說,程式碼上的漏洞都是駭客仔細研究程式碼發現的,需要付出極大成本才能發現一個有價值的漏洞,而 RVN 的這段程式碼,是駭客自己寫的。

Ravencoin 作為一個開源專案,所有人都可以在 Github 上為該專案提供程式碼。因為開源專案的初衷就是讓所有開發者齊心協力,為專案最佳化做貢獻,每個人都可以把自己的想法寫成程式碼,放在 Github 上。程式碼會由專案方稽覈,決定用不用這段程式碼。

駭客在 1 月提交了這段程式碼,專案方沒有發現問題,直接整合進了專案裡面,這才給了駭客機會。而駭客整整潛伏了 4 個月,才開始攻擊。

誰受到了損失

這並不是一次普通概念的駭客攻擊。一般的駭客攻擊,是需要駭客攻擊賬戶,從賬戶中盜走使用者資產。所以駭客攻擊中大部分損失的是使用者,但這次的另類駭客攻擊,損失的是誰?

使用者並沒有受到損失,因為資產價格沒有波動,專案方也幾乎沒有損失,他們自己也無需補償任何人。

真正損失的是礦工。

看了專案方提供的增發解決方案,基本上都是從挖礦角度解決,比如提前產量減半、強制總量達到上限後停止挖礦等。按照這樣的邏輯,這場駭客攻擊的損失方只能是礦工。礦工靠挖礦生存,這 3 億枚 RVN 本應是礦工的獎勵,現在他們拿不到了。

如果這一切都是駭客從頭計劃好的,那麼這就是一場完美的攻擊,1 月佈局,5 月攻擊,7 月收尾,如果不是意外被發現,整個過程可能還會持續更長時間。使用者不會報警,因為沒有損失,專案方不會報警,因為是自己稽覈問題,礦工也無法報警,他們損失的是若干年以後的獎勵,而且,誰會去受理這樣的報案呢?

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;