微信语音可能泄露,背锅的却是安卓系统?

2019-09-30 00:01:36

文章来自 | 差评

收藏
分享










今天,差评君打开手机的文件管理器,突然发现相册里多了好多微信的聊天图片。


这么一看果然还是微博的沙雕图比较多。。。


可是奇怪,差评君并没有在微信里手动保存过这些聊天图片啊。


经过一阵检查,差评君发现这些图片都来自手机存储里一个名叫 tencent( 腾讯 )/ MicroMsg( 微信 )的文件夹。


除了聊天过程中发送的图片,甚至聊天中发送的语音也安安静静的躺在这个文件夹的犄角旮旯里。


红色图标的 .amr 文件就对应了一条微信语音消息


这可出大事了。要知道,微信里的语音可是连转发都转发不了的,微信官方也专门解释过,这是为了用户的隐私考虑。


结果我却能直接在文件管理器里,看到所有的语音文件,还能随便复制、粘贴、传到电脑上?


不过等差评君想打开的时候,发现音频被加密了,打不开。


看起来似乎是虚惊一场。但差评君眉头一皱,发现事情并没有那么简单!


这玩意儿加没加密是一回事,可为啥要老老实实地躺在谁都可以访问的地方呢?你会把自己的保险箱扔到马路上吗?


难不成是我手机里有病毒,已经悄悄破解了微信的聊天记录?


一想到有这么个可能,差评君吓得赶紧把世超拽了过来一探究竟。


结果还没等差评君说完,就收到了世超的一个大白眼:


「 别担心,你手机没中毒,这文件就是微信自己放的,我大学的时候还用这招提取过微信里的语音文件呢。 」


世超这么一说,反而给差评君搞了个云里雾里,又缠着世超问了半天,才搞明白为什么微信的聊天文件出现在了手机的文件管理器里。


( 大家先放心,具体的聊天记录都是安全的,只是聊天图片和语音有泄露的可能 )


如果你和差评君一样用过安卓手机,想必遇到过这种情况:

 

首次启动一个 App 时,会弹出一个「 为了优化您的使用体验,我们需要 XXX 权限 」的提示;接着就会一股脑地弹出来一堆索要权限的提示框。


其中通常会有一项名为「 存储空间读写 」的权限。


像电话、短信,我们都知道是很危险的权限。但像存储空间读写这种看起来好像没什么影响的权限,通常 App 要了,我们也就给了。


差评君的手机上的大部分国产 App 都申请了存储空间权限


一般情况下,App 要这项权限的理由是「 保存必要的数据 」。


但实际上,App 要想保存数据的话,根本不需要申请存储空间读写权限


因为谷歌早就考虑到了 App 存储数据的问题,在安卓系统里专门给每个 App 都划分了一个独立的「 内部存储 」

来源:谷歌开发者文档


就好比我们住酒店,会拿到一张门卡,门卡只能打开自己入住的房间,打不开别人入住的房间。


如果说手机就是那个酒店的话,那 App 是拿了房卡的住客,内部存储则是 App 的房间,每个 App 都是没法看到对方保存过的数据的


所以要是只说 App 的数据存储方式,安卓其实和 iPhone 是一样安全的。


不仅如此,安卓还能自动识别「 内部存储 」里的临时文件,缓存超过一定大小后就会被自动清理


( 所以其实我们本来不需要市面上各种「 垃圾清理工具 」的,系统本身就可以帮我们全搞定了。 )


但安卓和 iPhone 最大的一点区别就是:安卓这家酒店,它有一个特别大的「 酒店大堂 」。


安卓提倡开放,所以在内部存储之外又设置了一个「 内部共享存储空间( 简称存储空间 )


像我们插上 USB 线,能在电脑里直接看到的手机目录,就是这个内部共享存储空间。


本来这个设计是方便给用户传照片、传歌曲的,结果却被 App 开发者们当成了可以用来钻的孔子。


内部空间虽然好,但开发者也需要更认真地设计自己的 App 数据保存结构。


如果因为开发者自己的疏忽,不小心把 App 的重要数据保存到了安卓系统的缓存目录,到时候数据被删了都没地方哭去


开发者需要认真设计自己 App,才不会在运行时出错


所以比起掉头发去费力设计存储方案来解决这个问题,当然还是把东西一股脑扔到「 三不管地带 」来的更省事了。


而「 内部共享存储空间 」就是这个三不管地带,只要 App 从用户手里拿到了存储空间读写权限,就可以想干嘛干嘛了。


而微信,恰巧就是这千万 App 大军中的一员。


这个操作,在安卓开发界早就不是什么秘密了,像 alipay 文件夹是支付宝生成的,netease 文件夹是网易相关的 App 生成的,而这些还是愿意自正身份的。


更有一些 App 会把文件叫起名叫 data( 数据 )、system( 系统 )或者 .SystemConfig( 系统参数 )这类令人不敢轻易删除的名称。


