继iOS7.1.1出现多个漏洞后。近日,Android系统中也被发现一新漏洞,可在用户完全不知道的情况下使用设备自带摄像头进行拍照并上传。
该漏洞的发现者Sidor表示,虽然他已经在Google Play的大量软件中发现可秘密拍下照片的功能,但它们每个都会在屏幕上显示出对应的操作内容。不过,这次他发现的新漏洞却完全不是这么一回事,它可以悄无声息地完成拍摄、上传的一系列操作。
Sidor称,他只是破解了一个极为简单的漏洞就完成以上所说的一切,他将原先的预览图片换成了像素提示。而在一般情况下,人们基本上不大可能注意到这个像素提示。
令人最感到害怕的是,该像素提示是绝对不会在高分辨率的手机屏幕上出现,而且即便Android手机处于黑屏状态,摄像头仍旧可以正常运转。Sidor已经Android安全团队反映了这个问题,希望Android能够尽快修复好这个漏洞,保护好用户的隐私。
扩展阅读:Android“隐匿拍照”漏洞详解
漏洞原理:
Android camera进行拍照的一般步骤如下:
调用Camera的open()方法打开相机。
调用Camera的startPreview()的方法开始预览取景。
调用Camera的takePicture()方法进行拍照
第一步的工作是在后台进行,而第二步则是关键。由于Android规定,必须显示Preview,才能进行拍照,这样就造成,很难达到隐匿拍摄。考虑到这种情况,使用了以下几种方法进行preview隐藏均告失败。
把preview设置为invisible——失败:Android忽略preview的这个设置属性。
把preview设置为transparent——失败:Android忽略preview的这个设置属性。
用另一个View覆盖preview——部分失败:上层的view依然显示在屏幕上。
最后Szymon Sidor 发现了一种极端巧妙的方法:把preview设置为1*1 像素,这个方法获得了完全的成功,达到了隐匿拍摄的目的。
目前,手机的分辨率越来越高,以Nuxus5为例,其分辨率是1920×1080像素,屏幕像素密度高达445ppi,在这样的高分辨率下,1像素对肉眼来说,几乎完全注意不到它的存在。这样就实现了界面几乎完全不可见,通过前置或后置摄像头便会向这个只有1像素大小的视图对象反馈视频预览,后台可以直接把偷拍的照片通过Internet发送到远程服务器。
漏洞实现:
研究员在对漏洞进行研究后,并进行了漏洞实现,下面是漏洞实现的部分关键代码: