数字货币钱包安全报告
imToken 是一款全球领先的区块链数字资产管理工具[ZB],帮助你安全管理BTC, ETH, ATOM, EOS, TRX, CKB, BCH, LTC, DOT, KSM, FIL, XTZ 资产,同时支持去中心化币币兑换功能 ...
前言
区块链技术的迅速发展,使得数字货币渐渐走入的大众的视线,在2017年底,这股热潮达到顶峰,直接搅动着金融市场与科技市场,大量的数字货币交易流水催生了数字钱包开发行业, 根据钱包使用时的联网状态分为热钱包和冷钱包。
随着各种数字货币的诞生,为了方便用户记录地址和私钥,官方会同时发布全节点钱包,例如 Core,钱包 ,同时也有一些第三方公司为了进一步提高用户体验,他们相继开发了如比特派,,,币信,币包等钱包APP,它们并不同步所有的区块数据,因此称其为轻钱包,这两种数字钱包都属于热钱包。冷钱包也称为硬件钱包,常见的冷钱包有库神钱包, Nano S,等,由于私钥不接触网络imToken是属于冷钱包吗?,相对安全性也较高。不过由于业务场景的快速迭代以及推广需求,无论热钱包还是冷钱包都会有一些的安全隐患会被忽视。
近期,我们对应用市场上流通的热钱包以及冷钱包进行了相关安全审核评估,发现了很多安全问题,360信息安全部依靠通过对各类攻击威胁的深入分析及多年的安全大数据积累,旨在区块链时代为数字货币钱包厂商提供安全性建议,保障厂商与用户的安全,因此发布数字货币钱包安全报告为其作为参考。
一、钱包APP安全现状
近期360安全团队发现了国外某知名钱包APP的一个钱包不正确加密存储漏洞,其钱包APP在第一次运行的时候,默认为用户创建一个新钱包并将钱包文件未加密存储在系统本地,攻击者可以读取存储的钱包文件,通过对钱包应用逆向分析等技术手段,还原该钱包的算法逻辑,并由此直接恢复出用户的助记词以及根密钥等敏感数据。
我们对目前热门的近二十款钱包APP进行了安全分析,从应用运行开始,创建助记词、备份数据、查看货币价值到进行交易,如下图我们的模拟攻击流程。
由于数字货币交易的一个安全重点就是运行环境,是一个非常庞大而且复杂的系统,APP的运行环境,针对数字钱包本身的功能设计,都将存在很大的安全隐患,如下图所示,我们将发现的安全风险较大的点进行归纳说明。
我们可以看到,在无root下的截屏、录屏可以将我们输入的助记词,交易密码等信息进行得到;利用Janus签名问题对APP进行伪造,将软件植入恶意代码,可以修改转账人地址等操作,这些都会令用户的钱财受到损失。
一、审计热钱包安全隐患
区块链在造就无数财富神话的同时,伴随着而来的,是一系列已经发生的区块链攻击事件。2017年11月,以太坊钱包被爆漏洞,导致93万个以太坊被冻结,价值2.8亿美金。无独有偶,2018年1月,日本最大比特币交易所被黑,价值5.3亿美金的NEM被盗。可见,力图去中心化的区块链金融,并不符合大众脑海中科技安全的第一印象。我们将钱包APP分为APP端与服务端,分别进行说明。
1.审计钱包APP端安全隐患
基于我们对当前数字钱包APP的安全现状分析imToken钱包下载,我们将发现的安全隐患进行归纳总结,如下文。
1.1.运行环境安全检测
1.1.1.手机系统漏洞扫描
钱包APP未对于手机当前系统版本进行检测并做出相关,将导致已知漏洞对手机系统的损害,使得钱包APP容易被黑客控制权限,我们将扫描相关严重漏洞,判断当前手机系统安全性。
1.1.2.Root环境检测
钱包APP未对于手机环境进行root检测,会导致APP运行在已root的手机上,使得APP相关核心执行过程被逆向调试分析,我们将会扫描root常见手段,来判定设备是否已被root。
1.1.3.APP完整性检测
钱包APP未做完整性检测,会导致黑客可以对APP重新打包植入恶意代码,窃取用户助记词,私钥等敏感信息,我们将进行模拟攻击,对APP进行重打包,修改验证机制来判定是否可利用此漏洞。
1.1.4.网络代理检测
APP在运行中,未检测是否使用相关代理,将会导致协议交互过程中网络数据被黑客监听,我们将进行模拟黑客攻击,确认是否安全。
1.1.5.网络安全检测
钱包APP未检测验证当前使用网络的DNS是否安全,将会会存在被劫持的可能,导致一些网络回传的数据被黑客恶意修改,我们将通过技术手段模拟黑客攻击,来确认是否安全。
1.2. 协议交互安全检测
1.2.1.新用户注册安全
在安装完APP后,新用户需要进行注册,才能使用钱包APP,在这个注册过程中,如将用户敏感信息上传至服务器,会存在很大安全风险,比如传输过程或服务器上被黑客攻击获取注册信息,我们将对网络传输数据进行逆向分析,查看是否存在隐患。
1.2.1.创建交易安全
在用户创建交易时,交易双方的账号如果没有二次验证,则容易导致收款账户信息被恶意替换后无法知道,导致用户钱财损失问题,我们将会使用技术手段进行测试,验证钱包APP是否存在此风险。
1.2.2.交易签名安全
在交易创建后,发送正式签名交易过程,如果相关协议设计不严格,会导致用户财产受到损失,我们会对交易过程逻辑代码进行逆向分析,查看是否存在相关安全隐患。
1.2.3.交易完毕确认
交易完毕后,如果未对交易内容进行确认,会导致使用户清晰了解此次交易过程的记录,在APP上无法记录相关信息,无法查询个人交易记录,我们会对此过程进行分析,查看是否存在相关安全隐患。
1.2.4.余额查询安全
钱包APP在进行余额查询时,无论是从货币官方服务器,还是钱包厂商服务器进行的查询,应严格对其返回给客户端的数据进行完整性验证,否则容意导致用户APP数据接收虚假、异常信息,我们会对此流程进行确认,查看是否存在安全隐患。
1.3. 数据存储安全检测
1.3.1.助记词创建安全
新用户使用钱包APP时,会生成助记词要求用户记录,此过程是否有检测截屏,录屏等操作,如未进行安全检测,将会导致钱包核心敏感信息泄露,用户钱财损失。
1.3.2.助记词存储安全
助记词生成后,如果会在本地保存,在本地保存时是明文存储,将会导致黑客进行攻击获取用户助记词信息。如果是加密存储,加密算法安全性不高,将会导致黑客可以逆向分析算法,将加密数据进行恢复明文,导致用户助记词信息泄露。我们会模拟黑客攻击,检测相关流程是否存在安全隐患。
1.3.3.私钥生成安全
钱包APP在新用户私钥生成过程,相关算法如果可被逆向分析,会导致黑客模拟生成的私钥,使用户的钱财受到损失,我们将会模拟黑客攻击,逆向分析相关算法,确认是否存在此安全隐患。
1.3.4.私钥储存安全
私钥生成后,如果会在本地保存,在本地保存时是明文存储,将会导致黑客进行攻击获取用户私钥信息。如果是加密存储,加密算法安全性不高,将会导致黑客可以逆向分析算法,将加密数据进行恢复明文,导致用户私钥信息泄露。我们会模拟黑客攻击,检测相关流程是否存在安全隐患。
1.3.5.本地存储数据敏感性检测
在本地存储数据时,是否会将敏感信息保存在本地,如果一些对用户敏感的信息保存在本地,容易被攻击者进行逆向分析,我们会对其进行逆向分析,查看本地是否存在敏感信息。
1.4. 功能设计安全检测
1.4.1.导入钱包功能安全
用户使用导入钱包的功能,是会将之前用户存储在系统中的私钥直接恢复,恢复过程如果被监控,相关功能设计不严格,会导致在此过程被黑客攻击,我们会模拟黑客攻击,进行相关验证。
1.4.2.交易密码安全
交易密码如果未检测弱口令,将会导致黑客对密码进行猜解,直接进行交易;交易密码日字旁本地存储,本地储存加密不严格,则会导致黑客对其进行逆向分析,获取到交易密码,我们将模拟黑客攻击,验证此安全隐患是否存在。
1.4.3.用户输入安全
用户输入数据,如果功能设计不严格,将会被黑客监听窃取;如果采用第三方键盘进行,未对用户输入逻辑做校验,容易被黑客监听获取敏感信息,我们将会模拟黑客攻击,查看相关流程是否严格,验证此安全隐患是否存在。
1.4.4.转账地址安全检测
钱包APP在输入转账地址或扫描二维码转账地址后,如果未检测地址被篡改,保证转账地址完整,会导致用户钱财受到损失,我们将会模拟黑客攻击,查看相关流程是否存在安全隐患。
1.4.5.助记词,私钥网络储存安全
助记词和私钥应当禁止通过网络传输回APP厂商,防止服务器被攻击用户数据与钱财被盗取,如果有相关回传数据操作,容易导致用户数据与钱财被盗。我们将逆向分析相关网络协议,查看是否存在相关安全隐患。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。