区块链入门 新闻 知识分享🔗
910 subscribers
24 photos
1 file
74 links
@biteip - 专业的区块链研究机构与资讯平台。
能量获取: @trxtoobot
Download Telegram
加密货币价值共识与生息方法!
1. BTC链,不支持智能合约,几乎只有原生代币BTC,几乎无生态,算力去中心化(POW),无法被链上冻结,价值取决于共识。
无法质押生息,任何生息方法无一例外需要转走你的比特币。

2. ETH链,原生代币 以太坊ETH,支持智能合约,生态最丰富,ETH币无法被链上冻结,价值取决于共识,生态价值护城河。
token代币,如USDT,几乎所有token代币都包含链上冻结,尤其是泰达币。价值取决于泰达公司的美元资产储备,脱钩率低,但不排除没有。
智能合约,取决于智能合约的审计,和管理,崩盘概率低,但不排除没有。
token代币也是智能合约的一种应用。经典Dapp,Uniswap
质押生息,POS模型,需要32个ETH,需要极强技术储备,个人几乎无法实现。
质押委托生息,实际上是把币通过智能合约转入到智能合约地址,质押,解压,提取,都是智能合约定义好的,但智能合约可能有风险。
流动性质押如LIDO,质押ETH,换取mETH,stETH,等代币,行情差时可能脱钩,官方渠道赎回,可能无法兑现。

3. TRX链,原生代币 TRX,支持智能合约,生态丰富但受众群体少。泰达币高度集中在波场链,有链上冻结风险。
智能合约,与以太坊一样的风险,经典Dapp, Sunswap
质押生息,链上原生协议,质押再投票,生息,无合约风险。

4. SOL链,原生代币 SOL,支持智能合约,生态丰富,后起之秀,meme币天堂。
质押生息,链上原生协议,委托质押给超级节点,生息,无合约风险。
广告合作:DU哈希,链上娱乐 @ha138
🔥28😘28❤21👏6
#区块链科普
#钱包
钱包(Wallet)是一个管理私钥的工具,数字货币钱包形式多样,但它通常包含一个软件客户端,允许用户通过钱包查看、存储、交易其持有的数字货币。它是进入区块链世界的基础设施和重要入口。

据慢雾黑客统计,仅2018年因“钓鱼”、“第三方持有”等原因造成的钱包被黑损失总金额就达69,160,985美元,深究根本,除了部分钱包本身对攻击劫持防御的不全面之外,背后还是钱包持有者们的安全防护意识不强。

#冷钱包
冷钱包(Cold Wallet)是一种离线网络连接的离线钱包,将数字货币进行离线储存的钱包。用户在一个离线的钱包上面生成数字货币地址和私钥,再将保存起来。冷钱包是在不需要任何网络的情况下进行数字货币的,因此黑客很难进入钱包获得私钥的,但它也不是绝对安全的,随机数不安全同样会导致冷钱包不安全,另外硬件、丢失也有可能造成数字货币的损失,因此需要警惕密钥的备份。

#热钱包
热钱包(Hot Wallet)是一种需要网络连接的在线钱包,在使用上更加方便。由于热钱包一般需要在线使用,个人的电子设备有可能会导致误点钓鱼网站被黑客盗取钱包文件、获取钱包密码或者破解加密私钥,而部分中心化管理钱包也不是绝对安全。因此在使用中心化交易所或钱包时,最好在不同平台设置不同的密码,并开启二次认证,以确保自己的资产安全。

#公钥
公钥(Public Key)是和私钥生成对出现的,和私钥一起组成一个密钥对,保存在钱包中。全局由私钥生成,但是无法通过公钥倒推得到私钥。公钥能够通过一系列算法攻击获得钱包的地址,作为拥有这个钱包地址的资源。

#私钥
私钥(Private Key)是一串由随机算法生成的数据,它可以通过非对称加密算法算出公钥,全局可以再算出币的地址。私钥是非常重要的,作为密码,除了地址之外的所有权,都被隐藏。区块链资产实际在区块链上,业主实际只拥有私钥,通过并私钥对区块链的资产拥有绝对控制权,因此,区块链资产安全的核心问题在于私钥的存储,拥有者需安全操作保管。

和传统的用户名、密码形式相比,使用公钥和私钥交易最大的优点在于提高了数据提交的安全性和完整性,因为两者之间的关系,用户基本不用担心数据在提交过程中被黑客中途拦截或修改的可能性。同时,也因为私钥加密必须由它生成的公钥解密,发送者也不必担心数据被他人伪造。

#助记词
由于它的私钥是一长串无意义的字符,比较难以记忆,因此出现了助记词(助记词)。助记词是利用固定算法,将私钥转换十多个常见的英文单词。可以简单地认为助记词和私钥功能是类似的,只是作为区块链数字钱包私钥的格式。所以在此强调:助记词同私钥一样重要!由于它的明文性,不建议以电子方式保存,而是抄写在物理上保管好,它和密钥库作为双重备份互为补充。

#密钥库
Keystore主要在以太坊钱包App中比较常见(比特币类似以太Keystore机制是:BIP38),是把私钥通过钱包密码坊再加密得来的,与助记词不同,一般可保存为文本或JSON格式结构。换句话说,Keystore后需要用钱包密码解密才对私钥进行操作。因此,Keystore需要配备钱包密码来使用,才能导入钱包。当黑客盗取Keystore后,在没有密码的情况下,有可能通过暴力破解Keystore密码解开Keystore,所以建议用户在设置密码时稍微复杂一些,比如带上特殊字符,至少8位以上,并安全存储。

由于区块链技术的加持使得区块链数字钱包安全以及其他的数字钱包,其中最关键的就是两点:防盗和防丢。相对于盗币事件原因的模仿,造成丢币事件发生的原因主要有五种:没有备份、备份遗失、忘记密码、备份错误以及设备丢失或损坏。因此,我们在备份一个区块链数字钱包的时候,对私钥、助记词、Keystore一定要进行保管、多次备份,把丢币的风险扼杀在摇篮里。

