SDK会侵犯我们的个人隐私吗?

与此同时,第三方SDK也会对手机用户的隐私和安全性产生威胁。许多研究证实,一些第三方SDK存在隐私泄露问题。据The Hacker News报道,Taomike(中国最大的移动广告提供商)和百度提供的第三方SDK都曾被曝出存在安全漏洞,这两个软件秘密监视用户,将敏感信息上传到远程服务器,并在用户的设备上开启后门。然而,这些 SDK已经集成到众多手机应用中。
除了侵犯用户隐私以外,有些第三方SDK还会采取不安全的实现方式,增加其宿主应用程序的攻击面,从而对用户安全造成威胁。甚至是Facebook 和Dropbox这种信誉良好的软件公司的SDK也被发现存在严重的安全漏洞。这些漏洞带来的攻击包括:将敏感数据泄露到公开可读的数据源、代码注入攻击、帐户劫持、将受害者设备连接到攻击者控制的Dropbox帐户等。
Ma K, Guo SQ,分析验证了第三方SDK(https://www.ipdatacloud.com/?utm-source=LJ&utm-keyword=?1088)中存在多个漏洞,他们将其分为 6 种类型,并给出了给出了对分析结果的总结:

同时列举了并描述一些易受攻击的 SDK 的示例:
1:滥用HTTP
虽然使用 HTTP 协议进行网络连接已被认为是不安全的,但是我们发现许多第三方 SDK 仍然使用此通道 与远程服务器进行通信。更糟糕的是,一些重要数据还通过 HTTP 通道以明文或密文的形式传输,如IMEI(Int’l mobile equipment identity)。
2:滥用SSL/TLS
HTTPS(SSL/TLS 上的 HTTP)只有在恰当的实现和配置下才会使通信信道安全。要想建立安全的 SSL/TLS 连接,客户端必须检查证书链和主机名是否有效。如果主机名与服务器的域名匹配,则该主机名有效。如果证书链符合以下要求,则被认为有效:(1) 链中的每个证书都没有过期或撤销;(2) 根证书由 CA 在客户端的密钥库中发起;(3) 在多于 1 个证书的情况下,每个证书必须在放入链中后立即由 CA 签名。Lu L, Li Z, Wu Z, Lee W, Jiang G系统地研究了不正确的SSL/TLS证书验证过程所带来的威胁。通过分析,发现这些威胁在第三方SDK中也很常见。
3:滥用敏感权限
通常情况下,Android 应用程序会请求比所需要的更多的权限。它们使用额外的权限来窥探用户的隐私信息,甚至植入恶意背景的插件。分析显示,16个SDK有上述恶意行为。当应用程序开发人员将第三方SDK加入到应用程序中时,会将某些权限、组件、数据等信息添加到 manifest 文件中。
Umeng 是一个推送消息 SDK,可以请求用来发送 SMS、读取SMS和接收SMS的权限。在对其他推送消息SDK分析之后,我们认为这些权限对于核心功能来说并不是必要的。
另外,第三方SDK可以与主机应用程序共享manifest文件中的权限,也就是说,即使 SDK 在开发文档中没 有声明需要某些权限,如果 manifest 文件声明,那么它也可以使用这些权限。这些 SDK 利用代码来检查宿主应用程序是否请求了某个权限(执行此检查的代码示例如图1所示)。

图1.Android 应用中的权限检查
4:身份识别
推送消息 SDK是第三方SDK中的一个比较常见的类型,它能够帮助移动应用程序开发商向在用户设备上运行的 APP 传递消息和通知。推送消息SDK的结构如图2所示。找到这个服务的结构并不困难,但是因为该服务需要协调开发人员与应用之间的交互,这使得它容易出错。

图2.推送服务的架构
由 Google提供的Google Cloud Messaging(GCM)SDK 被许多应用程序订阅,包括 Facebook、Oracle、Skype 等,它的运行机制类似于 Apple Push Notification Service。据报道,一些网络犯罪分子使用 GCM 来控制恶意软件。除了Google和苹果之外,还有许多其他第三方推送消息服务提供商都为应用程序开发人员提SDK。
Android 日志系统为开发人员提供了记录应用程序和设备运行状态的接口。日志消息被写入设备的内部存 储中。开发人员通常使用 android、util、log打印调试信息。但是,如果他们在应用上线前未关闭日志,则会成为安全风险。在开发中,开发人员通常使用 debug 属性,该代码确定是否输出日志(如图3所示),这使得很容易修改调试属性。

图3.AndroidManifest.xml 中的有关Log的属性
在 Android 4.1版本之前,具有 READ_LOGS 权限的 Android 应用程序能够读取设备上所有应用程序的日志文件。因此,将敏感数据写入日志会导致敏感数据泄露。在分析中发现 mapbar SDK(专业的电子地图提供商)会将个人身份信息,如 IMEI 通过日志进行记录。在分析的129个第三方SDK中,有 12 个包含此漏洞。
5.应用程序开发人员的失误
(1) uid 误用
一些社交平台如 Facebook、Twitter、新浪微博等提供了 SDK 用于第三方登录,这可以帮助用户快速完成登录或注册过程,无需为当前访问的应用程序注册新帐户。这些SDK使用 OAuth 2.0协议对用户的账户进行身份验证。如果用户通过认证,SDK 的服务器将返回访问令牌和 uid(用户在该平台上的唯一标识)到当前应用程序的服务器。之后,应用程序可以使用访问令牌和 uid访问用户授权的资源。然而,一些应用程序开发人员只使用 uid 作为用户的凭证,在这种情况下,攻击者可以拦截 uid,并将其篡改为指定 uid 进行登录。
(2) 使用不安全的API
当第三方SDK在 WebView 中使用 JavaScriptInterface 时,远程 Web页面可以通过这个接口执行本地命令。
当 WebView 显示页面时,会在JavaScript代码中调用本地代码。远程网页可以利用反射机制来执行自己的命令。(如图4所示)

图 4. JavaScript 代码执行本地命令
2021年以来,国家陆续出台了《个人信息保护法》、《网络安全法》等律法建立了健全的隐私保护制度,保护大数据时代下的个人信息安全与隐私(https://www.ipdatacloud.com/?utm-source=LJ&utm-keyword=?1088)。对于每个用户来讲,我们很难判断哪些软件是安全的,因此我们应谨慎开放软件权限,有意识的保护自己的隐私。而作为 SDK服务商,更要遵守国家法律,从根源做起,绝不写入恶意功能。