各種pos機名詞,一文了解20種名詞解釋及26種攻擊方式

 新聞資訊2  |   2023-05-30 09:30  |  投稿人:pos機之家

網(wǎng)上有很多關(guān)于各種pos機名詞,一文了解20種名詞解釋及26種攻擊方式的知識,也有很多人為大家解答關(guān)于各種pos機名詞的問題,今天pos機之家(m.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、各種pos機名詞

各種pos機名詞

免責聲明:本文旨在傳遞更多市場信息,不構(gòu)成任何投資建議。文章僅代表作者觀點,不代表火星財經(jīng)官方立場。

小編:記得關(guān)注哦

投資區(qū)塊鏈,猛戳:火星財經(jīng)App下載

文章來源:來源:慢霧科技

雖然有著越來越多的人參與到區(qū)塊鏈的行業(yè)之中,然而由于很多人之前并沒有接觸過區(qū)塊鏈,也沒有相關(guān)的安全知識,安全意識薄弱,這就很容易讓攻擊者們有空可鉆。面對區(qū)塊鏈的眾多安全問題,我們從兩方面介紹:區(qū)塊鏈安全重點名詞解釋和攻擊方法,讓新手們更快適應(yīng)區(qū)塊鏈危機四伏的安全攻防世界。

一、重點名詞解釋

(一)錢包(Wallet) 錢包(Wallet)是一個管理私鑰的工具,數(shù)字貨幣錢包形式多樣,但它通常包含一個軟件客戶端,允許使用者通過錢包檢查、存儲、交易其持有的數(shù)字貨幣。它是進入?yún)^(qū)塊鏈世界的基礎(chǔ)設(shè)施和重要入口。

(二)冷錢包(Cold Wallet)冷錢包(Cold Wallet)是一種脫離網(wǎng)絡(luò)連接的離線錢包,將數(shù)字貨幣進行離線儲存的錢包。使用者在一臺離線的錢包上面生成數(shù)字貨幣地址和私鑰,再將其保存起來。冷錢包是在不需要任何網(wǎng)絡(luò)的情況下進行數(shù)字貨幣的儲存,因此黑客是很難進入錢包獲得私鑰的,但它也不是絕對安全的,隨機數(shù)不安全也會導(dǎo)致這個冷錢包不安全,此外硬件損壞、丟失也有可能造成數(shù)字貨幣的損失,因此需要做好密鑰的備份。

(三)熱錢包 (Hot Wallet)熱錢包(Hot Wallet)是一種需要網(wǎng)絡(luò)連接的在線錢包,在使用上更加方便。但由于熱錢包一般需要在線使用,個人的電子設(shè)備有可能因誤點釣魚網(wǎng)站被黑客盜取錢包文件、捕獲錢包密碼或是破解加密私鑰,而部分中心化管理錢包也并非絕對安全。

因此在使用中心化交易所或錢包時,最好在不同平臺設(shè)置不同密碼,且開啟二次認證,以確保自己的資產(chǎn)安全。

(四)公鑰(Public Key)公鑰(Public Key)是和私鑰成對出現(xiàn)的,和私鑰一起組成一個密鑰對,保存在錢包中。公鑰由私鑰生成,但是無法通過公鑰倒推得到私鑰。公鑰能夠通過一系列算法運算得到錢包的地址,因此可以作為擁有這個錢包地址的憑證。

(五)私鑰(Private Key)私鑰(Private Key)是一串由隨機算法生成的數(shù)據(jù),它可以通過非對稱加密算法算出公并通過私鑰對區(qū)塊鏈的資產(chǎn)擁有絕對控制權(quán),因此,區(qū)塊鏈資產(chǎn)安全的核心問題在于私鑰的存儲鑰,公鑰可以再算出幣的地址。私鑰是非常重要的,作為密碼,除了地址的所有者之外,都被隱藏。區(qū)塊鏈資產(chǎn)實際在區(qū)塊鏈上,所有者實際只擁有私鑰,,擁有者需做好安全保管。和傳統(tǒng)的用戶名、密碼形式相比,使用公鑰和私鑰交易最大的優(yōu)點在于提高了數(shù)據(jù)傳遞的安全性和完整性,因為兩者——對應(yīng)的關(guān)系,用戶基本不用擔心數(shù)據(jù)在傳遞過程中被黑客中途截取或修改的可能性。同時,也因為私鑰加密必須由它生成的公鑰解密,發(fā)送者也不用擔心數(shù)據(jù)被他人偽造。

(六)助記詞(Mnemonic)由于私鑰是一長串毫無意義的字符,比較難以記憶,因此出現(xiàn)了助記詞(Mnemonic)。助記詞是利用固定算法,將私鑰轉(zhuǎn)換成十多個常見的英文單詞。助記詞和私鑰是互通的,可以相互轉(zhuǎn)換,它只是作為區(qū)塊鏈數(shù)字錢包私鑰的友好格式。所以在此強調(diào):助記詞即私鑰!由于它的明文性,不建議它以電子方式保存,而是抄寫在物理介質(zhì)上保管好,它和Keystore作為雙重備份互為補充。

(七)KeystoreKeystore主要在以太坊錢包 App 中比較常見(比特幣類似以太坊Keystore機制的是:BIP38),是把私鑰通過錢包密碼再加密得來的,與助記詞不同,一般可保存為文本或 JSON 格式存儲。換句話說,Keystore需要用錢包密碼解密后才等同于私鑰。因此,Keystore需要配合錢包密碼來使用,才能導(dǎo)入錢包。當黑客盜取Keystore后,在沒有密碼情況下, 有可能通過暴力破解Keystore密碼解開Keystore,所以建議使用者在設(shè)置密碼時稍微復(fù)雜些,比如帶上特殊字符,至少 8 位以上,并安全存儲。

由于區(qū)塊鏈技術(shù)的加持使得區(qū)塊鏈數(shù)字錢包安全系數(shù)高于其他的數(shù)字錢包,其中最為關(guān)鍵的就是兩點:防盜和防丟。相比于盜幣事件原因的多樣化,造成丟幣事件發(fā)生的原因主要有五個類型:沒有備份、備份遺失、忘記密碼、備份錯誤以及設(shè)備丟失或損壞。因此,我們在備份一個區(qū)塊鏈數(shù)字錢包的時候,對私鑰、助記詞、Keystore一定要進行多重、多次備份,把丟幣的風險扼殺在搖籃之中。

圖片來自imToken Fans 活動分享

為大家提供一份來自imToken總結(jié)的錢包安全“十不原則”

1. 不使用未備份的錢包;

2. 不使用郵件傳輸或存儲私鑰;

3. 不使用微信收藏或云備份存儲私鑰;

4. 不要截屏或拍照保存私鑰;

5. 不使用微信、QQ 傳輸私鑰;

6. 不要將私鑰告訴身邊的人;

7. 不要將私鑰發(fā)送到群里;

8. 不使用第三方提供的未知來源錢包應(yīng)用;

9. 不使用他人提供的 Apple ID;

10. 不要將私鑰導(dǎo)入未知的第三方網(wǎng)站。

(八)公有鏈(Public Blockchain)公有鏈(Public Blockchain)簡稱公鏈,是指全世界任何人都可隨時進入讀取、任何人都能發(fā)送交易且能獲得有效確認的共識區(qū)塊鏈。公鏈通常被認為是完全去中心化的,鏈上數(shù)據(jù)都是公開透明的,不可更改,任何人都可以通過交易或挖礦讀取和寫入數(shù)據(jù)。一般會通過代幣機制(Token)來鼓勵參與者競爭記賬,來確保數(shù)據(jù)的安全性。

