免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。

小编:记得关注哦

投资区块链,猛戳:火星财经App下载

文章来源:巴比特

匿名币的技术之争是非常有意思的,比如KMD核心开发者Duke Leto刚发表了一篇博客文章,披露了关于Zcash及其多数分叉币存在的漏洞,而这个漏洞可能会泄露使用屏蔽地址(zaddr)的全节点 IP地址。

其还为此分配了一个通用漏洞披露(CVE)编码CVE-2019-16930来跟踪这一问题。

(以下是其具体披露的内容)

太长不看:自Zcash和Zcash协议建立以来,所有屏蔽地址都存在着一个漏洞。它出现在所有Zcash源代码分叉中,这使得攻击者可利用它找到拥有屏蔽地址(zaddr)全节点的ip地址。换而言之,如果Alice给Bob一个屏蔽地址(zaddr)用于支付,实际上可允许Bob发现Alice的IP地址,这与Zcash协议的设计是违背的。

受影响的群体:

所有使用屏蔽地址(zaddr)以及与第三方共享屏蔽地址(zaddr)的人,例如:

  1. 如果你在社交媒体上公开发布了你的屏蔽地址(zaddr);
  2. 如果你在github/email/IRC的漏洞报告中给出了你的屏蔽地址(zaddr);
  3. 如果你曾把自己的屏蔽地址(zaddr)告诉了交易所、矿池或企业;
  4. 如果你曾在一份屏蔽备忘录中回复过你的屏蔽地址(zaddr);

不受漏洞影响的群体:如果你从未使用过zaddr,那漏洞就不会影响到你:

  1. 如果你只是给其他使用zaddr的人发送过钱,但从未收到过资金,你是安全的;
  2. 如果你使用Tor/TAILS,则IP元数据泄漏对攻击者而言就不是有价值的信息。

受影响的加密货币(非详尽清单):

  1. Zcash (ZEC)
  2. Hush (HUSH)
  3. Pirate (ARRR)
  4. 所有带有zaddr的Komodo (KMD)智能链(默认启用)
  5. Horizen (ZEN)
  6. Zero (ZER)
  7. VoteCoin (VOT)
  8. Snowgem (XSG)
  9. BitcoinZ (BTCZ)
  10. LitecoinZ (LTZ)
  11. Zelcash (ZEL)
  12. Ycash (YEC)
  13. Arrow (ARW)
  14. Verus (VRSC)
  15. BitcoinPrivate (BTCP)
  16. ZClassic (ZCL)
  17. Anon (ANON)

需要澄清的是,虽然Bitcoin Gold (BTG)使用了Zcash提供的Equihash PoW共识机制,但它并不是Zcash源代码的分叉,其也没有使用屏蔽地址(zaddr),因此它是不受影响的。额外的说明:KMD以前也有使用屏蔽地址(zaddr),但后来禁用了该功能,Safecoin (SAFE)走了一条类似的路线,其目前也禁用了屏蔽地址(zaddr)。

缓解措施

首先,防止这种“元数据泄漏攻击”的首要方法,是在使用你喜欢的加密货币的同时,通过-onlynet=onion使用Tor,或者更好的选择,是使用TAILS操作系统。

其次,用户可使用全新的zaddr创建一个全新的wallet.dat(钱包文件),然后将所有资金发送到该地址。如果用户将这个新的zaddr保持为私有状态,那它就不会受到此类攻击。

Zcash在这里发布了一个紧急源代码(没有二进制文件)。

如果你不希望知道你的zaddr地址的人知道你的IP地址,我建议你创建新的钱包,并在软件发布更新之前停止使用旧钱包。

到这里,普通用户或许可以停止阅读了。

更多的建议

如果你运行了一个支持屏蔽地址(zaddr)的矿池,则不需要提供所有矿工和屏蔽地址(zaddr)的公开列表。由于当前的元数据泄漏攻击和其他原因,这严重地消除了矿工们的隐私。这在过去是很常见的,但由于隐私问题,大多数矿池已经停止了这一做法。

也不要在github的错误报告中给出zaddr!很多工具不断地从所有公共代码存储库中抽取潜在的敏感数据和公开来源信息。

