比特币钱包Electrum漏洞分析及示例

比特币钱包Electrum漏洞分析及示例

  • 漏洞生成原因

    在2.6版本时,开发组加入了一个JSONRPC模块,本意是想让本地其他模块可以很方便调用一些接口功能。

    小贴士:json rpc 是一种以json为消息格式的远程调用服务,这种远程过程调用可以使用http作为传输协议,传输的内容是json消息体。

  • 视频演示:

比特币钱包Electrum漏洞分析及示例

    复制地址观看

    http://v.youku.com/v_show/id_XMzMwMjA5MzE4MA==.html?spm=a2h3j.8428770.3416059.1#paction

  • 漏洞触发代码:

    http://localhost:xxx

    POST参数:

比特币钱包Electrum漏洞分析及示例

    注1:端口号每次启动不同,采用随即方式。

    注2:可以内嵌js方式,这样访问一个网页seed就没了。

  • 代码调用流程:

比特币钱包Electrum漏洞分析及示例

    这里的关键函数就是pw_decode()函数

比特币钱包Electrum漏洞分析及示例

    注意看它的if,如果密码是None,那么就返回s(第一个参数),我们看看它的调用者。

比特币钱包Electrum漏洞分析及示例

    S参数是self_seed,如果没有设置密码,那么self.seed就是明文储存。

  • 漏洞触发总结:

    1、 JSONRPC设置了”Access-Control-Allow-Origin, *”,允许跨域访问。

    2、  钱包没有设置密码。

    注:钱包如果设置密码,只是seed拿不到,“钱包地址”、“交易记录”可以被拿走。

  • 官方修补方案  

    1、3.0.4版本

    删除”Access-Control-Allow-Origin, *”,不允许跨域访问。

    修复时间:1月7号

    2、3.0.5版本

    增加RPC验证,使用了RPC用户名和密码

    gui模式(windows版),禁止了一些命令如run_cmdline

    修复时间:1月8号

  • 安全建议

    1、  立即升级到最新的3.0.5版本

    2、  如果没有设置过密码,且钱包里有币的,建议马上设置复杂密码,并考虑转移货币。

文章作者: 比特安全 我要纠错
声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。
比特币实时价格 ¥54521.28(数据来源:火币Pro)