1. 一诺财经首页
  2. 区块链

BSRC公布漏洞细节,称比特派的回应“漠视用户安全”

2018年11月21日,区块链安全研究中心BSRC昨天发布了针对比特派APP的攻击视频和安全建议,详情可以参考推送《区块链安全研究中心发布攻击比特派演示视频》,该推文认为比特派APP存在“助记词种子明文本地存储,缺乏APP代码保护及运行环境检测”等多个严重安全漏洞。视频公布后引发业内强烈反响和关注。之后,比特派开发者给予了回应如下图

2018年11月21日,区块链安全研究中心BSRC昨天发布了针对比特派APP的攻击视频和安全建议,详情可以参考推送《区块链安全研究中心发布攻击比特派演示视频》,该推文认为比特派APP存在“助记词种子明文本地存储缺乏APP代码保护及运行环境检测”等多个严重安全漏洞。视频公布后引发业内强烈反响和关注。之后,比特派开发者给予了回应如下图

BSRC公布漏洞细节,称比特派的回应“漠视用户安全”

区块链安全研究中心负责人在公布视频前,曾多次通过各种渠道向比特派官方发出安全警示和漏洞预警,但从未得到任何明确回应。作为被bitcoin.org官方推荐,以及号称“极为重视安全,在安全方面投入了大量的精力并享有良好的声誉”的数字钱包,比特派负责人面对漏洞实锤避重就轻,完全没有针对用户最关心的漏洞是否存在以及是否修补给予明确回应,反而讽刺善意提醒的安全研究机构是“黑社会碰瓷”,反映出对于用户数字资产安全的极度漠视。

因此,区块链安全研究中心将通过本文公布比特派APP漏洞细节和攻击原理,希望引起官方重视,尽快修补漏洞,保护用户的数字资产安全。

1. 助记词种子明文存储

通过对比特派APP安卓版最新版v3.7.5的代码黑盒分析,我们发现比特派APP会将用于恢复钱包助记词的种子字符串明文存储于APP在Android系统的私有路径之中,如下图示:

BSRC公布漏洞细节,称比特派的回应“漠视用户安全”

BSRC公布漏洞细节,称比特派的回应“漠视用户安全”

该助记词种子存放于系统路径data/data/com.bitpie/shared_prefs下的com.bitpie_preferences.xml文件中,对应的key值为seedPhraseEntropy。

虽然该文件存储于APP的私有路径中,且文件权限设置正确。但由于该助记词种子是明文存储,且可以直接恢复出钱包助记词,因此直接关系到用户的数字资产安全,所以仅仅以Android系统的沙盒机制进行保护是远远不够的。攻击者还是可以通过多种方式获取该敏感文件:

1)ROOT设备:由于APP缺少ROOT环境监测机制,APP在ROOT设备上完全可以正常运行。一旦用户在ROOT手机上使用该APP,攻击者便可以轻松打破系统沙盒机制来获取该种子文件。

2)系统漏洞:APP设置的minSdkVersion属性值为14,这说明APP最低可以在系统版本为Android OS 4.0的设备上运行。因此,即使用户手机没有ROOT,一旦系统版本过低,攻击者还是可能利用多种已知Android系统漏洞来绕过系统沙盒机制,窃取敏感文件。

3)系统备份:攻击者在接触用户设备的情况下,还可以通过系统数据备份,系统移机等功能获取APP的私有路径下的文件。

4)手机遗失:一旦用户手机遗失,这种明文存储的敏感数据便意味着用户数字资产的完全暴露。

5)其它可接触手机的场景。

2. 助记词词库明文存储

比特派APP将助记词种子是明文存储,这意味着一旦攻击者获取该种子,不再需要其它密钥进行解密,便可以直接通过助记词词库(类似密码本)恢复出钱包的助记词明文。由于比特派APP缺乏代码保护,攻击者可以轻易对其进行逆向分析,理解甚至利用代码逻辑。通过分析,我们发现利用种子恢复助记词的逻辑就在APP代码之中,如下图:

BSRC公布漏洞细节,称比特派的回应“漠视用户安全”

该段代码来自APP代码的类com.bitpie.bitcoin.crypto.mnemonic.MnemonicCode之中。该段代码的逻辑为:助记词种子以参数的形式传进来,经过简单的BYTE组变换,最终作为索引,从助记词词库wordList中按顺序提取12个助记词。而该wordList来自APP自带的资源文件mnemonic_wordlist_english.txt之中,如下图:

BSRC公布漏洞细节,称比特派的回应“漠视用户安全”

该资源文件存放于APK文件之中(路径为res/raw),该路径下存有三个助记词词库:

BSRC公布漏洞细节,称比特派的回应“漠视用户安全”

BSRC公布漏洞细节,称比特派的回应“漠视用户安全”

因此,攻击者可以简单的解压APK获取该助记词词库,再通过重用APP代码中的索引逻辑,不再需要获取其它任何密钥进行解密操作,直接利用之前获取的助记词种子,便可以生成助记词明文。

BSRC公布漏洞细节,称比特派的回应“漠视用户安全”

然后,利用该助记词,攻击者便可以再其它设备上还原用户数字钱包,进而威胁用户数字资产安全。

针对有分析提出的“攻击的前提是攻击者需要获取root权限,这在大部分攻击场景下是不具备的”这一说法,我们认为,由于比特派APP把助记词种子和词库(类似密码本)全部明文存储在APP里,任何一个有普通水平的攻击者都可以轻易拿到通用词库结合种子恢复助记词明文;另外root权限只是拿到助记词文件的一种方法。除此之外,结合上文可以看到,攻击者还可以利用多种手段,甚至结合现实场景获得这个文件,而且Android越狱非常普遍,在较低版本甚至可以一键越狱,那么攻击者就可以做一个简单设备伪装成共享充电宝,放在公开场合,比如某一个区块链大会现场,以给用户提供免费充电的方式,大规模搜集用户助记词和私钥。

最后,BSRC再次向比特派官方给出安全修补建议:

1. 助记词种子需加密存储

助记词的安全直接关系到用户数字钱包的安全,因此不能仅仅利用系统沙盒进行保护。建议正确使用密码学算法对该助记词种子进行加密之后再存储,加密密钥不能保存在本地,而是应该由用户保存。用户每次需要恢复助记词时,需要输入密钥进行解密,而不是现在这种一键从本地恢复的简单模式。

2. 增强APP运行环境安全

首先需要增强APP的代码保护,通过DEX加壳,混淆等安全防护措施增加代码逆向的难度。其次,需要增强运行环境的检测,禁止APP在模拟器,虚拟机,或ROOT设备上的正常使用。

免责申明:本文经授权后发布,本文观点不代表一诺财经的立场,转载请联系原作者。

发表评论

电子邮件地址不会被公开。 必填项已用*标注