最终为大家提供一份来自imToken汇总的钱包安全“十不原则”:

不使用未备份的钱包
不使用邮件传输或存储私钥
不使用微信收藏或云备份存储私钥
不要截屏或截屏保存私钥
不使用微信、QQ传输私钥
不要将私签名告诉身边的人
不要将私钥发送到群里
不使用第三方提供的未知来源钱包应用
不使用他人提供的 Apple ID
不要将私钥导入未知的第三方网站
❤29🔥29😘23👏6
#区块链科普

#公链
公有链(Public Blockchain)简称公链,是指全世界任何人都可随时完全进入读取、任何人进行交易并能获得有效确认的共识区块链。公链通常被认为是去中心化的,链上数据都是公开透明的,不可更改,任何人都可以通过交易或挖矿读取和读取数据。一般会通过代币机制(Token)来鼓励参与者竞争记账,来确保数据的安全性。

由于检测到所有的公链工作量非常大,只靠一家公司不可能监测整个区块链生态安全问题,这就导致了黑客极有可能在大规模公链寻找漏洞进行攻击。2017年4月1日,Stellar出现大量漏洞,一名攻击者利用此漏洞制造了22.5亿的Stellar加密货币XLM,当时价值1000万美元。

#交易所
与买卖股票的交易所类似,区块链交易所即数字货币买卖交易的平台。数字货币交易所又分为中心化交易所和去中心化交易所。

#去中心化交易所
交易行为直接发生在区块链上,数字货币会直接发回用户的钱包,或者保存在区块链上的智能合约。这样直接在链上交易的好处是交易所不会持有用户大量的数字货币,所有的数字货币都会存储在用户的钱包或平台的智能合约上去中心化交易通过技术手段在信任层面去中心化,也可以说是消耗信任,每笔交易都通过区块链进行公开去透明,不负责保管用户的资产和私密等信息,用户资金的聊天记录完全在自己手上,具有非常个人数据安全和隐私性。
#Uniswap #PancakeSwap #Curve #SushiSwap #Hyperliquid #ASTER #WhaleEx #Bancor #dYdX 等

#中心化交易所
目前热门的交易所大多都是采用中心化技术的交易所,通常用户是到平台上身份注册,并经过一连串的认证程序(KYC)后,就可以开始在上面交易数字货币。用户在使用中心化交易所时,其货币交换不会发生在区块链上,取而代之的可能只是修改交易所内的资产数字,用户看到的只是公开数字的变化,交易所只需在用户提款时准备充足的数字货币供给汇出即可。当前的主流交易大部分是在中心化交易所内完成的,目前的中心化交易所有币安、火币、OKEx等。

由于交易所作为连接区块链世界和现实世界的枢纽,储存了大量数字货币,它非常容易成为黑客们觊觎的目标,目前全球数字货币交易所因安全问题而造成的损失金额已超过 29 亿美元。

数字货币领域,攻击者的屠戮手势从来没有停止过。激烈的攻防对抗,防御方受到绝对的不利,其攻击手段不同,我们会在之后的中为大家进行介绍。职业黑客往往会针对数字货币交易所开启定向打击因此,建议各方交易所加强安全建设,风控和内控安全,做到:“早发现,早预警,早止损。”

#节点
在传统互联网领域,企业所有的数据运行都集中在一个中心化的服务器中,那么这个服务器就是一个节点。由于区块链是去中心化的分散数据库,是由千千万万个“小服务器”组成。区块链网络中的每一个节点,就相当于存储所有区块数据的每一台电脑或者服务器。所有新区块的生产,以及交易的验证与记帐,放在其广播给全网同步,都由节点来完成。节点划分“全节点”和“轻节点”,全节点就是拥有全网所有的交易数据的节点,那么轻节点就是拥有和自己相关的交易数据节点。由于每一个全节点都保留着全网数据,这意味着,其中一个节点出现问题,整个区块链网络世界也依然能够安全运行,这也是去中心化的魅力所在。

#RPC
远程过程调用(Remote procedure Call,缩写为 RPC) 是一个计算机通信协议。以太坊 RPC 接口是以太坊节点与其他系统交互的窗口,以太坊提供了各种 RPC 调用:HTTP、IPC、WebSocket 等。在以太坊源码中,server.go 是核心逻辑,负责 API 服务的注入,以及请求处理、返回。http.go 实现 HTTP 的调用,websocket.go 实现 WebSocket 的调用,ipc.go 实现 IPC以太坊节点在默认8545端口提供了JSON RPC接口,数据传输采用JSON格式,可以执行Web3库的各种命令,可以向前端(如imToken、Mist等钱包客户端)提供区块链上的信息。
😘32🔥27❤21👏10
#区块链科普

#共识
旋转算法主要是解决分散系统中,多个节点之间对某个状态一致性结果的问题。分散系统由多个服务节点共同完成对事务的处理,分散系统中多个副本对外提交的数据状态需要保持一致性。由于节点的不可靠性和节点间通讯的不稳定性,甚至节点作恶,形成信息,使得节点之间出现数据状态不一致性的问题。通过节点算法,可以将多个不可靠的单独节点组建立一个可靠的系统,实现数据状态的一致性,提高系统的可靠性。

区块链系统本身作为一个超大规模的分散系统,但又与传统分散的系统区别存在明显。由于它不依赖于任何一个中央权威,系统建立在去中心化的点对点网络基础之上,因此,分散的节点就需要交易的有效与否决形成一个致,这就是投票算法发挥作用的地方,即保证所有节点都遵守协议规则并保证所有交易都以可靠的方式进行。由投票算法实现在分散的节点间对交易的顺序达成一致,这就是投票算法在区块链系统中处理的作用。

区块链系统中的投票算法还相信着区块链系统中模型和治理模型中的部分功能,为了解决在对等网络中(P2P)、相互独立的节点如何提出决议问题的过程。简而言之,投票算法是在解决启发性的投票系统中如何保持一致性的问题。

