360 | 数字货币钱包应用安全威胁概览
imToken 是一款全球领先的区块链数字资产管理工具[ZB],帮助你安全管理BTC, ETH, ATOM, EOS, TRX, CKB, BCH, LTC, DOT, KSM, FIL, XTZ 资产,同时支持去中心化币币兑换功能 ...
传送门:360 | 数字货币钱包安全白皮书
前言
随着区块链技术的普及,各种数字货币得到了长足的发展,官方币种都会发布自己的钱包APP,比如Core等,第三方数字货币钱包为了进一步提升用户体验,也开发了钱包APP,比如比特派等,随着这些钱包APP的出现,黑客也将目光瞄准了这一领域。
2017年,黑客发现一家智能合约公司开发的数字货币钱包采用的多重签名技术存在漏洞,导致15.3万枚以太坊被盗,损失高达3260万美元。
2018年,一家全球领先的硬件数字货币钱包制造商在完成7500万美元B轮融资后,被曝出其钱包设计存在缺陷,黑客可以通过恶意软件篡改钱包地址,将数字货币转移给黑客。
2018年,有爆料称私钥保管不当,导致黑客轻易获取私钥,恢复用户助记词。
为了更加准确的了解钱包APP的安全状况,近期我们对应用市场流通的热钱包、冷钱包进行了相关的安全审计和评估,发现了不少安全问题,我们整理成相关文档在此发布,以帮助钱包APP厂商和用户了解其中涉及的安全风险,以便大家重视安全,及时自查,避免造成损失。
加密货币钱包安全威胁
数字货币钱包的使用包括从软件启动到交易的完整过程,涉及到非常多的业务场景。从传统软件APP的功能来看,如核心代码不加密、软件本身无验证、中间人数据劫持等,在钱包APP的业务场景中危害会被放大,导致用户资金损失。同时,钱包APP特有的业务场景,如助记词存储不安全、交易密码设置的弱密码、币价走势数据被替换等,也会对用户使用钱包的安全造成极大危害。以下是我们整理发现的5大安全风险。
1. 助记词及交易密码泄露
是一款由比特币官方推荐的第三方团队开发的钱包应用,在 Play 上安装量已超过 10,000 次。
我们在非root环境下进行了录屏测试,发现助记词生成阶段无法录屏,但导入钱包时界面可以录屏,这可能导致助记词泄露,数字货币账户被盗。同时我们发现在输入交易密码时也存在录屏漏洞,通过观察按键顺序即可推导出交易密码。
在钱包业务场景中im钱包安全和手机有关吗,需要对相关敏感信息输入页面采取防截屏措施,采取对当前页面添加属性等相关保护,使得第三方程序截屏时直接黑屏,无法记录。
2.不安全的钱包APP运行环境
数字货币钱包类APP的安全重点之一就是运行环境。是一个非常庞大而复杂的系统,我们在实际进行分析测试时发现,近四分之三的APP没有对相关环境进行测试。我们可以通过直接逆向调试APP、注入hook等方式,分析APP的执行过程,动态分析加解密算法过程。我们发现,近80%的钱包类APP没有对运行环境进行安全测试,无法保证用户运行APP的环境安全,导致用户遭受资金损失。
从360发布的《中国手机安全状况报告》中我们可以看到,目前的手机存在着不少的漏洞,导致在其上运行APP存在着不少的安全风险,比如以下几点。
扫描手机漏洞
手机一旦存在被披露的系统漏洞,就时刻面临被黑客攻击的风险,如果存在可以提权或者获取助记词等敏感数据的漏洞,用户账号将暴露在极其危险的环境中,因此我们建议增加对已知系统漏洞的检测。
根部环境检测
实现了沙盒机制,如果设备没有root,在沙盒的保护下其他应用无法获取本应用的数据;如果设备root了,我们无法保证运行环境的安全,助记词等极其重要的数据很有可能被恶意应用获取。
APP完整性检测
App完整性是指应用程序是否被篡改,通常可以通过签名验证来实现,防止用户使用重新打包的应用程序。
网络代理检测
如果当前网络使用了代理,就有可能出现数据交互被第三方监听的情况,造成数据泄露,甚至敏感数据泄露。
我们在不同环境下针对上述重点进行了模拟攻击,发现有近80%的APP并未采取安全措施,可以利用系统漏洞、软件漏洞等进行攻击测试。同时,挖矿木马、钱包APP劫持木马也在过去一年开始大量出现,导致不少用户遭受直接财产损失,因此建议钱包厂商一定要重视该问题,并使用相关的漏洞缓解措施。
3.交易密码被暴力破解
大多数数字货币钱包在首次运行时都会提示用户是否创建新钱包。当用户创建新钱包时,数字货币钱包会通过一系列算法生成私钥。一般情况下私钥不会展示给用户,而是以助记词的形式提示用户备份钱包。下图是数字货币钱包的助记词界面,算法有一套业界标准,通过助记词可以推导出私钥,进而由私钥可以推导出其他数据。
钱包初始化后会提示用户输入一个交易密钥,交易密钥用于在交易前解密私钥,当发生交易时,将输入的交易密钥经过算法计算得出私钥,生成的私钥用于对交易进行签名。数字货币钱包的交易密码如果强度不够,非常容易被暴力破解,当交易密钥被暴力破解后,整个钱包相当于处于没有任何保护的状态,任何人都可以操作钱包,包括转账。
下面这个是不使用复杂密码的数字货币钱包,直接用六位数字作为交易密码,不设置尝试次数,直接暴力破解即可进行交易。
建议在APP开发过程中,对用户输入的弱密码进行检查,并添加字母或者特殊符号增加复杂度,保障密码安全。
4.钱包APP伪造漏洞
钱包APP被黑客逆向后,会添加恶意代码、回传助记词等敏感信息、修改交易收款地址等,会给用户带来直接的资金损失。因此,在使用钱包时,一定要通过官方渠道下载。同时,如果APP本身没有对软件完整性进行严格验证,也可能会发生相关事件。
2017年底出现的Janus签名漏洞可以直接应用在这个场景中,修改应用程序后,利用Janus漏洞对其进行特殊处理,绕过系统的签名验证,对原有的应用程序进行更新。系统一直采用V1签名验证,当系统安装过应用程序后,在更新时会验证是否是同一个签名。在签名验证过程中,系统会默认读取一个ZIP文件,直接从更新包末尾读取数据,在执行更新文件时,则从头部开始读取,如果是Dex,则直接执行操作。那么我们可以获取最新版本的数字货币钱包安装包,并进行如下修改:
删除Dex文件,植入恶意代码。将原安装包拼接到修改后的Dex中,然后修复拼接后的Dex文件的文件头。
然后更新的时候从尾部读取数据,读取的是原版APK,可以通过系统的签名来验证,执行的时候读取的是我们插入恶意代码后的Dex文件,如果对数字货币钱包进行修改,植入恶意代码,比如把所有转账地址替换成攻击者的付款地址,如果用户使用伪造的数字货币钱包进行更新转账,将造成不可估量的损失和后果。
我们在分析过程中发现部分数字货币钱包仍在使用V1签名,我们模拟了该攻击,并生成了一个带有恶意代码的APP。
虽然在收到该漏洞后及时进行了修补,但并不是所有手机厂商都会及时向用户推送补丁,建议采用V1+V2签名方式对发布的应用进行签名,抵御APP伪造漏洞的攻击。
5.核心功能代码未加固
由于应用程序是用Java开发的,因此可以轻松反编译以产生类似的源代码效果,而无需进行强化。
由于使用的 Smali 语言相对容易掌握,因此在未经加固的情况下,数字货币钱包非常容易被重新打包。重新打包的效果和前文提到的伪造漏洞一样,给用户造成直接损失。同时,关键信息的泄露也会让黑客更容易分析代码逻辑,利用相关算法提取助记词,逆向分析加解密过程,利用其他漏洞窃取助记词等信息。
建议使用加固方案,对钱包APP中的关键功能代码进行加固,防止被黑客逆向分析imToken,提高安全性。
6. 敏感钱包信息存储不当
我们知道在数字货币的世界里,最重要的是私钥。而对于用户来说,数字货币钱包最重要的就是助记词,有了助记词我们就可以推导出私钥。因此,如果数字货币钱包在本地不当保存了助记词或者私钥,那么将是一个非常高的风险。我们在分析某款钱包的时候发现,钱包APP在为当前客户端自动创建钱包时,以错误的方式将钱包保存在本地,使得根设备上的攻击者可以解码钱包文件,获取用户的助记词、钱包私钥等钱包数据。下图是我们模拟的攻击流程,其中对随机生成的助记词进行了部分编码。
逆向之后我们编写了相关代码来解密并恢复数据:
建议在开发过程中,必须对本地保存的数据进行加密,防止数据泄露,给用户造成直接的财务损失。
7.网络数据交互被劫持、篡改
用户通过数字货币钱包进行交易时,是否采用合适的加密算法对交易数据进行加密是衡量网络连接安全性的一个非常重要的维度。不仅要注意数据是否加密,还要注意助记词、私钥等数据是否传回服务器。当助记词等数据传回服务器时,相当于除了用户本人之外,还有其他人知道用户自己的助记词,当存储助记词的服务器被黑客入侵时,很有可能导致账号被盗。
另外,当钱包具有交易功能时,当前币价的显示可以在网络数据交互过程中被劫持和篡改。如下图所示,是我们修改后的BTC、ETH、XRP的实时价格在用户手机上的显示。
这样展示给用户的页面就是黑客希望用户看到的币价,间接诱导用户交易该币种,炒作某种币种的兑换价值,并在短时间内进行大规模的买入和卖出,从而间接控制相关价格。
在此过程中,建议厂商对网络交互数据做严格验证,如果使用https,需要对证书信息做强验证,防止数据在传输过程中被篡改。
总结
目前市面上存在大量质量参差不齐的数字货币钱包,很多开发团队在业务优先的原则下,尚未对自家钱包产品的安全提供足够的保障,一旦出现安全问题,将有大量用户的账户货币被盗。由于数字货币实现的特殊性,被盗资产的追回难度极大。
我们希望钱包厂商在业务功能上能够更加注重安全性,一方面保障厂商的利益不受损失,另一方面保障用户的资金不受损失。关于本文中我们对钱包厂商安全审计的相关技术点,我们已发布相关数字货币钱包安全白皮书文档,供大家参考。
关于团队
360 Wipak Team隶属于360信息安全部,360信息安全部致力于保护内部安全和业务安全,抵御外部恶意网络攻击,逐步形成自身的安全防御体系,积累了丰富的安全运营和对突发安全事件的应急处理经验,建立了完善的安全应急响应体系,做到早发现、早解决安全威胁,确保安全技术能力处于行业领先水平,培养了众多明星安全团队和研究人员。研究成果多次获得国内外大厂官方致谢,如微软、谷歌、苹果等,多次受邀参加国内外安全会议。主要研究方向有区块链安全、WEB安全、移动安全(iOS)、网络安全、云安全、IOT安全等方向,基本覆盖了互联网安全的主要领域。
附录:
360数字货币钱包安全白皮书地址:
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。