(九)交易所 Exchange與買賣股票的證券交易所類似,區(qū)塊鏈交易所即數(shù)字貨幣買賣交易的平臺。數(shù)字貨幣交易所又分為中心化交易所和去中心化交易所。去中心化交易所:交易行為直接發(fā)生在區(qū)塊鏈上,數(shù)字貨幣會直接發(fā)回使用者的錢包,或是保存在區(qū)塊鏈上的智能合約。這樣直接在鏈上交易的好處在于交易所不會持有用戶大量的數(shù)字貨幣,所有的數(shù)字貨幣會儲存在用戶的錢包或平臺的智能合約上。去中心化交易通過技術(shù)手段在信任層面去中心化,也可以說是無需信任,每筆交易都通過區(qū)塊鏈進行公開透明,不負責保管用戶的資產(chǎn)和私鑰等信息,用戶資金的所有權(quán)完全在自己手上,具有非常好的個人數(shù)據(jù)安全和隱私性。目前市面上的去中心化交易所有WhaleEx、Bancor、dYdX等。中心化交易所:目前熱門的交易所大多都是采用中心化技術(shù)的交易所,使用者通常是到平臺上注冊,并經(jīng)過一連串的身份認證程序(KYC)后,就可以開始在上面交易數(shù)字貨幣。用戶在使用中心化交易所時,其貨幣交換不見得會發(fā)生在區(qū)塊鏈上,取而代之的可能僅是修改交易所數(shù)據(jù)庫內(nèi)的資產(chǎn)數(shù)字,用戶看到的只是賬面上數(shù)字的變化,交易所只要在用戶提款時準備充足的數(shù)字貨幣可供匯出即可。當前的主流交易大部分是在中心化交易所內(nèi)完成的,目前市面上的中心化交易所有幣安,火幣,OKEx等。

(十)節(jié)點 Node在傳統(tǒng)互聯(lián)網(wǎng)領(lǐng)域,企業(yè)所有的數(shù)據(jù)運行都集中在一個中心化的服務(wù)器中,那么這個服務(wù)器就是一個節(jié)點。由于區(qū)塊鏈是去中心化的分布式數(shù)據(jù)庫,是由千千萬萬個“小服務(wù)器”組成。區(qū)塊鏈網(wǎng)絡(luò)中的每一個節(jié)點,就相當于存儲所有區(qū)塊數(shù)據(jù)的每一臺電腦或者服務(wù)器。所有新區(qū)塊的生產(chǎn),以及交易的驗證與記帳,并將其廣播給全網(wǎng)同步,都由節(jié)點來完成。節(jié)點分為“全節(jié)點”和“輕節(jié)點”,全節(jié)點就是擁有全網(wǎng)所有的交易數(shù)據(jù)的節(jié)點,那么輕節(jié)點就是只擁有和自己相關(guān)的交易數(shù)據(jù)節(jié)點。由于每一個全節(jié)點都保留著全網(wǎng)數(shù)據(jù),這意味著,其中一個節(jié)點出現(xiàn)問題,整個區(qū)塊鏈網(wǎng)絡(luò)世界也依舊能夠安全運行,這也是去中心化的魅力所在。

(十一) RPC 遠程過程調(diào)用(Remote ProcedureCall,縮寫為 RPC)是一個計算機通信協(xié)議。以太坊 RPC 接口是以太坊節(jié)點與其他系統(tǒng)交互的窗口,以太坊提供了各種 RPC 調(diào)用:HTTP、IPC、WebSocket 等等。在以太坊源碼中,server.go是核心邏輯,負責 API 服務(wù)的注入,以及請求處理、返回。http.go實現(xiàn) HTTP 的調(diào)用,websocket.go實現(xiàn) WebSocket 的調(diào)用,ipc.go實現(xiàn) IPC 的調(diào)用。以太坊節(jié)點默認在 8545 端口提供了 JSON RPC 接口,數(shù)據(jù)傳輸采用 JSON 格式,可以執(zhí)行 Web3 庫的各種命令,可以向前端(例如imToken、Mist 等錢包客戶端)提供區(qū)塊鏈上的信息。

(十二)以太坊黑色情人節(jié)漏洞 ETH Black Valentine\'s Day2018 年 3 月 20 日,慢霧安全團隊觀測到一起自動化盜幣的攻擊行為,攻擊者利用以太坊節(jié)點Geth/Parity RPCAPI 鑒權(quán)缺陷,惡意調(diào)用eth_sendTransaction盜取代幣,持續(xù)時間長達兩年,單被盜的且還未轉(zhuǎn)出的以太幣價值就高達現(xiàn)價 2 千萬美金(以當時 ETH 市值計算),還有代幣種類 164 種,總價值難以估計(很多代幣還未上交易所正式發(fā)行)。

(十三)共識 Consensus共識算法主要是解決分布式系統(tǒng)中,多個節(jié)點之間對某個狀態(tài)達成一致性結(jié)果的問題。分布式系統(tǒng)由多個服務(wù)節(jié)點共同完成對事務(wù)的處理,分布式系統(tǒng)中多個副本對外呈現(xiàn)的數(shù)據(jù)狀態(tài)需要保持一致性。由于節(jié)點的不可靠性和節(jié)點間通訊的不穩(wěn)定性,甚至節(jié)點作惡,偽造信息,使得節(jié)點之間出現(xiàn)數(shù)據(jù)狀態(tài)不一致性的問題。通過共識算法,可以將多個不可靠的單獨節(jié)點組建成一個可靠的分布式系統(tǒng),實現(xiàn)數(shù)據(jù)狀態(tài)的一致性,提高系統(tǒng)的可靠性。

區(qū)塊鏈系統(tǒng)本身作為一個超大規(guī)模的分布式系統(tǒng),但又與傳統(tǒng)的分布式系統(tǒng)存在明顯區(qū)別。由于它不依賴于任何一個中央權(quán)威,系統(tǒng)建立在去中心化的點對點網(wǎng)絡(luò)基礎(chǔ)之上,因此分散的節(jié)點需要就交易的有效與否達成一致,這就是共識算法發(fā)揮作用的地方,即確保所有節(jié)點都遵守協(xié)議規(guī)則并保證所有交易都以可靠的方式進行。由共識算法實現(xiàn)在分散的節(jié)點間對交易的處理順序達成一致,這是共識算法在區(qū)塊鏈系統(tǒng)中起到的最主要作用。區(qū)塊鏈系統(tǒng)中的共識算法還承擔著區(qū)塊鏈系統(tǒng)中激勵模型和治理模型中的部分功能,為了解決在對等網(wǎng)絡(luò)中(P2P),相互獨立的節(jié)點如何達成一項決議問題的過程。簡而言之,共識算法是在解決分布式系統(tǒng)中如何保持一致性的問題。

(十四)工作量證明PoW(Proof of Work)PoW(Proof of Work)是歷史上第一個成功的去中心化區(qū)塊鏈共識算法。工作量證明是大多數(shù)人所熟悉的,被比特幣、以太坊,萊特幣等主流公鏈廣泛使用。

工作量證明要求節(jié)點參與者執(zhí)行計算密集型的任務(wù),但是對于其他網(wǎng)絡(luò)參與者來說易于驗證。在比特幣的例子中,礦工競相向由整個網(wǎng)絡(luò)維護的區(qū)塊鏈賬本中添加所收集到的交易,即區(qū)塊。為了做到這一點,礦工必須第一個準確計算出“nonce”,這是一個添加在字符串末尾的數(shù)字,用來創(chuàng)建一個滿足開頭特定個數(shù)為零的哈希值。不過存在采礦的大量電力消耗和低交易吞吐量等缺點。

