知识屋:更实用的电脑技术知识网站
所在位置:首页 > 网络安全 > 安全资讯

主流安全软件大漏洞:隐私空间泄密

发布时间:2014-04-28 12:39:48作者:知识屋

目前很多安全软件都提供了隐私空间、文件保险箱之类的功能。这类功能对于用户来说还是很实用的。因为,现在一般用户会在智能手机上保存各种照片、视频、文件等隐私文件。不过一旦手机丢失,隐私文件就很可能泄露出去。但是这些功能到底有多安全呢?经过我们研究,所有主流安全软件都存在漏洞,隐私数据会泄密。
市面上常用的安全软件将需要保护的文件分为图片、视频和普通文件。用户可以进行添加、还原等操作。对于图片、视频还可以直接打开。这一功能对于用户来说是比较人性化的。用户无需先还原,再根据文件地址打开图片或视频。但是,正是这一功能,给隐私空间留下一个严重的漏洞。该漏洞目前还没有那一家第三方安全软件已经解决。
首先,一般被加密的文件都是存在sdcard上。由于sdcard是采用fat32格式的,无法保存权限相关的数据。所以linux下的用户、组等权限管理功能就无法适用。存在sdcard上的文件,能够被所有申请了读写sdcard权限的App直接访问。因此本质上讲,以明文形式存在sdcard上的所有文件都是不安全的。有了以上前提,我们来看一下安全软件是如何保护sdcard上的文件的。一般的安全软件保护文件分为两步:一,将原始文件加密;二,将其放入特定文件夹并删除原始文件。这样做能够使其他软件即使知道了被保护的文件地址,拿到的也是加密之后的数据。解密一般文件则按照相反的流程来做。对于图片、视频文件,用户可以直接打开。这一功能在Android平台一般有两种做法。一种是不保留解密后的临时文件,直接在内存中解密,并且通过内置的浏览软件打开。该方法不会在sdcard上留下解密后的临时文件,安全性比较高;另一种是在sdcard上保存解密后的临时文件,使用内置或外置的浏览软件打开。显然,这种做法就会给隐私空间留下一个严重的漏洞。其他软件能够直接访问解密后的临时文件,窥探用户的隐私。
既然,第二种方法如此的不安全,为什么还会有安全软件采用呢?原因很简单,对于一些比较庞大,或者无法用内置浏览器打开的文件,第一种方法就无法使用。具体的例子,可以对比一下图片和视频的保护。之前在研究图片加密的时候,有些安全软件也会保存解密后的临时文件。但在之后版本中,陆续发现该方法逐渐被摒弃。目前,市面上采用的普遍做法是内存解密+内置软件打开。因为,图片文件一般都不大,并且要实现图片解码是比较简单的。但是,对于视频文件,该方法就失效了。视频文件一般都比较大,格式种类也很多,实现视频解码难度比较大。因此,目前安全软件采用的都是保存临时文件,然后调用系统Intent,打开该文件。
系统的Intent一般类似下面这条腾讯手机管家的log,解密视频文件就是/mnt/sdcard/.tmfs/9e198ad989d3a6e96c0ded91ea2da052.mp4
 I/ActivityManager(534): START u0 {act=android.intent.action.VIEW dat=file:///mnt/sdcard/.tmfs/9e198ad989d3a6e96c0ded91ea2da052.mp4 typ=video/* flg=0x4000000 cmp=com.android.gallery3d/.app.MovieActivity (has extras)} from pid 10775
 具体临时文件目录可以看下图
360隐私保险箱 v1.0.8.1029



LBE安全大师 v5.0.3720



腾讯手机管家 v4.1.1



网秦私密空间 v3.6.86.22,网秦私密空间略微复杂,文件夹是随机创建的。



以上都是采取正常逻辑解密,之后调用视频播放器打开。而安全管家的做法做法着实让我们有点惊讶,因为未采用任何加密方法加密,而仅仅是将文件后缀名去掉之后保存,有点掩耳盗铃的感觉。
安全管家 v3.9.5



 乐安全是我们比较尊敬的一个团队,主要原因是这个团队总是会打破常规,在技术上另辟蹊径,寻求不同的解决方案。
我们曾经分析过的乐安全内嵌广告拦截也是如此:
首先乐安全会在sdcard上创建一个隐藏文件夹.pFolder,下面有pictures/videos/files三个文件夹存放明文的隐私数据,如果乐安全申请了root权限,会mount一个空镜像loop设备到.pFolder,文件访问权限是root,这样第三方app无法访问.pFolder。具体做法是:
1.       当隐私空间不在前台,执行命令:mount -o loop /sdcard/.cover.img /sdcard/.pFolder
这里.cover.img是乐安全创建的一个空的ext2系统镜像文件,然后连接到某个空闲loop设备,最后再mount到.pFolder文件夹,由于是root权限,所以第三方app无法访问。
2.       一旦隐私空间在前台,执行命令:umount /sdcard/.pFolder
值得肯定的是乐安全这样做很巧妙,且数据不用加密,效率更高,但是依然有很大:
1.       最可怕的问题,如果没有root权限,.pFolder所有数据都是明文存储,且第三方app都能访问,乐安全并没有对无法拿到root权限下做特别处理。
2.       打开隐私空间必须unmount,这个时间段如果有恶意程序开发一个后台程序扫描.pFolder,所有数据都可见,我们已经实现这样的原型。
3.       通过U盘或者MTP方式连接到PC查看SD卡内容,.pFolder下所有数据可见
 
另外,技术上一个改进建议:为什么不直接mount tmpfs到.pFolder不是更简单,省去创建.cover.img?
乐安全 v5.0.6



 
为了方便大家学习研究,我们写了一个demo app,操作方法很简单,打开app,然后推出,等待copy视频,所有隐私视频拷贝出来放在sdcard根目录下面的steal文件夹。
Demo app源程序地址:http://qun.qzone.qq.com/group#!/321150823/share, StealPrivacy.rar
 总而言之,这一漏洞分布很广,几乎所有提供隐私文件保护的安全软件都会存在;另外,即便是加密了,恶意软件把加密文件上传到服务器,暴力也是比较容易的。
 真正的数据保护主要有2个层面的要求,一个是,一个是隔离。这方便做到企业级有黑莓和三星Knox。第三方app只能做到第一个层面,无法做到第二个层面。
小分队提出的系统解决方案就是在系统层面同时满足以上两点要求。
具体方案,我们参照保护sdcard上安装的软件的策略,在级对这一漏洞进行修补。实现一套加密文件系统,提供加密文件的读写接口,直接从系统调用这一层进行保护。这样做可以避免保存明文的临时文件。如果实在要保存临时文件,也可以参考sdcard上的asec文件保护方法。同过vold多次挂载的方式,在Runtime时,将临时文件路径重定向,从而彻底保护临时文件。
 
最后感谢小分队外援:小分队_菜鸟(QQ号:437427128),开发demo程序
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