为了提高安全性,如果你必须要给出屏蔽地址(zaddr),你可以将它们隔离到一个单独的wallet.dat,该wallet.dat通常不使用且保持离线状态,而另一个带有屏蔽地址(zaddr)的钱包可用于发送资金。由于发送资金的钱包从未发出zaddr,因此这种类型的漏洞对于该节点而言是不可被利用的。

代码分析

这个漏洞是在最初的Zcash代码库中被引入的,相关提交时间是在2016年:

“介绍新的“libzcash”zcash协议API和围绕zkSNARK电路的加密结构。”

这一提交将漏洞代码添加到了较旧版本的屏蔽地址,而新版本的屏蔽地址代码都将其复制了进去。该漏洞存在于Zcash的P2P层(从比特币继承而来)中,其中节点会与对等节点交换数据。

对攻击的解释:

  1. 攻击者节点将无效交易中继至其对等节点的mempool;
  2. 此交易对加密memo字段具有无效的序列化;
  3. 没有私钥且没有屏蔽地址查看密钥的节点,通常会对此无效交易做出反应;
  4. 具有私钥(或查看密钥)的节点将生成C++异常;
  5. 这个C++异常会导致不同的网络行为,从而暴露节点的“身份”;
  6. 区块链或浏览器上没有此类攻击的记录;

修正漏洞的代码在这里:https://github.com/zcash/zcash/commit/c1fbf8ab5d73cff5e1f45236995857c75ba4128d核心修改如下:

 - CDataStream ss(SER_NETWORK, PROTOCOL_VERSION);- ss << pt.get(); - SaplingNotePlaintext ret; - ss >> ret;+ try {+ CDataStream ss(SER_NETWORK, PROTOCOL_VERSION);+ ss << pt.get(); + ss >> ret;+ assert(ss.size() == 0);+ } catch (const boost::thread_interrupted&) {+ throw;+ } catch (...) {+ return boost::none;+ }

下面这行代码没有try/catch是漏洞存在的核心原因:

ss << pt.get();

由于pt是由攻击者控制的数据,其正被写入本地CDataStream ss对象,因此需要更仔细的处理。现在我们可以看到,只有boost::thread_interrupted类型的异常冒泡,所以其他异常都被“消灭”了,boost::none则会返回。这使得具有zaddr地址私钥的节点与所有其他节点一样,可以防止元数据泄露。

作者注意到,这里仍然存在寻找旧Sprout地址的易受攻击的代码。

有人可能认为这种攻击只能针对节点的对等节点,而不能针对整个网络,但增加最大对等节点计数是微不足道的,通过一个或几个节点来研究整个网络是可行的。

高级攻击者将拥有一个他们想要连接IP的zaddr数据库,然后运行密集连接至整个网络的节点,并定期向所有对等节点的mempool发送无效交易,从而建立(时间戳、Zaddr、IP地址)的三元组数据历史记录。然后,他们就可以使用这些数据,并通过数量分析和定时分析将其链接到其他数据,以完全取消屏蔽交易的匿名性,并将它们直接与IP地址和地理位置相绑定。