(十五)權(quán)益證明PoS(Proof of Stake)PoS(Proof of Stake)——權(quán)益證明機制,一種主流的區(qū)塊鏈共識算法,目的是為了讓區(qū)塊鏈里的分布式節(jié)點達成共識,它往往和工作量證明機制(Proof of Work)一起出現(xiàn),兩種都被認為是區(qū)塊鏈共識算法里面的主流算法之一。作為一種算法,它通過持幣人的同意來達成共識,目的是確定出新區(qū)塊,這過程相對于PoW,不需要硬件和電力,且效率更高。

PoS共識中引入了 Stake 的概念,持幣人將代幣進行 Staking,要求所有的參與者抵押一部分他們所擁有的 Token 來驗證交易,然后獲得出塊的機會,PoS共識中會通過選舉算法,按照持幣量比例以及 Token 抵押時長,或者是一些其他的方式,選出打包區(qū)塊的礦工。礦工在指定高度完成打包交易,生成新區(qū)塊,并廣播區(qū)塊,廣播的區(qū)塊經(jīng)過PoS共識中另外一道"門檻",驗證人驗證交易,通過驗證后,區(qū)塊得到確認。這樣一輪PoS的共識過程就進行完成了。權(quán)益證明通過長期綁定驗證者的利益和整個網(wǎng)絡(luò)的利益來阻止不良行為。鎖定代幣后,如果驗證者存在欺詐性交易,那么他們所抵押的 Token 也會被削減。

(十六)委托權(quán)益證明DPoS(Delegate Proof of Stake)

委托權(quán)益證明,其雛形誕生在 2013 年 12 月 8 日,Daniel Larimer 在bitsharetalk首次談及用投票選擇出塊人的方式,代替PoS中可能出現(xiàn)的選舉隨機數(shù)被操縱的問題。在DPoS中,讓每一個持幣者都可以進行投票,由此產(chǎn)生一定數(shù)量的代表 ,或者理解為一定數(shù)量的節(jié)點或礦池,他們彼此之間的權(quán)利是完全相等的。持幣者可以隨時通過投票更換這些代表,以維系鏈上系統(tǒng)的“長久純潔性”。在某種程度上,這很像是國家治理里面的代議制,或者說是人大代表制度。這種制度最大的好處就是解決了驗證人過多導(dǎo)致的效率低下問題,當然,這種制度也有很明顯的缺點,由于 “代表”制度,導(dǎo)致其一直飽受中心化詬病。

(十七)多簽(Multi-sig)多簽(Multi-sig)指的是需要多個簽名才能執(zhí)行的操作(這些簽名是不同私鑰生成的)。這可用于提供更高的安全性,即使丟失單個私鑰的話也不會讓攻擊者取得帳戶的權(quán)限,多個值得信賴的各方必須同時批準更新,否則無效。我們都知道,一般來說一個比特幣地址對應(yīng)一個私鑰,動用這個地址中的資金需要私鑰的持有者發(fā)起簽名才行。而多重簽名技術(shù),簡單來說,就是動用一筆資金時需要多個私鑰簽名才有效。多簽的一個優(yōu)勢就是可以多方對一筆付款一起達成共識,才能支付成功。

(十八)軟分叉(Soft-fork)軟分叉(Soft-fork)更多情況下是一種協(xié)議升級,當新共識規(guī)則發(fā)布后,沒有升級的舊節(jié)點并不會意識到代碼已經(jīng)發(fā)生改變,而繼續(xù)生產(chǎn)不合法的區(qū)塊,就會產(chǎn)生臨時性分叉,但新節(jié)點可以兼容舊節(jié)點,即新舊節(jié)點始終在同一條鏈上工作。

(十九)硬分叉(Hard-fork)硬分叉(Hard-fork)是區(qū)塊鏈發(fā)生永久性分歧,在新共識規(guī)則發(fā)布后,已經(jīng)升級的節(jié)點無法驗證未升級節(jié)點產(chǎn)生的區(qū)塊,未升級節(jié)點也無法驗證已經(jīng)升級的節(jié)點產(chǎn)生的區(qū)塊,即新舊節(jié)點互不兼容,通常硬分叉就會發(fā)生,原有正常的一條鏈被分成了兩條鏈(已升級的一條鏈和未升級的一條鏈,且這兩條鏈互不兼容)。

(二十)智能合約(Smart Contract)并不是一個新的概念,早在 1995 年就由跨領(lǐng)域法律學(xué)者 Nick Szabo 提出:智能合約是一套以數(shù)字形式定義的承諾(Promises),包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議。在區(qū)塊鏈領(lǐng)域中,智能合約本質(zhì)可以說是一段運行在區(qū)塊鏈網(wǎng)絡(luò)中的代碼,它以計算機指令的方式實現(xiàn)了傳統(tǒng)合約的自動化處理,完成用戶所賦予的業(yè)務(wù)邏輯。

二、攻擊方法介紹

(一)惡意挖礦攻擊(Cryptojacking)惡意挖礦攻擊(Cryptojacking)是一種惡意行為,指未經(jīng)授權(quán)的情況下劫持用戶設(shè)備挖掘加密貨幣。通常,攻擊者會劫持受害者設(shè)備(個人 PC 或服務(wù)器)的處理能力和帶寬,由于加密貨幣挖掘需要大量算力,攻擊者會嘗試同時感染多個設(shè)備,這樣他們能夠收集到足夠的算力來執(zhí)行這種低風險和低成本的挖礦活動。一般惡意挖礦軟件會誘導(dǎo)用戶在計算機上加載挖礦代碼,或通過使用類似網(wǎng)絡(luò)釣魚的方法,如惡意鏈接、電子郵件或是在網(wǎng)站里植入挖礦腳本等方式,使系統(tǒng)無意中被隱藏的加密挖礦程序感染進而完成攻擊行為。近年來,隨著加密貨幣價格的上漲,更加復(fù)雜的惡意軟件被開發(fā)出來,使惡意挖礦攻擊事件層出不窮。

在此我們?yōu)榇蠹姨峁讞l建議防范惡意挖礦攻擊:

1、注意設(shè)備性能和 CPU 利用率;

2、在 Web 瀏覽器上安裝挖礦腳本隔離插件,例如MinerBlock,NoCoin和 Adblocker;

3、小心電子郵件附件和鏈接;

4、安裝一個值得信賴的殺毒軟件,讓軟件應(yīng)用程序和操作系統(tǒng)保持最新狀態(tài)。

(二)無利益攻擊(Nothing at Stake Attack)無利益攻擊(Nothing at Stake Attack),是在PoS共識機制下一個有待解決的問題,其問題的本質(zhì)可以簡單概括為“作惡無成本,好處無限多”。當PoS共識系統(tǒng)出現(xiàn)分叉(Fork)時,出塊節(jié)點可以在“不受任何損失”的前提下,同時在兩個分叉上出塊;無論哪一個分叉后面被公認為主鏈,該節(jié)點都可以獲得“所有收益”且不會有任何成本損失。這就很容易給某些節(jié)點一種動力去產(chǎn)生新的分叉,支持或發(fā)起不合法交易,其他逐利的出塊節(jié)點會同時在多條鏈(窗口)上排隊出塊支持新的分叉。隨著時間的推移,分叉越來越多,非法交易,作惡猖狂。區(qū)塊鏈將不再是唯一鏈,所有出塊節(jié)點沒有辦法達成共識。為了預(yù)防這樣的情況發(fā)生,許多類PoS共識機制對此的解決方法是引入懲罰機制,對作惡的節(jié)點進行經(jīng)濟懲罰(Slashing),以建立更加穩(wěn)定的網(wǎng)絡(luò)。DPoS實際上也是無利益攻擊的解決方案之一,由上文我們可知DPoS這個機制由持幣人選出出塊節(jié)點來運營網(wǎng)絡(luò),出塊節(jié)點會將一部分獎勵分給投票者。