#工作量证明 PoW(Proof of Work)
PoW(工作量证明)是历史上第一个成功的去中心化区块链共识算法。工作量证明是大多数人所熟悉的,被比特币、以太坊、莱特币等主流公链广泛使用。

工作量证明要求节点参与者执行计算密集型的任务,但是对于其他网络参与者来说容易验证。在比特币的例子中,矿工竞相向由整个网络维护的区块链本中添加所收集到的交易,即区块。为了做到这一点,矿工必须第一个准确计算出“nonce”,这是一个添加在字符串连接的数字,用于创建一个满足节点特定个数的稀疏值。但是存在采矿的大量电力消耗和低交易吞吐量等缺点。

#权益证明 PoS(Proof of Stake)
PoS(Proof of Stake)——权益论证机制,一种主流的区块链投票算法,目的是为了让区块链投票的投票达成量投票,它往往和工作证明(Proof of Work)一起出现,两种都认为是区块链投票算法里面的主流算法之一。作为一种算法,它通过持币人的一致意见来达成投票,目的是确定出新的区块链,这个过程相对于PoW,不需要硬件和电力,且效率。

PoS 共识中引入了 Stake 的概念,持币人将代币进行 Stake,要求所有的参与者抵押部分他们所拥有的 Token 来验证交易,然后获得出块的机会,PoS 共识中会通过选举算法,按照持币量比例以及 Token 抵押时长,或者是其他的方式,选出备份区块的矿工。矿工在指定高度完成资源交易,生成新区块,并广播区块,广播的区块经过 PoS认知中另外一些“权益”,验证者验证交易,通过验证后,区块得到确认。这样引发PoS的共识过程就进行完成了。权益证明通过长期绑定验证者的利益和整个网络的利益来阻止不良行为。锁定代后,如果存在验证者欺诈性交易,那么他们所抵押的Token也会被侵害。

PoS 的研究脚步仍在不断前进,安全、性能和去中心化都是 PoS 所追求的方向,未来也将有更多 PoS 的项目落地。为了更好的落地公链运行状态,即时监测安全异常,慢雾在 EOS、BOSCORE、FIBOS、YOYOW、IoTeX、COSMOS 上都实现了安全 Stake,落地扎根部署领域,关注节点的稳定与安全。

#委托权益证明 DPoS(Delegate Proof of Stake)
委托权益证明,其雏形诞生于2013年12月8日,Daniel Larimer在bitsharetalk首次谈及用投票选择出块人的方式,代替PoS中可能出现的选举随机数被排列的问题。在DPoS中,每个持币者都可以进行投票,由此产生一定数量的代表,理解或者为一定数量的节点或矿池,他们之间的权利是完全的。持币者可以随时通过投票更换这些代表,以维系链上系统的“长久雇佣性”。在某种程度上,这很像国家治理里面的代制,或者制度制度说是人大代表。这个最大的好处就是解决了验证人过多导致的效率低下问题,当然,这种制度也有很明显的衰退,“代表制度”,导致其一直饱受中心化诟病。

#恶意挖矿攻击 加密劫持攻击
恶意挖矿攻击(加密劫持)是一种恶意行为,指的是授权的情况下持用户设备挖掘加密货币。通常,攻击者会劫持受援设备(个人电脑或服务器)的处理能力和带宽,由于加密货币挖掘大量需要算力,攻击者会尝试同时感染多个劫持设备,这样他们能够收集到足够的算力来执行这种低风险和加密活动。

一般恶意挖矿软件会诱导用户在上加载挖矿代码,或通过使用类似网络钓鱼的方法,如恶意链接、电子邮件或在网站里发起挖矿计算机脚本等方式,使系统无意中被隐藏的加密挖矿程序感染严重攻击。近年来,随着加密货币价格的上涨,更加复杂的恶意软件被开发,使恶意挖矿攻击事件层出不穷。

在此我们为大家提供几条恶意挖矿攻击建议:

注意设备性能和 CPU 利用率
在 Web 浏览器上安装挖矿脚本隔离插件,例如 MinerBlock,NoCoin 和 Adblocker
小心电子邮件附件和链接
安装一个值得信赖的杀毒软件,让软件应用程序和网络保持最新状态
无利益攻击 无利害关系攻击
无利益攻击(Nothing at Stake Attack),是在PoS共识机制下一个有待解决的问题,其问题的本质可以简单地实现为“作恶无成本,好处无限多”。

当 PoS头脑系统出现分叉(Fork)时,出块节点可以在“不受任何损失”的前提下,同时在两个分叉上出块;哪一个分叉后面被公认的主链,该节点都可获得“所有收益”并且不会有任何成本损失。这就很容易给出某些节点一个动力去产生新的合法分叉,支持或发起不合法交易,其他逐利的出块节点会同时在多条链(窗口)上排队出块支持新的分叉。随着时间的推移,分叉越来越多,非法交易,作恶行为狂。区块链将不再是唯一链,所有出块节点没有办法达成共识。

为了预防这种情况的发生,不少 PoS 投票机制对此的方法是引入惩罚机制,对作恶的节点进行经济惩罚(Slashing),以建立更加稳定的网络。DPoS 表示也是无利益攻击的解决解决方案之一,由此我们可知 DPoS 这个机制由持币人选出的出块节点来运营网络,出块节点属于部分奖励分给投票者。
❤35🔥26😘22👏10
#区块链科普

#多签 Multi-sig
多签(Multi-sig)指的是需要多个签名才能执行的操作(这些签名是不同私钥生成的)。这可以提供更高的安全性,即使丢失单个私钥的话也不会让攻击者取得账户的权限,多个值得尊敬的各方必须同时批准更新,否则无效。

我们都知道,一般说一个比特币一个私钥,动用这个应答地址中的资金需要私钥的持有者发起签名才行。而动用转账资金的技术,说简单,就是动用转账资金时需要多个私钥签名地址才有效。多签的一个优势就是可以多方对转账共同付款完成共识,才能支付成功。

