什么是SDK,哪种SDK容易受到攻击?

2022-08-24 09:52:55 浏览数 (1)

摘要:在手机应用中,集成第三方 SDK的优势是显而易见的,与此同时,第三方SDK也会对手机用户的隐私和安全性产生威胁。

依据《个人信息保护法》《网络安全法》《电信条例》《电信和互联网用户个人信息保护规定》等法律法规,工业和信息化部今年年初组织第三方检测机构对移动互联网应用程序(APP)进行检查,当时有100余款APP未完成整改。

检测过程中发现,13款内嵌第三方软件开发工具包(SDK)存在违规收集用户设备信息的行为。工业和信息化部要求相关APP及SDK应在2月25日前完成整改落实工作。逾期不整改的,将依法依规组织开展相关处置工作。

APP因为过分窃取客户隐私等违规行为,被要求整改,APP:Application,各类手机应用软件,那么SDK又是什么?怎样对我们的个人隐私造成了威胁,我们又该如何应对呢?

什么是SDK?

SDK,英文名称为Software Development Kit,即软件开发工具包。广泛来说,它是辅助开发某一类软件的相关文档、范例和工具的集合。而对手机来说,通常情况下,SDK是在APP中提供某种功能或服务的插件。它就像是一种通用的功能或者服务模块,可以作为插件方便地嵌入到不同的APP 中使用。

随着手机移动市场份额的快速增长,应用程序开发人员的数量也增长迅速。为了缩短开发时间和提高开发效率,手机应用开发商将多种类型的第三方SDK(软件开发工具包)集成到他们的应用程序中。这些SDK 是由广告、数据、社交网络、地图和推送平台等第三方服务提供商所开发的工具包,可以提供专业的服务,其中封装了复杂的逻辑实现以及请求响应的过程,使其更便于开发人员使用。不难看出,第三方SDK已经成为手机应用生态系统的重要组成部分。

SDK的运行机制

以安卓系统为例

(1) 第三方 SDK 向远程服务器发送请求,图1展示了这种类型SDK的运行机制,例如,提供广告服务、推送消息服务的第三方 SDK 采用这种机制。

由于HTTP没有加密传输数据,因此不能保证数据隐私以及完整性。HTTPS(超文本传输安全协议)是一种用于在不可信网络上实现安全连接的网络通信协议,它将 SSL/TLS 的安全功能添加到标准 HTTP(超文本传输协议)通信中,因此只要正确实现并配置,就可以防止窃听和中间人攻击。使用 HTTPs 替代 HTTP 已成为一种趋势,然而仍有许多第三方 SDK 使用 HTTP 协议,通过网络连接到云服务器,这意味着很高的安全风险。   

(2) 第三方SDK启动本地服务

有些第三方 SDK在主机应用程序中设置本地服务器,以确保这些 SDK的制造商可以可控地监视移动设备。 本地服务器能够收集当前设备中的位置、IMEI、安装信息等信息,而远程服务器可以发送请求并从本地服务器 检索这些信息。甚至是远程安装与卸载也可以通过与本地服务通信来实现。图2描述了这种类型的 SDK 的工作机制。虽然我们可以采取一些措施来使本地服务器由正确的远程服务器控制,但是我们的通信信道可能被攻击者劫持,这使得攻击者能够与本地服务器交互。

在手机应用中,集成第三方SDK的优势是显而易见的:首先,应用程序可以获得专业公司在各个领域提供的高质量资源,例如地图(如 GoogleMap)、交通数据、天气数据等;其次,如果应用程序将类似PayPal的第三方SDK包含在内,它就可以执行像付款这样复杂的功能。这些 SDK有助于提高应用的开发效率,并且实现更加健壮,尤其是对于小型的开发团队。另外,广告平台(例如 AdMob)这种第三方SDK可以帮助应用程序的开发者获得收益。

SDK与个人隐私

与此同时,第三方SDK也会对手机用户的隐私和安全性产生威胁。许多研究证实,一些第三方SDK存在隐私泄露问题。据The Hacker News报道,Taomike(中国最大的移动广告提供商)和百度提供的第三方SDK都曾被曝出存在安全漏洞,这两个软件秘密监视用户,将敏感信息上传到远程服务器,并在用户的设备上开启后门。然而,这些 SDK已经集成到众多手机应用中。

除了侵犯用户隐私以外,有些第三方SDK还会采取不安全的实现方式,增加其宿主应用程序的攻击面,从而对用户安全造成威胁。甚至是Facebook 和Dropbox这种信誉良好的软件公司的SDK也被发现存在严重的安全漏洞。这些漏洞带来的攻击包括:将敏感数据泄露到公开可读的数据源、代码注入攻击、帐户劫持、将受害者设备连接到攻击者控制的Dropbox帐户等。

Ma K, Guo SQ,分析验证了第三方SDK中存在多个漏洞,他们将其分为 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 利用代码来检查宿主应用程序是否请求了某个权限(执行此检查的代码示例如图3所示)。

图3.Android 应用中的权限检查图3.Android 应用中的权限检查

4:身份识别

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

图4.推送服务的架构图4.推送服务的架构

由 Google提供的Google Cloud Messaging(GCM)SDK 被许多应用程序订阅,包括 Facebook、Oracle、Skype 等,它的运行机制类似于 Apple Push Notification Service。据报道,一些网络犯罪分子使用 GCM 来控制恶意软件。除了Google和苹果之外,还有许多其他第三方推送消息服务提供商都为应用程序开发人员提SDK。

Android 日志系统为开发人员提供了记录应用程序和设备运行状态的接口。日志消息被写入设备的内部存 储中。开发人员通常使用 android、util、log打印调试信息。但是,如果他们在应用上线前未关闭日志,则会成为安全风险。在开发中,开发人员通常使用 debug 属性,该代码确定是否输出日志(如图5所示),这使得很容易修改调试属性。

图5.AndroidManifest.xml 中的有关Log的属性图5.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代码中调用本地代码。远程网页可以利用反射机制来执行自己的命令。(如图6所示)

图 6. JavaScript 代码执行本地命令图 6. JavaScript 代码执行本地命令

2021年以来,国家陆续出台了《个人信息保护法》、《网络安全法》等律法建立了健全的隐私保护制度,保护大数据时代下的个人信息安全与隐私。对于每个用户来讲,我们很难判断哪些软件是安全的,因此我们应谨慎开放软件权限,有意识的保护自己的隐私。而作为 SDK服务商,更要遵守国家法律,从根源做起,绝不写入恶意功能。

部分参考链接:1.https://www.miit.gov.cn/jgsj/xgj/fwjd/art/2022/art_f310953aa246408a8a1612168232bc1f.html

2. https://thehackernews.com/2015/10/android-apps-steal-sms.html

3. https://www.ibtimes.co.uk/baidus-moplus-sdk-found-put-100-million-android-devices-risk-through-wormhole-1526975

4. http://blog.parse.com/learn/engineering/ discoveringa-majorsecurity-hole-in-facebooks-android-sdk

0 人点赞