当我们使用官方应用程序商店并下载评价良好的流行应用程序时,我们会认为它们是很安全的。通常来讲,这的确是一个正确的意识。类似这样的应用程序在被开发时,它的开发人员都会对安全性进行考虑,并且应用商店的安全团队也会在它被上传时进行审查。
不过,来自卡巴斯基实验室的安全研究员Roman Unuchek在最近用他的研究结果告诉我们,这种意识似乎只有部分是正确的。即使是来自官方应用商店,下载评价良好,且已经十分流行的应用程序同样存在潜在的安全问题。
Unuchek在本周二发表的一篇博文中表示,大约有400万款流行的移动应用程序是不可靠的,因为它们的开发人员使用了不安全的第三方软件开发工具包(SDK),这导致用户数据以未加密的形式泄露。可能被泄露的数据包括姓名、性别、年龄、收入、电子邮件地址、设备信息、GPS数据、通话记录以及短信和电话号码等敏感信息。
这些第三方SDK通常是被免费提供的,允许应用程序开发人员在应用程序开发过程中直接实现一些现有的功能,进而节省开发时间,使得他们能够将更多的精力投向其他更重要的元素。但是,这种“便捷”意味着开发人员不太可能会去深究所使用的第三方代码的所有细节,进而使得代码中存在的一些潜在的安全问题有很大可能不会被发现。
对于Unuchek用于分析的几款流行社交应用程序,它们的开发者都使用了第三方SDK。每个应用程序至少包含40个不同的模块,它们构成了这些应用程序的一大部分。其中至少有75%的Dalvik字节码位于第三方模块中,在其中一款应用程序中,第三方代码的比例竟然高达90%。
另一方面,这些第三方SDK都会内置广告开发工具包。这对于免费应用程序的开发人员来说至关重要,因为如果没有广告,开发人员将难以获得收入来对应用程序进行改进和维护。
开发人员可以通过第三方SDK内置的广告开发工具包调用由广告提供商提供的API,这个API则会从广告提供商那里获取广告,并在应用程序的适当位置进行展示。当有用户点击这些广告时,应用程序的开发人员便能够从广告提供商那里获得一定比例的推广提成。
另一个事实是,这些广告开发工具通常都会收集关键用户信息,用以帮助广告提供商展示更具针对性的广告。而问题就出在这里,如果这些信息的收集和传输过程并没有得到很好的保护,那么用户的敏感信息便会因此而遭到泄露。
根据Unuchek的描述,在他用于分析的应用程序中,部分应用程序仍在通过HTTP传输未加密的用户数据。这些数据可能会因为未受保护的Wi-Fi网络、互联网服务提供商或家用路由器上的恶意软件而遭到攻击者的拦截和修改。
从2016年下半年开始,越来越多的应用程序开始从HTTP切换到HTTPS,因为后者更安全。截至到2018年1月,63%的应用程序已经开始使用HTTPS。但事实上,它们其中大多数(几乎90%)也仍然同时在使用HTTP,并且许多应用程序都在传输未加密的敏感数据。
Unuchek决定通过搜索两个最流行的HTTP请求——GET和POST来找出有哪些应用程序和SDK存在泄露用户数据的问题。他所的到的结果如下:
应用程序通过GET请求泄露数据的四个最受欢迎的广告网络域名(包含在SDK中)包括mopub.com(至少有五款拥有超过1亿次的下载量),rayjump.com(其中两款的安装量超过5亿,七款的安装量超过1亿,另外还有许多安装量超过数百万的应用程序),tappas.net
(七款安装量超过1千万)和appsgeyser.com(根据其网页显示的信息,有超过600款应用程序使用了它,安装量接近20亿,近2000亿条广告被展示)。
应用程序通过POST请求泄露数据的四个最受欢迎的广告网络域名包括ushareit.com(其中一款在Google Play商店拥有超过5亿次的安装量),Lenovo(由于开发人员错误而泄露用户数据),Nexage.com(有大量的应用程序使用它,其中一款安装量超过5亿,另有七款安装量超过1亿)和Quantumgraph.com(在Google Play商店有两款安装量超过1千万,另有七个款安装量超过1百万)。
就如文章开头提到的那样,在大多数情况下,这些SDK会泄露设备信息(屏幕分辨率、存储容量、音量、电池电量、操作系统版本、IMEI、IMSI和语言),网络信息(操作员名称、IP地址、连接类型、信号强度、MAC),设备坐标,Android ID,应用程序使用情况以及用户名、年龄和性别等个人信息。另外,电话号码和电子邮件地址也可能遭到泄露。
出于安全等因素的考虑,卡巴斯基实验室的研究团队并没有将这些SDK背后的广告提供商及应用程序的名称进行公布。他们只是建议开发人员应停止使用HTTP,并为前端开启301重定向到HTTPS。另外,开发人员还应加密数据,始终使用最新版本的SDK,并在发布前检查应用程序的网络通信。
对于最终用户来说,研究人员建议用户需要检查每个应用程序请求的权限,并仅授予应用程序功能所需的权限。另外,还应该使用VPN,这将加密设备和外部服务器之间的网络流量。
网友评论