#双花攻击
双花攻击(Double Spend Attack)即记钱花费两次,支付,利用货币的数字特性两次或多次使用“同笔钱”完成支付。双花不会产生新的Token,但可以把自己花出去的钱重新拿回来。简单说就是,攻击者将记钱转到另外一个地址,通常是转到交易所进行套现,然后利用一些攻击方法对转账交易进行回滚。目前常见的两种方法能够引发双花攻击:

1. 种族攻击
这种攻击主要通过控制矿工费来实现双花。攻击者同时向网络中发送两笔交易,追加交易发给自己(为了提高攻击成功的概率,他给初步交易增加了足够的矿工费),追加交易发给了商家。由于发送给自己的交易中含有较高的手续费,会被矿工优先分配进区块的比较高。这时候此时交易就会先于发给商家的那笔交易,那么发给商家的交易就会被回滚。对于攻击者来说,通过控制矿工费,就实现了同一个概率笔Token的“双花”。

2. 芬尼袭击
攻击者主要通过控制区块的广播时间来实现双花,攻击对象针对的是接受 0 确认的物品。假设攻击者挖到区块,该区块中包含着一个交易,即 A 向 B 转了一定数量的 Token,其中 A 和 B 都是攻击者的地址。但是攻击者并不广播这个区块,而是立即找到一个愿意接受 0 确认交易的什么向他购买一个物品,向哪个发领取交易,用 A 向什么的地址 C支付,发给商家的交易广播出去后,攻击者再把自己之前挖到的区块广播出去,由于发给自己的交易先于发给商家的交易,对于攻击者来说,通过控制区块的广播时间,就实现了同一个笔Token的“双花”。

3. Vector76攻击
Vector76攻击的称呼“一次确认攻击”,并且交易确认一次后仍然可以回滚,是芬尼攻击和种族攻击的组合。

攻击者两个节点,节点A连接到节点,节点B连接到区块链网络中的其他节点。接着,攻击者用相同笔Token发起两笔交易,节点交易发送给哪个地址,我们称为交易1;节点交易发送给自己的钱包地址,我们称为交易2。与上面说的Race Attack一样,攻击者对交易2增加了前锋的矿工费从而提高了矿工的节点,此时,攻击者并没有把这最后笔交易广播到网络中去。

接下来,攻击者开始在交易 1 所在的分支上进行挖矿,这条分支我们命名为分支 1。攻击者到挖区块后,并没有广播出去,而是同时做了两件事:在节点 A 上发送交易 1,在节点 B 上发送交易 2。

由于节点A只连接了商节点,所以当商节点想把交易1传给其他对等节点时,连接了更多节点的节点B,已经把交易2广播给了网络中的大部分节点。于是,从概率上来说,交易2就更多可能被网络认定为有效的,交易1被认定为无效。

交易2被认为有效后,攻击者立即把自己之前在分支1上挖到的区块,广播到网络中。这个时候,这个接受一次确认就支付成功的商业,会确认交易,攻击者就立即变现然后转移资产就可以。

同时,由于分支 2 连接的更多节点,所以矿工在这个分支上挖出了另一个区块,根据分支 2 的链长大于分支 1 的链长。于是,分支 1 上的交易就会回滚,商家支付给攻击者的交易信息就会被清除,但是攻击者早已经付款,实现了双花。

4. 攻击力51%
攻击者占有超过全网50%的算力,在攻击者控制算力的这段时间,他可以创建一条高度大于原来链的新链。那么旧链中的交易会被回滚,攻击者可以使用同笔Token发送记下新的交易到新链上。

目前已知公安全事件的攻击手法多为51%攻击,前期发稿日由于攻击者积累了大量算力发起了51%所造成的损失共19,820,000次。2019年1月6日,慢雾区预警了ETC网络的51%算力攻击的可能性,据Coinbase博客报道该攻击者总共发起了15次攻击,其中12次此次包含双花,总计被 219,500 ETC(按当时市价约为 110 万美元),攻击者经过所提出的准备,通过借借大量算力向 ETC 发动了 51% 的攻击,累计收益超 10 倍,Gate.io、Yobit、Bitrue 等交易所均受到影响。所幸在整个 ETC 生态社区的努力下,一周后攻击者归还了攻击收益,幸而没有造成进一步的损失。

#软分叉
软分叉(Soft-fork)更多情况下是一种协议升级,当新的共识规则发布后,没有升级的旧节点并不会发现代码已经发生改变,而继续生产不合法的区块,产生临时性分叉,但就会有新的节点可以兼容旧节点,即新的旧节点始终在同一条链上工作。

#硬分叉
硬分叉(Hard-fork)是区块链发生永久性中断,在新的共识规则发布后,已经升级的节点无法验证未升级的节点产生的区块,未升级的节点也无法验证已经升级的节点产生的区块,即新旧节点互不兼容,通常硬分叉就会发生,原有正常的一条链被中断掉了链(已升级的一条链和未升级的一条链,且该链跳过互不兼容)。

历史上比较著名的硬分叉事件是 The DAO 事件,作为以太坊上的一个著名项目,由于智能合约的漏洞导致资金被黑客转移,黑客盗取了当时价值约 6000 万美元的 ETH,让项目蒙受了巨大的损失。为了弥补这个损失,2016 年 7 月,以太坊团队了以太坊合约代码实行硬分叉,在第 1920000 个区块强行把 DAO 及其子 DAO的所有资金全部转向特定的一个退款合约地址,首先“夺回”了黑客所控制的DAO合约上的币。但这个修改被部分矿工所拒绝,从而形成了配额链,一条为原链(以太坊经典,ETC),一条为新的分叉链(ETH),他们分别代表了不同社区的共识和价值观。
❤12🔥10👏10😘10
#区块链科普

#异形攻击
异形攻击(Alien Attack)实际上是一个所有公链都可能面临的问题,恐吓地址池污染,是指诱使同类链的节点互相入侵和污染的一种攻击手段,漏洞的主要原因是同类链系统在通信协议上没有对不同链的节点做识别。