(三)雙花攻擊(Double Spend Attack)雙花攻擊(Double Spend Attack)即一筆錢花了兩次,雙重支付,利用貨幣的數(shù)字特性兩次或多次使用“同一筆錢”完成支付。雙花不會產(chǎn)生新的 Token,但能把自己花出去的錢重新拿回來。簡單說就是,攻擊者將一筆 Token 轉(zhuǎn)到另外一個地址,通常是轉(zhuǎn)到交易所進行套現(xiàn),然后再利用一些攻擊手法對轉(zhuǎn)賬交易進行回滾。目前有常見的幾種手法能夠引發(fā)雙花攻擊:

1. Race Attack這種攻擊主要通過控制礦工費來實現(xiàn)雙花。攻擊者同時向網(wǎng)絡(luò)中發(fā)送兩筆交易,一筆交易發(fā)給自己(為了提高攻擊成功的概率,他給這筆交易增加了足夠的礦工費),一筆交易發(fā)給商家。由于發(fā)送給自己的交易中含有較高的手續(xù)費,會被礦工優(yōu)先打包進區(qū)塊的概率比較高。這時候這筆交易就會先于發(fā)給商家的那筆交易,那么發(fā)給商家的交易就會被回滾。對于攻擊者來說,通過控制礦工費,就實現(xiàn)了同一筆 Token 的“雙花”。

2. Finney Attack攻擊者主要通過控制區(qū)塊的廣播時間來實現(xiàn)雙花,攻擊對象針對的是接受 0 確認的商家。假設(shè)攻擊者挖到區(qū)塊,該區(qū)塊中包含著一個交易,即 A 向 B 轉(zhuǎn)了一定數(shù)量的 Token,其中 A 和 B 都是攻擊者的地址。但是攻擊者并不廣播這個區(qū)塊,而是立即找到一個愿意接受 0 確認交易的商家向他購買一個物品,向商家發(fā)一筆交易,用 A 向商家的地址 C 支付,發(fā)給商家的交易廣播出去后,攻擊者再把自己之前挖到的區(qū)塊廣播出去,由于發(fā)給自己的交易先于發(fā)給商家的交易,對于攻擊者來說,通過控制區(qū)塊的廣播時間,就實現(xiàn)了同一筆 Token 的“雙花”。

3. Vector76attackVector76 Attack 又稱“一次確認攻擊”,也就是交易確認一次后仍然可以回滾,是 Finney Attack 和 Race Attack 的組合。攻擊者創(chuàng)建兩個節(jié)點,節(jié)點 A 連接到商家節(jié)點,節(jié)點 B 連接到區(qū)塊鏈網(wǎng)絡(luò)中的其他節(jié)點。接著,攻擊者用同一筆 Token 發(fā)起兩筆交易,一筆交易發(fā)送給商家地址,我們稱為交易 1;一筆交易發(fā)送給自己的錢包地址,我們稱為交易 2。與上面說的 Race Attack 一樣,攻擊者對交易 2 添加了較高的礦工費從而提高了礦工的打包概率,此時,攻擊者并沒有把這兩筆交易廣播到網(wǎng)絡(luò)中去。接著,攻擊者開始在交易 1 所在的分支上進行挖礦,這條分支我們命名為分支 1。攻擊者挖到區(qū)塊后,并沒有廣播出去,而是同時做了兩件事:在節(jié)點 A 上發(fā)送交易 1,在節(jié)點 B 上發(fā)送交易 2。由于節(jié)點 A 只連接了商家節(jié)點,所以當商家節(jié)點想把交易 1 傳給其它對等節(jié)點時,連接了更多節(jié)點的節(jié)點 B,已經(jīng)把交易 2 廣播給了網(wǎng)絡(luò)中的大部分節(jié)點。于是,從概率上來講,交易 2 就更有可能被網(wǎng)絡(luò)認定為是有效的,交易 1 被認定為無效。交易 2 被認為有效后,攻擊者立即把自己之前在分支 1 上挖到的區(qū)塊,廣播到網(wǎng)絡(luò)中。這時候,這個接受一次確認就支付的商家,會確認交易成功,然后攻擊者就可以立即變現(xiàn)并轉(zhuǎn)移資產(chǎn)。同時,由于分支 2 連接的更多節(jié)點,所以礦工在這個分支上挖出了另一個區(qū)塊,也就是分支 2 的鏈長大于分支 1 的鏈長。于是,分支 1 上的交易就會回滾,商家之前支付給攻擊者的交易信息就會被清除,但是攻擊者早已經(jīng)取款,實現(xiàn)了雙花。

4. 51% attack攻擊者占有超過全網(wǎng) 50% 的算力,在攻擊者控制算力的這段時間,他可以創(chuàng)造一條高度大于原來鏈的新鏈。那么舊鏈中的交易會被回滾,攻擊者可以使用同一筆 Token 發(fā)送一筆新的交易到新鏈上。(四)異形攻擊(Alien Attack)異形攻擊(Alien Attack)實際上是一個所有公鏈都可能面臨的問題,又稱地址池污染,是指誘使同類鏈的節(jié)點互相侵入和污染的一種攻擊手法,漏洞的主要原因是同類鏈系統(tǒng)在通信協(xié)議上沒有對不同鏈的節(jié)點做識別。這種攻擊在一些參考以太坊通信協(xié)議實現(xiàn)的公鏈上得到了復(fù)現(xiàn):以太坊同類鏈,由于使用了兼容的握手協(xié)議,無法區(qū)分節(jié)點是否屬于同個鏈,利用這一點,攻擊者先對以太坊節(jié)點地址進行收集并進行惡意握手操作,通過跟節(jié)點握手達成污染地址池的目的,使得不同鏈的節(jié)點互相握手并把各自地址池里已知的節(jié)點推送給了對方,導(dǎo)致更多的節(jié)點互相污染,最終擴散致整個網(wǎng)絡(luò)。遭受異形攻擊的節(jié)點通常會通信性能下降,最終造成節(jié)點阻塞、主網(wǎng)異常等現(xiàn)象。相關(guān)公鏈需要注意持續(xù)保持主網(wǎng)健康狀態(tài)監(jiān)測,以免出現(xiàn)影響主網(wǎng)穩(wěn)定的攻擊事件出現(xiàn)。

(五)釣魚攻擊(Phishing)所謂“釣魚攻擊(Phishing)”,指的是攻擊者偽裝成可以信任的人或機構(gòu),通過電子郵件、通訊軟件、社交媒體等方式,以獲取收件人的用戶名、密碼、私鑰等私密信息。隨著技術(shù)的發(fā)展,網(wǎng)絡(luò)釣魚攻擊不僅可以托管各種惡意軟件和勒索軟件攻擊,而且更糟糕的是這些攻擊正在呈現(xiàn)不斷上升的趨勢。建議用戶保持警惕,通過即時通訊 App、短信或電子郵件獲取到的每條信息都需要謹慎對待,不要在通過點擊鏈接到達的網(wǎng)站上輸入憑據(jù)或私鑰,在交易時盡可能的使用硬件錢包和雙因素認證(2FA),生態(tài)中的項目方在攻擊者沒有確切告知漏洞細節(jié)之前,不要給攻擊者轉(zhuǎn)賬,若項目方無法準確判斷和獨自處理,可以聯(lián)系安全公司協(xié)助處理。

