近期,以太坊著名的浏览器扩展插件MetaMask被暴出现隐私泄漏的安全问题,可能让用户的以太坊地址在不知情的情况下被DApp开发方等第三方获得,对此,我们已经在《是安全问题?还是用户体验的折中?MetaMask隐私泄漏问题简析》中做了解析。
事实上,MetaMask的问题本质上是私有数据权限过度开放的问题,为了用户体验而做了安全上的牺牲。类似的问题在Android App端也同样存在,特别在数字钱包、交易所这样的App使用中危害可能更大。北京链安安全专家C00lMan介绍了如下场景:比如,当我们备份私钥,或者通过钱包地址进行转账时,需要把私钥信息或地址信息传输给其他App。大部分钱包App此时的策略是通过Android系统的剪贴板作为数据的传输媒介,这样做真的安全吗?答案是:不安全。
(Android系统剪贴板框架)
Android系统里的所有App都可以通过系统剪贴板进行复制、粘贴,而存储在剪贴板里的数据,所有的App都可以访问。一个App只要通过系统自带的接口,注册一个监听事件,当有新的数据存储到剪贴板时,这个App就能第一时间知道复制的数据是什么。
(注册剪贴板监听事件函数)
试想一下,如果此时你在钱包App里复制了你的私钥数据,注册了监听事件的App就能窃取你的私钥信息。
(钱包复制私钥界面)
上图为数字钱包导出私钥界面,说明了私钥保存需要注意的一系列安全提示,由于本文旨在说明安卓系统剪贴板的安全性问题,故对可能体现具体钱包品牌特征的界面做遮蔽处理。事实上,当你选择复制私钥的似乎,就触发了剪贴板监听事件。
(窃取私钥攻击示例)
上图可见,这一事件被监听后,我们可以读取剪贴板的内容,窃取私钥,让你的资产陷入极度危险的状况。
甚至,剪贴板中的内容还可以进一步修改,比如假设你复制的是转账目标地址,这个App可以通过先清空剪贴板所有的数据,然后写一个假的转账地址到剪贴板里,这样当你通过系统的“粘贴”功能去输入转账地址时,你其实输入的已经是一个假的地址,这时候就造成了钓鱼攻击,你转账的资金就被黑客窃取了,而这一切都是在神不知鬼不觉中完成的。
由此可见,剪贴板在应用之间共享数据带来了一定的便利性,但重要的数据是否应该通过剪贴板来传输呢?如何在保证便利性的同时,更好地保证用户重要数据的安全性呢?
对此,我们实际上可以采用一种安全数据剪贴板的方案。
据北京链安手机安全专家Zer0dMan介绍,在安全沙盒技术中,我们可以通过专门的安全技术将用户复制的数据进行高强度加密后存储到安全容器创建的一块内存区域中,该区域是与系统剪贴板隔离的,只有在安全沙盒中启动的区块链App才可以使用,而在沙盒之外的应用对此区域都无权访问。这种解决方案既保证了用户数据的安全,也达到了良好的用户体验效果。