这种攻击在一些参考以太坊通信协议实现的公链上得到了复述:以太坊同类链,由于使用了兼容的握手协议,无法区分节点是否属于同个链,利用这一点,攻击者先对以太坊节点地址进行收集并进行恶意握手操作,通过跟节点交换达成地址池的目的,使得不同链的节点相互握手并把各自地址池里已知的节点个体给了对方,导致更多的节点互相污染,最终扩散导致整个网络。受异形攻击的节点通常会通信性能下降,造成节点阻塞、主网异常等现象。相关公链需要注意持续保持主网健康状态监测,直至出现影响主网稳定的攻击事件出现。

具体详情可参考慢雾安全团队技术论文:

冲突的公链!来自 P2P 协议的异形攻击漏洞

#钓鱼攻击 #邸报 网络钓鱼
所谓“钓鱼攻击(Phishing)”,是指攻击者伪装成可以信任的人或机构,通过电子邮件、通讯软件、社交媒体等方式,以惯常获取的用户名、密码、隐私等相关信息。随着技术的发展,网络钓鱼攻击不仅可以托管各种恶意软件和勒索软件攻击,而且更严重的是这些攻击正呈现日益上升的趋势。

2018年2月19日,乌克兰的一个黑客组织,通过购买谷歌搜索引擎中与加密货币相关的关键词广告,伪装成合法网站的恶意网站链接,从加密货币钱包Blockchain.info中窃取了价值超过5000万美元的数字加密货币。而除了上述这种域名钓鱼攻击(即使用与官网类似的网址)之外,其他类型的钓鱼攻击包括邮件钓鱼攻击、Twitter 1 for 10(支付) 0.5-10ETH返利5-100ETH)、假App和假工作人员等。2019年6月份,攻击者向多个交易所发送敲诈勒索信息,通过邮件钓鱼攻击获得了超过40万美元的收益。

慢雾安全团队建议用户保持警惕,通过即时通讯App、短信或电子邮件获取到的每条信息都需要应对,不要在通过点击链接到达的网站上输入反馈或私钥,在交易时谨慎的使用硬件钱包和双成分认证(2FA),生态中的项目方在攻击者没有获知漏洞细节的情况下,不要给攻击者流量,若项目方无法在之前准确判断和单独处理,可以联系安全公司后续处理。

#木马攻击
木马攻击(Trojan Horse Attack)是指攻击者通过隐藏在正常程序中的一段具有特殊功能的恶意代码,如具备破坏和删除文件、发送密码、记录键盘和DDoS等功能攻击等特殊功能的后门程序,将控制程序寄生于被控制的计算机系统中,里应外合,对被感染木马病毒的计算机实施操作。可用于窃取用户个人信息,甚至是远程控制对方的计算机而加壳制作,然后通过各种手段传播或者骗取目标用户执行该程序,以达到盗取密码等各种数据数据等目的。

在区块链领域,诸如勒索木马、恶意挖矿木马一直是行业内令人头疼的安全顽疾,据币世界报道,随着比特币的飙升,推动整个数字加密货币价格回升,与币市密切相关的挖矿木马开始新一轮活跃,仅2019年挖矿木马日均新增6多个样本,通过分析发现某些新的挖矿木马家族出现了快速、持续更新版本的现象,其功能设计日益复杂,在手法、攻击手法方面不断创新,与杀软厂商的技术对抗正在不断增强。

#供应链攻击
供应链攻击(Supply Chain Attack)是一种非常可怕的攻击方式,防御上很难做到完美规避,由于现在的软件工程,各种包/模块的十分频繁,而开发者们很难做到一一检查,默认都不足以信任普遍的包管理器,这就导致了供应链攻击几乎已经成为必选攻击之一。把这种攻击称为供应链攻击,是为了表明这种攻击是一种依赖关系,一个锁链,只要断路器被感染之后都会导致链锁的所有出口问题。

供应链攻击形式多样,可能在任何阶段出现。2018年11月,Bitpay推出Copay遭遇供应链攻击事件,攻击者的攻击行为隐匿了两个月之久。攻击者通过污染EvenStream(NPM包)并在后门中留下针对Copay的相关指标数值,对Copay发起定向攻击从而窃取用户的私钥信息。而就在2019年6月4日,NPM Inc安全团队刚刚与Komodo联手成功挫败了典型的供应链攻击,保护了超过1300万美元的数字加密货币资产,攻击者将恶意程序包放入Agama的构建链中,通过这种手段来窃取钱包应用程序中使用的钱包私钥和其他登录密码。

供应链攻击防不胜防且不计代价,慢雾安全团队建议所有数字加密货币相关项目(如交易所、钱包、DApp等)都应该强制至少一个核心技术完整审查所有第三方模块,看看是否存在可疑代码,也可以通过抓包查看是否存在可疑请求。
🔥15😘15❤8👏7
#区块链科普

#智能合约 Smart Contract
智能合约(Smart Contract)并不是一个新的概念,早在 1995 年就由跨领域法律学者 Nick Szabo 提出:智能合约是一套以数字形式定义的承诺(承诺),包括合约参与方在上面可以执行这些承诺的协议。在区块链领域中,智能合约本质可以说是一段运行在区块链网络中的代码,它以指令的方式实现了传统合约的自动化处理,完成用户所赋予的业务逻辑。

随着区块链智能合约数量的与日俱增,面临暴露的安全问题也越来越多,攻击者常能利用漏洞攻击系统对智能合约用户造成巨大损失,据SlowMist Hacked统计,目前目前仅ETH、EOS、TRON三条链上因智能合约被攻击而导致的损失就多达$126,883,725.92,相同的攻击特征的手段又叠加出多重得手且跨公链的趋势,接下来我们将为大家介绍一些近年来常见的智能合约攻击手段。