(六)木馬攻擊(Trojan Horse Attack)木馬攻擊(Trojan Horse Attack)是指攻擊者通過隱藏在正常程序中的一段具有特殊功能的惡意代碼,如具備破壞和刪除文件、發(fā)送密碼、記錄鍵盤和 DDoS 攻擊等特殊功能的后門程序,將控制程序寄生于被控制的計算機系統(tǒng)中,里應(yīng)外合,對被感染木馬病毒的計算機實施操作。可用來竊取用戶個人信息,甚至是遠程控制對方的計算機而加殼制作,然后通過各種手段傳播或者騙取目標用戶執(zhí)行該程序,以達到盜取密碼等各種數(shù)據(jù)資料等目的。在區(qū)塊鏈領(lǐng)域,諸如勒索木馬、惡意挖礦木馬一直是行業(yè)內(nèi)令人頭疼的安全頑疾,據(jù)幣世界報道,隨著比特幣的飆升,推動整個數(shù)字加密貨幣價格回升,與幣市密切相關(guān)的挖礦木馬開始新一輪活躍,僅 2019 年上半年挖礦木馬日均新增 6 萬個樣本,通過分析發(fā)現(xiàn)某些新的挖礦木馬家族出現(xiàn)了快速、持續(xù)更新版本的現(xiàn)象,其功能設(shè)計越來越復(fù)雜,在隱藏手法、攻擊手法方面不斷創(chuàng)新,與殺軟廠商的技術(shù)對抗正在不斷增強。

(七)供應(yīng)鏈攻擊(Supply Chain Attack)供應(yīng)鏈攻擊(Supply Chain Attack)是一種非??膳碌墓舴绞?,防御上很難做到完美規(guī)避,由于現(xiàn)在的軟件工程,各種包/模塊的依賴十分頻繁、常見,而開發(fā)者們很難做到一一檢查,默認都過于信任市面上流通的包管理器,這就導(dǎo)致了供應(yīng)鏈攻擊幾乎已經(jīng)成為必選攻擊之一。把這種攻擊稱成為供應(yīng)鏈攻擊,是為了形象說明這種攻擊是一種依賴關(guān)系,一個鏈條,任意環(huán)節(jié)被感染都會導(dǎo)致鏈條之后的所有環(huán)節(jié)出問題。供應(yīng)鏈攻擊防不勝防且不計代價,建議所有數(shù)字加密貨幣相關(guān)項目(如交易所、錢包、DApp等)都應(yīng)該強制至少一名核心技術(shù)完整審查一遍所有第三方模塊,看看是否存在可疑代碼,也可以通過抓包查看是否存在可疑請求。

(八)交易回滾攻擊(Roll Back Attack)交易回滾攻擊(Roll Back Attack),故名思義,指的是能對交易的狀態(tài)進行回滾。回滾具體是什么意思呢?回滾具體指的是將已經(jīng)發(fā)生的狀態(tài)恢復(fù)成它未發(fā)生時候的樣子。那么,交易回滾的意思就是將已經(jīng)發(fā)生的交易變成未發(fā)生的狀態(tài)。即攻擊者本來已經(jīng)發(fā)生了支付動作,但是通過某些手段,讓轉(zhuǎn)賬流程發(fā)生錯誤,從而回滾整個交易流程,達到交易回滾的目的,這種攻擊手法多發(fā)于區(qū)塊鏈上的的智能合約游戲當中,當用戶的下注動作和合約的開獎動作在一個交易內(nèi)的時候,即內(nèi)聯(lián)交易。攻擊者就可以通過交易發(fā)生時檢測智能合約的某些狀態(tài),獲知開獎信息,根據(jù)開獎信息選擇是否對下注交易進行回滾。建議開發(fā)者們不要將用戶的下注與開獎放在同一個交易內(nèi),防止攻擊者通過檢測智能合約中的開獎狀態(tài)實現(xiàn)交易回滾攻擊。

(九)交易排擠攻擊(Transaction Congestion Attack)交易排擠攻擊(Transaction Congestion Attack)是針對 EOS 上的使用 defer 進行開獎的游戲合約的一種攻擊手法,攻擊者可以通過某些手段,在游戲合約的 defer 開獎交易前發(fā)送大量的 defer 交易,惡意侵占區(qū)塊內(nèi)的 CPU 資源,使得智能合約內(nèi)本應(yīng)在指定區(qū)塊內(nèi)執(zhí)行的 defer 開獎交易因資源不足無法執(zhí)行,只能去到下一個區(qū)塊才執(zhí)行。由于很多 EOS 上的游戲智能合約使用區(qū)塊信息作為智能合約本身的隨機數(shù),同一個 defer 開獎交易在不同區(qū)塊內(nèi)的執(zhí)行結(jié)果是不一樣的。通過這樣的方式,攻擊者在獲知無法中獎的時候,就通過發(fā)送大量的 defer 交易,強行讓智能合約重新開獎,從而達到攻擊目的。建議智能合約開發(fā)者對在不同區(qū)塊內(nèi)執(zhí)行結(jié)果不同的關(guān)鍵的操作不要采用 defer 交易的方式,降低合約被攻擊的風險。

(十)隨機數(shù)攻擊(Random Number Attack)隨機數(shù)攻擊(Random Number Attack),就是針對智能合約的隨機數(shù)生成算法進行攻擊,預(yù)測智能合約的隨機數(shù)。目前區(qū)塊鏈上很多游戲都是采用的鏈上信息(如區(qū)塊時間,未來區(qū)塊哈希等)作為游戲合約的隨機數(shù)源,也稱隨機數(shù)種子。使用這種隨機數(shù)種子生成的隨機數(shù)被稱為偽隨機數(shù)。偽隨機數(shù)不是真的隨機數(shù),存在被預(yù)測的可能。當使用可被預(yù)測的隨機數(shù)種子生成隨機數(shù)的時候,一旦隨機數(shù)生成的算法被攻擊者猜測到或通過逆向等其他方式拿到,攻擊者就可以根據(jù)隨機數(shù)的生成算法預(yù)測游戲即將出現(xiàn)的隨機數(shù),實現(xiàn)隨機數(shù)預(yù)測,達到攻擊目的。建議智能合約開發(fā)者不要使用不安全的隨機數(shù)種子生成隨機數(shù),降低合約被攻擊的風險。

(十一)hard_fail狀態(tài)攻擊hard_fail Attackhard_fail是什么呢?簡單來說就是出現(xiàn)錯誤但是沒有使用錯誤處理器(error handler)處理錯誤,比方說使用onerror捕獲處理,如果說沒有onerror捕獲,就會hard_fail。EOS 上的交易狀態(tài)記錄分為 executed,soft_fail, hard_fail, delayed 和 expired 這 5 種狀態(tài),通常在鏈上大部分人觀察到的交易,都是 executed 的,或者 delayed 的,而沒有失敗的交易,這就導(dǎo)致大部分開發(fā)者誤以為 EOS 鏈上沒有失敗的交易記錄,從而忽略了對交易狀態(tài)的檢查。攻擊者利用這個細節(jié),針對鏈上游戲或交易所進行攻擊,構(gòu)造執(zhí)行狀態(tài)為hard_fail的交易,欺騙鏈上游戲或交易所進行假充值攻擊,從而獲利。在此提醒交易所和 EOS DApp游戲開發(fā)者在處理轉(zhuǎn)賬交易的時候需要嚴格校驗交易狀態(tài),確保交易執(zhí)行狀態(tài)為 executed。