就好像有个人,不想去费脑筋做垃圾分类,所以就偷偷挖了个坑,把垃圾给埋了,旁边还竖了个「 内有高压线缆 」的牌子吓唬人。


开发者不但不优化自己的 App,反而想方设法让用户给权限


差评君发现,假设我们有所顾虑,拒绝给 App 授权访问存储空间,App 马上就会「 甩脸子 」,自己结束运行。

 

直到什么时候点了允许,才能继续进入到 App 后续的界面。


一件本来不那么光彩的事,随着这么干的开发者越来越多,反而变得「 名正言顺 」了起来。


如果开发者只是犯懒,把自己的数据导出乱扔,那对我们来说无非就是目录乱一点,需要额外花点精力清理存储垃圾。 


但最要命的是,获得了这项权限的 App,实际上可以读取共享存储空间内的所有文件!


别忘了,这个共享存储空间就好像酒店的大堂,一个 App 放在这里的东西,自然别的 App 也可以随便查看。


一旦怀有坏心思的 App 获得了存储空间权限,不但能读取到我们拍摄的照片和视频,像微信这种没有规范存储自己数据的 App 也有信息泄露的风险。


如果这些图片里有我们拍摄的身份证照片、自拍近照,那很有可能下个月就能收到网贷公司的催债电话了。。。


虽然我们有心防范这种问题,但在国内,存储空间权限已经被开发者搞成了「 必需权限 」,导致用户根本没法分辨哪些 App 包藏祸心 。


比如前一阵就有用户发现京东金融 App 偷偷上传相册图片,但之后官方回复称,只是预先收集了可能会用于客服咨询的屏幕截图。


这件事情虽然直到最后都没有定论,但也从侧面证明了差评君说的事情是很有可能会发生的。


说不定现在你手机里就存在着某个 App,表面看着无害,实际却在后台偷偷收集并上传着你的相册图片和微信语音数据。。。



微信的整体设计显然是在乎用户隐私的,比如在 App 内可以转发图片、视频、附件,但就是不能转发语音。


差评君后来发现,现在微信的语音文件,已经不能像世超大学时那样,直接使用手机自带播放器播放了。


显然微信团队也发现了这个问题,这才给语音文件套上了一层加密,只有腾讯自家的「 腾讯文件管理器 」才能正常播放。


但是你既然都意识到了,为什么不能一开始就把它做好啊


微信作为腾讯的头牌产品,开发人员不可能在这上面犯懒,现在的做法难道是当初欠下的「 技术债 」?


显然微信现在的解决办法,差评君觉得还不够:只要语音文件还暴露在公共存储空间,我们的隐私就依旧有暴露的可能。


毕竟这个世界上有人研究加密技术的同时,也有无数的人在研究解密技术。


BAT 作为国内互联网的头部企业,在 App 的质量上没起表率作用,更别提其他国内小厂商的 App 了,滥用存储权限现象常常发生。


存储权限被滥用,谷歌曾建议大家不要这么做,国内的《安卓绿色应用公约》也对相应内容提出了要求,但响应者寥寥无几。


《 安卓绿色应用公约 》中建议避免获取存储空间权限的相关条款


毕竟「 建议 」和「 公约 」不是强制的,开发者不愿意,谁也没办法强迫。


说不动开发者,谷歌干脆在安卓 10 的测试版中强行隔离了 App 的存储空间读写权限,只允许 App 访问相册和其他一些文件夹。


即便是这种不需要开发者做多少改动的办法,也遭受了开发者的强烈抵制,搞得谷歌不得不按下这项改动,宣布推迟到安卓 11 再强制执行。。。


我们老说用 iPhone 省心,其实如果按照谷歌对安卓的设想,用安卓也可以很省心。


但就像一块没有围挡的草坪,即使旁边立起了警示牌,也依旧会被踩得面目全非。

 

显然,一些什么「 建议 」和「 公约 」根本没法就能让开发者做出改变的,公约需要搭配有力的执行手段,才能发挥出应有的效果。


在工信部的统一推送联盟与《 安卓绿色应用公约 》联手后,事情明显出现了好转。


差评君又检查了一遍自己的手机,发现包括京东、知乎、爱奇艺和手机淘宝在内的不少头部 App,已经可以在不授予存储空间权限的情况下正常运行了


有些事情,在技术上可能并没有那么难,只是因为缺乏强力的外部监管导致一拖再拖。


差评君相信,只要安卓生态的各个环节都齐心向上了,安卓手机的使用体验未必会比 iPhone 差。

 

特别感谢:冯森林先生对本篇文章撰写提供的技术支持。

冯森林( Oasis Feng ),《 安卓绿色应用公约 》发起人,开发了绿色守护、Island、Nevolution 等增强安卓使用体验的 App,前阿里无线事业部资深技术专家。

 


“ 差评君手机上要和不要存储权限的 App 数量是 1:1,你的呢?”


评论

0/500
登录后才能评论哦~

暂无评论