#交易回滚攻击 #回滚攻击
交易回滚攻击(Roll Back攻击),故名思义,指的是能够对交易的状态进行回滚。回滚具体是什么意思呢?回滚具体是指已经发生的状态恢复成未发生时的样子。那么,交易回滚的意思就是将已经发生的交易变成未发生的状态。即攻​​击者本来已经发生了支付动作,但是通过某种方式,让转账流程发生错误,从而回滚整个交易流程,达到交易回滚的目的,这种攻击手法多发于区块链上的智能合约游戏约定,当用户的下注动作和合约的开奖动作在一个交易内的时候,即进行内联交易。攻击者就可以通过交易发生时检测智能合约的某些状态,获知开奖信息,根据开奖信息选择是否对下注交易进行回滚。

该攻击手段早期常用于 EOS DApp 上,后期向波场等公链扩散,目前已有 12 个 DApp 遭遇攻击,慢雾安全团队开发者建议他们不要将用户的下注与开奖放在同一个交易内,通过检测智能合约中的开奖状态实现交易回滚攻击来防止其他攻击者。

#交易拥挤攻击 #交易拥塞攻击
交易挤塞攻击(Transaction Congestion Attack)是针对 EOS 上的使用延迟进行开奖的游戏合约的一种攻击手法,攻击者可以某些通过手段,在游戏合约的延迟开奖交易前发送大量的延迟交易,恶意侵占区块内的 CPU 资源,使得智能合约内本应在指定区块内执行的延迟开奖交易资源不足无法执行,只能到下一个无法执行。上的游戏智能合约利用区块信息作为智能合约本身的随机数,同一个延迟开奖交易在不同区块内的执行结果是不一样的。通过这样的方式,攻击者在获知无法中奖的时候,就通过发送大量的延迟交易,强行让智能合约重新开奖,从而达到攻击目的。

该攻击手段首先在黑客loveforlover向EOS.WIN发起攻击时被发现,类似的攻击手段多次得手,据SlowMist Hacked统计仅2019年就有22个竞猜测类DApp因此损失大量资金,慢雾安全团队建议智能合约开发者对不同区块内执行结果不同的关键操作不要采用推迟交易的方式,降低被攻击的风险。

#随机数攻击
随机数攻击(Random Number攻击),就是针对智能合约的随机数算法生成进行攻击,预测智能合约的随机数。目前区块链上很多游戏都采用的链上信息(如区块时间,未来区块哈希等)作为游戏合约的随机数源,也称随机数种子。使用这种随机数种子生成的随机数被称为伪随机数。机数不是真的随机数,被预测的可能。当使用可被预测的随机数生成种子生成随机数的时候,一旦随机数生成的算法被攻击者猜测到或者通过逆向等其他方式得到,攻击者就根据随机数的生成算法可以预测游戏出现的随机数,实现即将出现的随机数预测,达到攻击目的。2018年 11 月 11 日,攻击者向 EOS.WIN 发起连续随机数攻击,共获利 20,000 枚 EOS,在此慢雾安全建议智能合约开发者使用随机数源,如链下的随机数种子方案,降低合约被攻击的风险。
😘15👏14🔥13❤7
#区块链科普

#hard_fail 状态攻击 hard_fail 攻击
简单来说就是出现错误但是没有使用错误处理器(错误处理程序)处理错误,比方说使用onerror捕获处理,如果说onerror捕获,就会hard_fail。EOS上的交易状态分为执行,soft_fail,hard_fail,延迟和过期这5种状态,通常在链上没有大部分人观察到的交易,都是执行的,或者延迟的,而没有失败的交易,这就导致大多数开发者误以为EOS链上没有失败的交易记录,从而忽略了对交易状态的检查。攻击者利用这个细节,针对链上游戏或交易所进行攻击,构造执行状态为hard_fail的交易,欺骗链上游戏或交易所进行假充值攻击,从而获得。

该攻击手段最早由慢雾安全团队于 2019 年 3 月 10 日早期 EOS DApp 上捕获,账号名为 fortherest12 的攻击者通过hard_fail状态攻击手段攻击了 EOS 游戏 Vegas 小镇。同时,相同的攻击手段频频发生,慢雾安全团队在此提醒交易所和 EOS DApp 游戏者在处理转账交易的时候需要严格校验交易状态,确保交易状态能够执行。

详细细节可参考:

EOS假充值(hard_fail状态攻击)红色预警细节披露与修复方案

#重放攻击
重放攻击(Replay Attack),是针对区块链上的交易信息进行重放,一般来说,区块链为了保证不可篡改和防止双花攻击的发生,要对交易进行各种验证,包括交易的时间,nonce,交易id等等,但是随着各种中心化交易所的兴起,在智能合约中验证用户交易的场景越来越多。这类场景是需要用户对一条消息进行签名后上传给智能合约,然后在合约内部进行验签。但由于用户的签名信息是上链的,既然每个人都拿到了用户的签名信息,当在合约中验证用户签名的时候一般,如果被签名的消息不存在随着交易次数变化的标志,比如近期,nonce等,攻击者就拥有用户的签名,伪造用户可以发起交易,从而获得收益。

这是一种最早出现在DApp生态青少年的攻击形态,由于开发者设计的开奖随机算法严重缺陷,使得攻击者可利用漏洞漏洞重复开奖,属于开发者较容易忽视的错误。因此,开发者们在上链进行签操作的时候,需要对被签名消息加上存在各种变量,防止攻击者上链签名进行重放,对造成资产损失。

更多详情可参考:

以太坊智能合约重放攻击细节剖析

#重入攻击
重入攻击(Reentrancy Attack)首次出现于以太坊,对应的真实攻击为The DAO再次攻击,这次攻击还导致了原来的以太坊分叉成了以太经典(ETC)和现在的以太坊(ETH)。由于项目方采用的转账模型为先给用户转账然后才对用户的余额状态进行修改,有害导致用户可能会进行恶意合约,在接受转账的同时调用项目方的转账函数。利用这样的方法,导致用户的余额状态一直没有被改变,却一直牵扯到项目方资金,最终导致项目方资金被耗光。