(十二)重放攻擊 Replay Attack重放攻擊(Replay Attack),是針對區(qū)塊鏈上的交易信息進行重放,一般來說,區(qū)塊鏈為了保證不可篡改和防止雙花攻擊的發(fā)生,會對交易進行各種驗證,包括交易的時間戳,nonce,交易 id 等,但是隨著各種去中心化交易所的興起,在智能合約中驗證用戶交易的場景越來越多。這種場景一般是需要用戶對某一條消息進行簽名后上傳給智能合約,然后在合約內(nèi)部進行驗簽。但由于用戶的簽名信息是會上鏈的,也就是說每個人都能拿到用戶的簽名信息,當在合約中校驗用戶簽名的時候,如果被簽名的消息不存在隨著交易次數(shù)變化的變量,如時間戳,nonce 等,攻擊者就可以拿著用戶的簽名,偽造用戶發(fā)起交易,從而獲利。這是一種最早出現(xiàn)于DApp生態(tài)初期的攻擊形態(tài),由于開發(fā)者設(shè)計的開獎隨機算法存在嚴重缺陷,使得攻擊者可利用合約漏洞重復(fù)開獎,屬于開發(fā)者較為容易忽略的錯誤。因此,開發(fā)者們在鏈上進行驗簽操作的時候,需要對被簽名消息加上各種可變因子,防止攻擊者對鏈上簽名進行重放,造成資產(chǎn)損失。

(十三)重入攻擊 Reentrancy Attack重入攻擊(Reentrancy Attack)首次出現(xiàn)于以太坊,對應(yīng)的真實攻擊為 The DAO 攻擊,此次攻擊還導(dǎo)致了原來的以太坊分叉成以太經(jīng)典(ETC)和現(xiàn)在的以太坊(ETH)。由于項目方采用的轉(zhuǎn)賬模型為先給用戶發(fā)送轉(zhuǎn)賬然后才對用戶的余額狀態(tài)進行修改,導(dǎo)致惡意用戶可以構(gòu)造惡意合約,在接受轉(zhuǎn)賬的同時再次調(diào)用項目方的轉(zhuǎn)賬函數(shù)。利用這樣的方法,導(dǎo)致用戶的余額狀態(tài)一直沒有被改變,卻能一直提取項目方資金,最終導(dǎo)致項目方資金被耗光。提醒智能合約開發(fā)者在進行智能合約開發(fā)時,在處理轉(zhuǎn)賬等關(guān)鍵操作的時候,如果智能合約中存儲了用戶的資金狀態(tài),要先對資金狀態(tài)進行修改,然后再進行實際的資金轉(zhuǎn)賬,避免重入攻擊。

(十四)假充值攻擊 False Top-up假充值攻擊(False Top-up),分為針對智能合約的假充值攻擊和對交易所的假充值攻擊。在假充值攻擊中,無論是智能合約還是交易所本身,都沒有收到真實的 Token,但是用戶又確實得到了真實的充值記錄,在這種情況下,用戶就可以在沒有真正充值的情況下從智能合約或交易所中用假資產(chǎn)或不存在的資產(chǎn)竊取真實資產(chǎn)。

1. 智能合約假充值攻擊針對智能合約的假充值主要是假幣的假充值,這種攻擊手法多發(fā)于 EOS 和波場上,由于 EOS 上代幣都是采用合約的方式進行發(fā)行的,EOS 鏈的系統(tǒng)代幣同樣也是使用這種方式發(fā)行,同時,任何人也可以發(fā)行名為 EOS 的代幣。只是發(fā)行的合約帳號不一樣,系統(tǒng)代幣的發(fā)行合約為"eosio.token",而其他人發(fā)行的代幣來源于其他合約帳號。當合約內(nèi)沒有校驗 EOS 代幣的來源合約的時候,攻擊者就能通過充值攻擊者自己發(fā)布的 EOS 代幣,對合約進行假充值攻擊。而波場上的假充值攻擊主要是 TRC10 代幣的假充值攻擊,由于每一個 TRC10 都有一個特定的tokenid進行識別,當合約內(nèi)沒有對tokenid進行校驗的時候,任何人都可以以 1024 個 TRX 發(fā)行一個 TRC10 代幣對合約進行假充值。

2. 交易所假充值攻擊針對交易所的假充值攻擊分為假幣攻擊和交易狀態(tài)失敗的假充值攻擊。以 EOS 和以太坊為例。針對 EOS 可以使用名為 EOS 的假幣的方式對交易所進行假充值攻擊,如果交易所沒有嚴格校驗 EOS 的來源合約為"eosio.token",攻擊就會發(fā)生。同時,區(qū)別于 EOS,由于以太坊上會保留交易失敗的記錄,針對 ERC20 Token,如果交易所沒有校驗交易的狀態(tài),就能通過失敗的交易對交易所進行 ERC20 假充值。除此之外,hard_fail狀態(tài)攻擊也是屬于假充值攻擊的一種。建議交易所和智能合約開發(fā)者在處理轉(zhuǎn)賬的時候要充分校驗交易的狀態(tài),如果是 EOS 或波場上的交易,在處理充值時還要同時校驗來源合約是否是"eosio.token" 或tokenid是否為指定的tokenid。

(十五)短地址攻擊 Short Address Attack短地址攻擊(Short Address Attack)是針對以太坊上 ERC20 智能合約的一種攻擊形式,利用的是 EVM 中的對于輸入字節(jié)碼的自動補全機制進行攻擊。一般而言,針對 ERC20 合約中的 transfer 函數(shù)的調(diào)用,輸入的字節(jié)碼位數(shù)都是 136 字節(jié)的。當調(diào)用 ERC20 中的 transfer 函數(shù)進行 ERC20 Token 轉(zhuǎn)賬時,如果攻擊者提供的地址后有一個或多個 0,那么攻擊者就可以把地址后的零省去,提供一個缺位的地址。當對這個地址轉(zhuǎn)賬的時候,比方說轉(zhuǎn)賬 100 的 A Token,然后輸入的地址是攻擊者提供的缺位地址,這時候,經(jīng)過編碼輸入的數(shù)據(jù)是 134 字節(jié),比正常的數(shù)據(jù)少了 2 字節(jié),在這種情況下,EVM 就會對缺失的字節(jié)位在編碼數(shù)據(jù)的末尾進行補 0 湊成 136 字節(jié),這樣本來地址段缺失的 0 被數(shù)據(jù)段的 0 補齊了,而由于給地址段補 0,數(shù)據(jù)段會少 0,而數(shù)據(jù)段缺失的 0 由 EVM 自動補齊,這就像數(shù)據(jù)段向地址段移動補齊地址段缺失字節(jié)位,然后數(shù)據(jù)段缺失的字節(jié)位由 EVM 用 0 補齊。這種情況下,轉(zhuǎn)賬金額就會由 100 變成 100 * 16 的 n 次方,n 是地址缺失的 0 的個數(shù)。通過這種方式,攻擊者就能對交易所或錢包進行攻擊,盜竊交易所和錢包的資產(chǎn)。建議交易所和錢包在處理轉(zhuǎn)賬的時候,要對轉(zhuǎn)賬地址進行嚴格的校驗,防止短地址攻擊的發(fā)生。

(十六)假幣攻擊 Fake Token Attack假幣攻擊(Fake Token Attack),是針對那些在創(chuàng)建官方 Token 時采用通用創(chuàng)建模版創(chuàng)建出來的代幣,每個 Token 的識別僅根據(jù)特定的標記進行識別,如 EOS 官方 Token 的識別標記是"eosio.token"合約,波場的 TRC10 的識別標記是tokenid,以太坊的 ERC20 是用合約地址作為識別標記。那么這樣就會出現(xiàn)一個問題,如果收款方在對這些 Token 進行收款的時候沒有嚴格校驗這些 Token 特有的標記,攻擊就會發(fā)生,以 EOS 為例子,由于 EOS 官方 Token 采用的是合約來發(fā)行一個名為 EOS 的 Token,標記 EOS 本身的標識是"eosio.token" 這個發(fā)行帳號,如果在接受轉(zhuǎn)賬的時候沒有校驗這個標識,攻擊者就能用其他的帳號同樣發(fā)行一個名為 EOS 的 Token,對交易所或錢包進行假幣充值,換取真的代幣。建議交易所和錢包在處理轉(zhuǎn)賬的時候,切記要嚴格檢驗各種代幣各種標識,防止假幣攻擊。