钱包一般链接那个节点_Zcash屏蔽地址漏洞或揭示全节点IP地址(附解决方案)...相关推荐

  1. dz email地址无效_Zcash屏蔽地址漏洞或揭示全节点IP地址(附解决方案)

    匿名币的技术之争是非常有意思的,比如KMD核心开发者Duke Leto刚发表了一篇博客文章,披露了关于Zcash及其多数分叉币存在的漏洞,而这个漏洞可能会泄露使用屏蔽地址(zaddr)的全节点 IP地 ...

  2. 史上最全的IP地址详解,速来get

    史上最全的IP地址详解 白在了解虚拟机网络之前,我们首先得了解ip地址是什么? 1.简单局域网的构成 局域网:一般称为内网 简单局域网的构成:交换机.网线.PC(其他IT终端) 交换机:用来组建内网的 ...

  3. 计算机如何输入ip地址,电脑如何切换ip地址_怎么让电脑切换ip地址-win7之家

    在每台电脑中,系统中的ip协议都会有提供一种统一的ip地址,能够为为互联网上的每一个网络和每一台主机分配一个逻辑地址,从而达到屏蔽物理地址的差异,同时我们也可以对ip地址进行切换,那么电脑如何切换ip ...

  4. ping服务器地址加时间显示,如何对IP地址进行Ping测试

    Ping命令能测试您和另一个网络节点之间的连接速度.您能使用该命令了解连接的强度.距离和可用性,不管是在您自己的网络中还是互联网.参照以下指南了解如何在各种系统中使用Ping命令. 方法1在Windo ...

  5. 最快网络服务器ip地址,本地ISP真实DNS服务器IP地址;加快电脑速度三法

    屏蔽网络共享功能 要是我们的计算机并没有处于单位局域网网络中,那么已经被启用的网络共 享功能其实一点用处都没有,它的存在反而会拖累系统的启动速度;要想尽可能 地提高系统启动速度的话,我们完全可以将本地 ...

  6. 设置为自动获得IP地址,如何查看当前的IP地址

    电脑设置为自动获得IP地址,如何查看当前的IP地址呢?首先点击[开始]在搜索框中输入"cmd",即可打开命令提示符,如下图所示: 输入"ipconfig /all&quo ...

  7. dlink网络打印服务器如何修改ip地址,DLINK路由器如何更改登陆IP地址

    摘 要 如果你使用的是DLINK路由器,那么默认的登陆地址一定是http:// dlinkrouter或http://dlinkrouter.local或http://192.168.0.1. 如果你 ...

  8. 计算机网络如何计算有效ip地址个数,如何计算到底有多少个IP地址及IP地址的种类及取值范围...

    关于IP地址的个数的计算方法,很多地方的知识都是一知半解,并不能给予人们一个正确全面的解答.本人也是经过多方探究与总结,方能明白其中的道理.下面,就为大家介绍如何计算IP地址到底有多少个,并且,所划分 ...

  9. 笔记本HTML刷新页面在哪,笔记本电脑ip地址查询_笔记本自动获得ip地址在哪儿?-192路由网...

    问:笔记本电脑IP地址怎么查询? 笔记电脑上的时候,把IP地址设置成了 自动获得. 那么自动获得的IP地址是多少?怎么查看到笔记本电脑自动获得的IP地址信息? 答:不同操作系统的笔记本电脑,查看自动获 ...

最新文章

  1. Json 学习 JSONObject 和 JSONArray
  2. 【Flutter】StatefulWidget 组件 ( 创建 StatefulWidget 组件 | MaterialApp 组件 | Scaffold 组件 )
  3. mysql练习_MySQL练习——4
  4. pythonencoding etf-8_etf iopv python 代码30个Python常用小技巧
  5. 一键解决 go get golang.org/x 包失败
  6. bzoj4998: 星球联盟
  7. redhat升级linux内核,用rpm方式升级RHEL6.1内核
  8. luogu P3810 【模板】三维偏序(陌上花开)
  9. 远程计算机超出最大连接数,远程桌面超出了最大连接数怎么办呢?
  10. windows和linux双系统
  11. IT运维的365天--009微信双开批处理文件运行出错(当前目录无效)的解决
  12. Scrapy框架: 异常错误处理
  13. 数据丢包怎么修复_网络丢包怎么办?这些解决办法不得不知
  14. 图片转换为矩阵/矩阵转换为图片
  15. Latex/WinEdt中文编辑
  16. 头像哟(^U^)ノ~YO
  17. Linux命令 - 日拱一卒
  18. 职场“老好人”生存法则
  19. PL/SQL编程:过程函数触发器题目分析
  20. Android8.0以上系统ROOT时,Magisk框架替代SpuerSU

热门文章

  1. android studio中能用的各种转义字符
  2. python3--装饰器
  3. AtomicInteger源码注释
  4. Android中Activity的启动流程和组织管理方式(Backstack、Task)
  5. Xmodem恢复交换机IOS
  6. 使用 libevent 和 libev 提高网络应用性能
  7. 基于协程的并发框架orchid简介
  8. linux shell 字符串 转 数组 列表 分隔符 字符串 转 数组
  9. linux ugo 权限 ugo即user group other
  10. GSS-API GSSAPI 介绍 通用的安全机制