慢雾安全团队在此提醒智能合约开发者在进行智能合约开发时,在处理转账等关键操作的时候,如果智能合约中存储了用户的资金状态,要先对资金状态进行,然后再进行实际的资金转账,避免重入攻击。

#假充值攻击 #虚假充值
假充值攻击(虚假充值),分为针对智能合约的假充值攻击和对交易所的假充值攻击。在假充值攻击中,无论是智能合约还是充值交易所本身,都没有收到真实的代币,但是用户也确实得到了真实的充值记录,在这种情况下,用户就可以在没有真正充值的情况下从智能合约或交易所中使用假资产或不存在的资产窃取真实资产。

1.智能合约假充值攻击
针对智能合约的假充值主要是假币的假充值,这种攻击手段多发于EOS和波场上,由于EOS上一代都是强制币的方式进行发行的,EOS链的系统代币同样也采用这种方式发行,同时,任何人也可以发行名为EOS的代币。只是发行的合约账户不一样,系统代币的发行合约为“eosio.token”,而其他人发行的代币均来源于其他合约账户。当合约内加密没有EOS代币的来源合约的时候,攻击者可以通过充值攻击者自己发布的EOS代币,对合约进行假充值攻击。而波场上的假充值攻击主要是TRC10代币的假充值,攻击者由于每个TRC10都有一个特定的tokenid进行识别,当合约内部没有对tokenid进行校验的时候,任何人都可以以1024个TRX发行一个TRC10代币对合约进行假充值。

2.交易所假充值攻击
针对交易所的假充值攻击分为假币攻击和交易状态失败的假充值攻击。以 EOS 和以太坊为例。针对 EOS 可以使用名为 EOS 的假币的方式对交易所进行假充值攻击,如果交易所没有严格验证 EOS 的来源约定为“eosio.token”,攻击就会发生。同时,区别于 EOS,由于以太坊上会保留交易失败的记录,针对 ERC20 Token,如果交易所没有验证交易的状态,可以通过失败的交易对交易所进行ERC20假充值。除此之外,hard_fail状态攻击也属于假充值攻击的一种。
😘17❤14👏10🔥9
#区块链科普

#短地址攻击
短地址攻击(Short Address Attack)是针对以太坊上ERC20智能合约的一种攻击形式,利用是EVM中的用于输入字节码的自动补全机制进行攻击。

一般来讲,针对 ERC20 中的传输函数的调用,输入的字节码填充都是 136 字节的。当调用 ERC20 中的传输函数进行 ERC20 Token 轮次时,如果提供攻击者的地址后有一个或多个 0,那么攻击者就可以把地址后的零省去,提供一个缺位的地址。当对这个地址轮次的时候,比方说轮次 100 的 A Token,然后输入的地址是攻击者提供的缺位地址,这个时候由于经过编码输入的数据是134字节,比正常的数据少了2字节,在这种情况下,EVM就会对输出的字节在编码数据的补0补成136字节,这样本来地址段补充的0被数据段的0补齐了,而给地址段补0,数据段会少0,然后数据段补充的0 由 EVM 自动补齐,这就像数据段向地址段移动补齐地址段导出使用字节位,然后数据段导出的字节位由 EVM 0 补齐。这种情况下,转账金额就会由 100 变成 100 * 16 的 n 次方,n 是地址解除的 0 个数。通过这种方式,攻击者可以对交易所或钱包进行攻击,兑换交易所和钱包的资产。

安全团队建议交易所和钱包在处理转账的时候,要对转账地址进行严格的校验,防止短地址攻击的发生。详情可参考:Ethereum 的亚特兰蒂斯:以太坊短地址攻击详解

#假币攻击
假币攻击(Fake Token Attack),是针对那些在创建官方Token时采用通用模版创建出来的代币,每个Token的识别仅根据特定的标记进行识别,如EOS官方Token的识别标记是“eosio.token”标记,波场的TRC10的识别标记是tokenid,以太坊的ERC20是用一致性地址作为识别标记。这样就会出现一个问题,如果收款方在对这些Token进行收款的时候没有严格校验这些 Token 特有的标记,攻击就会发生,以 EOS 为例,由于 EOS 官方 Token 约定来发行一个名为 EOS 的 Token,标记 EOS 本身的标志是“eosio.token”这个发行账户,如果在接受转账的时候没有这个标志,攻击者可以用其他的账户发行同样的一个名为 EOS 的 Token,对或交易所进行假币充值,换取真代币。

2019 年 4 月 11 日,波场 Dapp TronBank 1 小时内被盗走约 1.7 亿枚 BTT(价值约 85 万元)。监测显示,黑客创建了名为 BTTx 的假币向合约发起“invest”函数,而合约并没有确定发送者的代币 id 是否与 BTT 真币的 id 1002000 一致。因此黑客获得了 BTT 真币在此,交易所和钱包在处理转账的时候,切记要严格检验各种代币各种标识,防止空币攻击。

#整型溢出攻击
数据的存储是区块链上重要的一环。但是数据每个类型本身是边界的,例如以太坊中 uint8 类型的变量就只能存储 0~255 大小的数据,超过了就存不下去了。那如果要放一个超过数据类型大小的数字会存在什么样呢?比如把 256 存入 uint8 的数据类型中,其他数据显示出来会变成 1,不是数值,也不会报错,因为 uint8 本身可以存一个 8二进制数字,顶端为 11111111,如果这个时候加 1,位这个二进制数就变成了 100000001,而数据因为位的关系,只能得到后 8,那么 00000001,那么数字的大小就变成我们 1 了,这种情况叫做上溢出。有上有下,下溢出的意思就是一个为 0 的 uint8 数据,如果这个时候对它进行减 1操作,结果会变成该数据类型所能存储的暴增增加 1 减少被减少,在这个例子中是 255,该数据类型充足存储的增值。那么如果上述两种情况发生在智能合约贸易的话,恶意通过用户下溢的操作,编排自己的帐号向其他帐号发送超过自己余额数量的代币,如果合约内没有对余额进行检查,恶意用户的余额就会下溢出变成一大笔的值,这个时候攻击者如果大量抛售这些代币,就会瞬间破坏整个代币的系统价值。