(十七)整型溢出攻擊 Integer Overflow Attack數(shù)據(jù)的存儲是區(qū)塊鏈上重要的一環(huán)。但是每個數(shù)據(jù)類型本身是存在邊界的,例如以太坊中 uint8 類型的變量就只能存儲 0~255 大小的數(shù)據(jù),超過了就存不下了。那么如果要放一個超過數(shù)據(jù)類型大小的數(shù)字會怎樣呢?例如把 256 存進 uint8 的數(shù)據(jù)類型中,數(shù)據(jù)顯示出來會變成 1,而不是其他數(shù)值,也不會報錯,因為 uint8 本身能存一個 8 位二進制數(shù)字,最大值為 11111111,如果這個時候加 1,這個二進制數(shù)就變成了 100000001,而因為數(shù)據(jù)邊界的關(guān)系,只能拿到后 8 位,也就是 00000001,那么數(shù)字的大小就變成 1 了,這種情況我們稱為上溢。有上就有下,下溢的意思就是一個值為 0 的 uint8 數(shù)據(jù),如果這個時候?qū)λM行減 1 操作,結(jié)果會變成該數(shù)據(jù)類型所能存儲的最大值加 1 減去被減數(shù),在這個例子中是 255,也就是該數(shù)據(jù)類型所能存儲的最大值。那么如果上述兩種情況發(fā)生在智能合約當中的話,惡意用戶通過下溢的操作,操縱自己的帳號向其他帳號發(fā)送超過自己余額數(shù)量的代幣,如果合約內(nèi)沒有對余額進行檢查,惡意用戶的余額就會下溢出變成一個超大的值,這個時候攻擊者如果大量拋售這些代幣,就能瞬間破壞整個代幣的價值系統(tǒng)。建議所有的智能合約開發(fā)者在智能合約中對數(shù)據(jù)進行操作的時候,要嚴格校驗數(shù)據(jù)邊界,防止整形溢出攻擊的發(fā)生。

(十八)條件競爭攻擊 Race Condition條件競爭(Race Condition)攻擊的方式很多樣,但是核心的本質(zhì)無非是對某個條件的狀態(tài)修改的競爭。條件競爭的例子:著名的 Edgeware 鎖倉合約的拒絕服務(wù)漏洞,這個漏洞問題的本質(zhì)在于對新建的鎖倉合約的余額的這個條件進行競爭。攻擊者可以監(jiān)控所有鏈上的鎖倉請求,提前計算出鎖倉合約的地址,然后向合約地址轉(zhuǎn)賬,造成鎖倉失敗。在官方?jīng)]有修復(fù)之前,要防止這種攻擊,只能使用比攻擊者更高的手續(xù)費讓自己的鎖倉交易先行打包,從而與攻擊者形成競爭避免攻擊。最后,官方修復(fù)方案為不對鎖倉合約的余額進行強制性的相等檢查,而是采用大于等于的形式,避免了攻擊的發(fā)生。建議智能合約的開發(fā)者在智能合約中對某些狀態(tài)進行修改的時候,要根據(jù)實際情況充分考慮條件競爭的風險,防止遭受條件競爭攻擊。

(十九)越權(quán)訪問攻擊 Exceed Authority Access Attack和傳統(tǒng)安全的定義一樣,越權(quán)指的是訪問或執(zhí)行超出當前賬戶權(quán)限的操作,如本來有些操作只能是合約管理員執(zhí)行的,但是由于限制做得不嚴謹,導(dǎo)致關(guān)鍵操作也能被合約管理員以外的人執(zhí)行,導(dǎo)致不可預(yù)測的風險,這種攻擊在以太坊和 EOS 上都曾出現(xiàn)過多次。以 EOS 上著名的BetDice游戲為例,由于在游戲合約內(nèi)的路由(EOS 內(nèi)可自定義的事件轉(zhuǎn)發(fā)器)中沒有對來源賬號進行嚴格的校驗,導(dǎo)致普通用戶能通過 push action 的方式訪問到合約中的關(guān)鍵操作 transfer 函數(shù),直接繞過轉(zhuǎn)賬流程進行下注,從而發(fā)生了越權(quán)攻擊,事后雖然BetDice官方緊急修復(fù)了代碼,并嚴格限制了來源賬號,但這個漏洞已經(jīng)讓攻擊者幾乎無成本薅走BetDice獎池內(nèi)將近 5 萬 EOS。又如在以太坊使用 solidity 版本為 0.4.x 進行合約開發(fā)的時候,很多合約開發(fā)者在對關(guān)鍵函數(shù)編寫的時候不僅沒有加上權(quán)限校驗,也沒有指定函數(shù)可見性,在這種情況下,函數(shù)的默認可見性為 public,惡意用戶可以通過這些沒有進行限制的關(guān)鍵函數(shù)對合約進行攻擊。建議智能合約開發(fā)者們在進行合約開發(fā)的時候要注意對關(guān)鍵函數(shù)進行權(quán)限校驗,防止關(guān)鍵函數(shù)被非法調(diào)用造成合約被攻擊。

(二十)交易順序依賴攻擊 Transaction-Ordering Attack在區(qū)塊鏈的世界當中,一筆交易內(nèi)可能含有多個不同的交易,而這些交易執(zhí)行的順序會影響最終的交易的執(zhí)行結(jié)果,由于在挖礦機制的區(qū)塊鏈中,交易未被打包前都處于一種待打包的 pending 狀態(tài),如果能事先知道交易里面執(zhí)行了哪些其他交易,惡意用戶就能通過增加礦工費的形式,發(fā)起一筆交易,讓交易中的其中一筆交易先行打包,擾亂交易順序,造成非預(yù)期內(nèi)的執(zhí)行結(jié)果,達成攻擊。以以太坊為例,假如存在一個 Token 交易平臺,這個平臺上的手續(xù)費是通過調(diào)控合約中的參數(shù)實現(xiàn)的,假如某天平臺項目方通過一筆交易請求調(diào)高交易手續(xù)費用,這筆交易被打包后的所有買賣Token的交易手續(xù)費都要提升,正確的邏輯應(yīng)該是從這筆交易開始往后所有的 Token 買賣交易的手續(xù)費都要提升,但是由于交易從發(fā)出到被打包存在一定的延時,請求修改交易手續(xù)費的交易不是立即生效的,那么這時惡意用戶就可以以更高的手續(xù)費讓自己的交易先行打包,避免支付更高的手續(xù)費。建議智能合約開發(fā)者在進行合約開發(fā)的時候要注意交易順序?qū)灰捉Y(jié)果產(chǎn)生的影響,避免合約因交易順序的不同遭受攻擊。

(二十一)女巫攻擊 Sybil Attack傳聞中女巫是一個會魔法的人,一個人可以幻化出多個自己,令受害人以為有多人,但其實只有一個人。在區(qū)塊鏈世界中,女巫攻擊(Sybil Attack)是針對服務(wù)器節(jié)點的攻擊。攻擊發(fā)生時候,通過某種方式,某個惡意節(jié)點可以偽裝成多個節(jié)點,對被攻擊節(jié)點發(fā)出鏈接請求,達到節(jié)點的最大鏈接請求,導(dǎo)致節(jié)點沒辦法接受其他節(jié)點的請求,造成節(jié)點拒絕服務(wù)攻擊。建議在搭建全節(jié)點的情況下,服務(wù)器需要在系統(tǒng)層面上對網(wǎng)絡(luò)連接情況進行監(jiān)控,一旦發(fā)現(xiàn)某個IP連接異常就調(diào)用腳本配置 iptables 規(guī)則屏蔽異常的 IP,同時鏈開發(fā)者在進行公鏈開發(fā)時應(yīng)該在 P2P 模塊中對單 IP 節(jié)點連接數(shù)量添加控制。