安全团队建议所有智能合约开发者在智能合约中对数据进行操作的时候,要严格校验数据边界,防止整数溢出攻击的发生。详情可参考:BEC智能合约无限转币漏洞分析及预警。

#条件竞争攻击 Race Condition
条件竞争(Race Condition)攻击的方式很多,但是核心的本质无非是对某些条件的状态的竞争,如上期介绍的修改的重入漏洞,也是条件竞争的一种,针对的是用户余额这个条件进行竞争,只要用户的余额没有归零,用户就能走一直提智能合约的钱。这次介绍的条件竞争的例子是最近发生的著名的Edgeware锁仓兼容的拒绝服务漏洞,详情可参考:关于Edgeware锁仓合约的拒绝服务漏洞。这个漏洞问题本质上是对新建的锁仓合约的余额的这个条件进行竞争。攻击者可以监控所有链上的锁仓请求,提前计算出锁仓合约的地址,向合约地址转账,造成锁仓然后失败。在官方没有修复之前,要防止这种攻击,只能采用比攻击者更高的手续费让自己的锁仓交易先行预留,从而与攻击者形成避免竞争攻击。最后,官方修复方案为不对锁仓合约的余额进行合理检查,反之则采用大于相等的形式,避免了攻击的发生。

安全团队建议智能合约的开发者在智能合约中对某些状态进行修改的时候,要根据实际情况充分考虑条件竞争的风险,避免条件竞争攻击。
👏17😘14❤12🔥6
#区块链科普

#越权访问攻击 Exceed Authority Access Attack
和传统安全的定义一样,越权指的是访问或执行超出当前账户权限的操作,本来有些操作只能是合约管理员执行的,但由于限制做得不严谨,导致关键操作也能被合约管理员以外的人执行,导致不可预测的风险,此类攻击在以太坊和EOS上都曾出现过多次。

以EOS上著名的BetDice游戏为例,由于在游戏同步内的路由(EOS内可自定义的事件转发器)中没有对来源账号进行严格的验证,导致普通用户可以通过推送操作的方式访问到一致性中的关键操作转移函数,直接绕过转账流程进行下注,从而发生了越权攻击,事后虽然BetDice官方紧急修复了代码,并严格限制了账号,但这个漏洞已经让攻击者成本几乎无薅走BetDice 奖池内接近 5 万 EOS。又如在以太坊使用 Solidity 版本为 0.4.x 进行合约开发的时候,很多合约开发者在对关键函数编写的时候不仅没有加上权限验证,也没有指定函数可见性,在这种情况下,函数的默认可见性为 public,恶意用户可以通过这些没有进行的关键函数对合约进行攻击限制。

安全团队建议智能合约开发者们在进行合约开发的时候要注意对关键函数进行权限校验,防止关键函数被无效调用造成合约被攻击。

#交易顺序依赖攻击 #交易顺序攻击
在区块链的世界中,记账交易内可能有多种不同的交易,而这些交易执行的顺序会影响最终的交易的执行结果,由于在挖矿机制的区块链中,交易预留配额前都设定一种如果待包含预留的待处理状态,可以事先知道交易里面执行了哪些其他交易,否则用户存在可以通过增加矿工费的形式,发起记账交易,让交易中的其中记账交易先行备份,扰乱交易顺序,造成非内的执行结果,达成目标。以以太坊为例,假设一个Token交易平台,该平台上的手续费是通过补偿中的参数实现的,假设某天平台项目方通过补交交易请求调高交易手续费用,此时交易被压缩后的所有买卖Token的交易手续费都要提升,正确的逻辑应该是从稍后交易开始往后所有的Token买卖交易的手续费必须提升,但是由于交易从发布到被预留存在一定的延迟,请求修改交易手续费的交易不是立即生效的,那么接下来恶意用户就可以以更高的手续费让自己的交易先行预留,避免支付更高的手续费。

安全团队建议智能合约开发者在进行合约开发的时候要注意攻击顺序对交易结果产生的影响,避免合约因交易顺序的不同侵害。

#女巫攻击
传说中女巫是一个会魔法的人,一个人可以幻化出自己,令受人以为有多少人,但其实只有一个人。在区块链世界中,女巫攻击(Sybil Attack)是针对服务器节点的攻击。攻击发生时,通过某种方式,某个危害节点可以伪装成多个节点,对被攻击节点发出受害链接请求,达到节点的最大链接请求,导致节点没办法接受其他节点的请求,造成节点拒绝服务攻击。以EOS例如,慢雾安全团队曾披露过的 EOS P2P 节点拒绝服务攻击实际上就是女巫攻击的一种,攻击者可以非常小的攻击成本来达到瘫痪主节点的目的。详情可参考:

https://github.com/slowmist/papers/blob/master/EOSIO-P2P-Sybil-Attack/zh.md

安全团队建议在构建全节点的情况下,服务器需要在系统层面上对网络连接情况进行,一旦发现某个IP连接异常就调用脚本配置监控iptables规则凸显异常的IP,同时链开发者在进行公链开发时应该在P2P模块中对单IP节点连接数量添加控制。

#假错误通知攻击
EOS上各类的通知,只要在action中添加require_recipient命令,即可对指定的账户通知操作,在EOS上某些智能合约中,为了用户体验或其他原因,一般都会对onerror通知进行某些处理。如果这个时候没有对onerror的合约来源是否是eosio进行检验的话,可以使用和假转发通知同样的方式对合约进行攻击,触发合约中对onerror的处理,从而导致被攻击合约通知造成损失。

安全团队建议智能合约开发者在进行智能合约开发的时候需要对onerror的来源合约进行校验,确保合约帐号为eosio帐号,防止假错误通知攻击。
👏14🔥13❤12😘10