(二十二)假錯誤通知攻擊 Fake Onerror Notification AttackEOS 上存在各種各樣的通知,只要在 action 中添加require_recipient命令,就能對指定的帳號通知該 action,在 EOS 上某些智能合約中,為了用戶體驗或其他原因,一般會對onerror通知進行某些處理。如果這個時候沒有對onerror通知的來源合約是否是eosio進行檢驗的話,就能使用和假轉(zhuǎn)賬通知同樣的手法對合約進行攻擊,觸發(fā)合約中對onerror的處理,從而導(dǎo)致被攻擊合約資產(chǎn)遭受損失。建議智能合約開發(fā)者在進行智能合約開發(fā)的時候需要對onerror的來源合約進行校驗,確保合約帳號為eosio帳號,防止假錯誤通知攻擊。

(二十三)粉塵攻擊 Dusting Attack粉塵攻擊(Dusting Attack)最早發(fā)生于比特幣網(wǎng)絡(luò)當中,所謂粉塵,指的是交易中的交易金額相對于正常交易而言十分地小,可以視作微不足道的粉塵。通常這些粉塵在余額中不會被注意到,許多持幣者也很容易忽略這些余額。但是由于比特幣或基于比特幣模型的區(qū)塊鏈系統(tǒng)的賬本模型是采用 UTXO 模型作為賬戶資金系統(tǒng),即用戶的每一筆交易金額,都是通過消費之前未消費的資金來產(chǎn)生新的資金。別有用意的用戶,就能通過這種機制,給大量的賬戶發(fā)送這些粉塵金額,令交易粉塵化,然后再通過追蹤這些粉塵交易,關(guān)聯(lián)出該地址的其他關(guān)聯(lián)地址,通過對這些關(guān)聯(lián)地址進行行為分析,就可以分析一個地址背后的公司或個人,破壞比特幣本身的匿名性。除此之外,由于比特幣網(wǎng)絡(luò)區(qū)塊容量大小的限制,大量的粉塵交易會造成區(qū)塊的擁堵,從而使得交易手續(xù)費提升,進而產(chǎn)生大量待打包交易,降低系統(tǒng)本身的運行效率。對于如何避免粉塵攻擊,可以在構(gòu)造交易的過程中,根據(jù)交易的類型,計算出交易的最低金額,同時對每個輸出進行判斷,如果低于該金額,則不能繼續(xù)構(gòu)造該筆交易。特別的,如果這個輸出剛好發(fā)生在找零上,且金額對于你來說不太大,則可以通過舍棄該部分的粉塵輸出,以充作交易手續(xù)費來避免構(gòu)造出粉塵交易。其次,為了保護隱私性,建議可以在構(gòu)造交易時把那些金額極小的 UTXO 舍棄掉,使用大額的 UTXO 組成交易。

(二十四)C2 攻擊 C2 AttackC2 全稱 Command and Control,翻譯過來就是命令執(zhí)行與控制,在傳統(tǒng)的網(wǎng)絡(luò)攻擊中,在通過各種漏洞進入到目標服務(wù)器后,受限于空間,通常通過網(wǎng)絡(luò)拉取二段 exploit 進行駐留,實現(xiàn)后滲透流程。所以,C2 架構(gòu)也就可以理解為,惡意軟件通過什么樣的方式獲取資源和命令,以及通過什么樣的方式將數(shù)據(jù)回傳給攻擊者。在傳統(tǒng)的攻擊手法中,攻擊者一般通過遠程服務(wù)器拉取命令到本地執(zhí)行,但是這種方式也有很明顯的缺點,就是一旦遠程服務(wù)器被發(fā)現(xiàn),后續(xù)滲透活動就無法正常進行。但是區(qū)塊鏈網(wǎng)絡(luò)提供了一個天然且不可篡改的大型數(shù)據(jù)庫,攻擊者通過把攻擊荷載(payload)寫進交易中,并通過發(fā)送交易把該命令永久的刻在區(qū)塊鏈數(shù)據(jù)庫中。通過這種方法,即使攻擊命令被發(fā)現(xiàn),也無法篡改鏈上數(shù)據(jù),無需擔心服務(wù)器被發(fā)現(xiàn)然后下線的風險。新技術(shù)不斷發(fā)展,舊有的攻擊手法也在隨著新技術(shù)的變換而不斷迭代更新。在區(qū)塊鏈的世界中只有在各方面都做好防范,才能避免來自各方面的安全攻擊。

(二十五)洗幣 Money Launderin洗幣和洗錢是一樣的,只是對象不同,洗錢指的是將一筆非法得到的金錢通過某些操作后變成正當、合法的收入。而洗幣也是一樣,指的是將非法獲取的代幣,如通過黑客攻擊、攜帶用戶資產(chǎn)跑路或通過詐騙等手段獲取的代幣,通過某些手段,將其來源變成正當、合法的來源。如通過交易所進行洗幣、智能合約中洗幣或通過某些攪拌器進行中轉(zhuǎn)、通過匿名幣種如門羅幣,Zcash等,令非法所得的資金無法被追蹤,最后成功逃過監(jiān)管達到洗幣的目的,然后通過把代幣轉(zhuǎn)換成法幣離場,完成洗幣的流程。建議各交易所應(yīng)加強 KYC 策略,增強風控等級,及時監(jiān)控交易所大資金進出,防范惡意用戶通過交易所進行洗幣,除此之外,可以通過與第三方安全機構(gòu)進行合作,及時攔截非法資產(chǎn),阻斷洗錢的可能。

(二十六)勒索 Ransom勒索是傳統(tǒng)行業(yè)中常見的攻擊行為,攻擊者通過向受害者主機發(fā)送勒索病毒對主機文件進行加密來向受害者進行資金勒索。隨著區(qū)塊鏈技術(shù)的發(fā)展,近年來,勒索開始呈現(xiàn)新的方式,如使用比特幣作為勒索的資金支付手段或使用匿名性更高的門羅幣作為資金支付手段。如著名的GandCrab病毒就是比特幣勒索病毒,受害者需要向攻擊者支付一定量的比特幣換取解密私鑰。通過這種勒索手段,GandCrab勒索病毒一年就勒索了超過 20 億美金。值得一提的是,就算向攻擊者發(fā)送比特幣,也不一定能換取解密私鑰,造成“人財兩空”的局面。建議,當資產(chǎn)已經(jīng)因勒索病毒而造成損失時,不要慌張,更不要向攻擊者支付比特幣或其他加密貨幣,同時,交易所在收到這些勒索郵件時需額外警惕,千萬不能向攻擊者支付比特幣或其他加密貨幣,必要時可尋求第三方安全公司的協(xié)助。

聲明:本文為入駐“火星號”作者作品,不代表火星財經(jīng)官方立場。

未經(jīng)許可擅自轉(zhuǎn)載本站文章,將追究相關(guān)法律責任,侵權(quán)必究。

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

以上就是關(guān)于各種pos機名詞,一文了解20種名詞解釋及26種攻擊方式的知識,后面我們會繼續(xù)為大家整理關(guān)于各種pos機名詞的知識,希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://m.afbey.com/newsone/60133.html

你可能會喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報,一經(jīng)查實,本站將立刻刪除。