过去几个月,安全研究人员发现,许多移动广告库存在严重漏洞,可能被用来滥用Android应用程序的权限,或在用户的设备上执行未经授权的代码。安全研究人员表示,如果这些库使用HTTPS,这些漏洞带来的风险将大大降低。
安全公司FireEye的研究人员最近报道许多广告库通过不安全的连接将敏感的功能暴露给JavaScript代码,使得使用它们的应用程序容易受到中间人攻击。他们说,攻击者可以通过DNS劫持或侵入互联网网关等方式拦截来自此类库的通信,从而向连接注入恶意JavaScript代码,利用主机应用程序的权限执行未经授权的操作。
例如,FireEye的研究人员说,如果一个使用易受攻击的广告库的应用程序获得访问Android设备摄像头的许可,那么远程攻击者就可以利用这个问题在互联网上拍照或录制视频,而无需用户的同意。
该漏洞源于一个名为addJavascriptInterface的Android API(应用程序编程接口)特性,该特性允许运行在WebView中的JavaScript代码访问应用程序的原生功能。WebView是一个浏览器窗口,应用程序可以用它来显示Web内容。
广告库,也称为广告sdk(软件开发工具),由第三方代码,很多开发人员包括在他们的应用程序为了赚取收入来自广告显示在应用程序。这些库通常使用WebView特性显示广告加载从远程服务器和他们中的许多人也使用addJavascriptInterface更高级的功能。Android设备用户如果想密切关注自己的应用中运行的移动广告网络,可以下载Lookout这样的产品广告网络检测器。
当使用addJavascriptInterface方法并通过未加密的HTTP连接在WebView中加载远程内容时,就会出现安全风险,因为普通HTTP通信很容易被处于拦截位置的任何人篡改。
“我们的分析显示,目前,前40大广告库中,至少有47%在谷歌Play上流行应用的活跃版本中存在这种漏洞,”FireEye的研究人员说。
然而,与addJavascriptInterface相关的安全风险已经被知道一段时间了。九月,伦敦安全公司MWR InfoSecurity的研究人员报告说,addJavascriptInterface的使用(他们称之为JavaScript桥接),加上HTTPS的缺乏,可以利用在设备上获得反向TCP shell吗。他们也指出,许多广告库很容易受到这种攻击。
谷歌甚至放了一张安全券进去官方的Android开发者文档addJavascriptInterface。“在包含不可信内容的WebView中使用此方法可能会允许攻击者以非预期的方式操纵主机应用程序,使用主机应用程序的权限执行Java代码,”注释中写道。在WebView中使用此方法时要特别小心,因为它可能包含不可信的内容。
为了限制安全风险,从Android 4.2开始,谷歌增加了一个名为@JavascriptInterface的注释,开发者可以使用它来定义他们想要公开给运行在WebView中的JavaScript代码的Java方法。这本质上是一种白名单机制,迫使开发人员决定他们想要允许的功能。
然而,根据FireEye的研究人员,虽然@JavascriptInterface注释在理论上是一种改进,但它的有效性实际上取决于开发人员如何使用它。开发人员还可以添加代码,这样通过暴露的方法从JavaScript触发的任何动作都需要经过同意。
FireEye的研究人员说,一个叫做InMobi SDK的流行广告库从3.6.2版本开始使用@JavascriptInterface。InMobi在3.6.2和3.7.0版本中公开的Java方法包括:createCalendarEvent, makeCall, postToSocial, sendMail, sendSMS, takeCameraPicture, getGalleryImage和registerMicListener。
FireEye的研究人员称,除了makeCall之外,InMobi要求用户同意使用这些方法进行操作。“如果应用Android CALL_PHONE许可,使用操作InMobi版本4.0.2,攻击者在网络上(例如,使用wi - fi或DNS劫持)可能滥用makeCall注释应用打电话在设备上没有得到用户的同意,包括高端数字,“FireEye研究者说。
研究人员将这种类型的漏洞命名为JavaScript侧门或JS侧门。
研究人员说,在FireEye通知InMobi公司这个问题后,InMobi在4.0.4版本中增加了makeCall行为的同意要求。不过,他们说,谷歌Play上仍有许多应用程序使用了这个广告库的较老版本和易受攻击的版本。
研究人员表示:“我们在谷歌Play上发现了3000多个包含InMobi 2.5.0到4.0.2版本的应用程序,截至2013年12月,每个应用程序的下载量都超过了10万次。”“目前,这些受影响的应用程序的下载总量超过37亿。”
据FireEye的研究人员说,即使有同意的要求,在WebView与服务器的连接没有加密的情况下,将Java方法暴露给JavaScript仍然是危险的。他们说,攻击者可以使用社会工程的方法来欺骗用户,让他们同意恶意行为。
FireEye的高级研究员陶伟(音译)在电子邮件中表示,WebView中注入的虚假彩票相关信息、免费优惠券或其他形式的优惠可能被用来误导用户点击同意按钮。他说,拥有正确证书验证的HTTPS将比HTTP提供更好的保护。
在这个问题上,InMobi似乎比许多其他广告库处于更好的位置。据Wei说,其他广告库在最新版本中仍然存在更严重的addJavascriptInterface漏洞。魏拒绝透露其中任何一个库的名字,因为FireEye仍在通知其开发人员。
InMobi是FireEye到目前为止发现的唯一一个使用了@JavascriptInterface注释但存在JS边门问题的库,他说。“我们希望其他供应商意识到这个问题,不要再重复。”
Android版本的碎片化也是一个问题。@JavascriptInterface机制只适用于安卓4.2及以上版本,但根据谷歌发布的最新数据,1月初访问过谷歌Play的安卓设备中,大约75%运行的是安卓4.2以上版本。
“第三方库中JS绑定和JS绑定注释的不安全使用暴露了许多包含这些库的应用程序的安全风险,”FireEye的研究人员说。“当第三方库使用JS绑定时,我们建议使用HTTPS来加载内容。”
InMobi不同意FireEye的结论。
InMobi隐私主管兼EMEA地区法律总顾问克里斯•戴维斯(Chris Davies)通过电子邮件表示:“不幸的是,FireEye采取了行业层面的担忧,并将这些担忧专门应用于InMobi,在此过程中对我们的产品做出了一些错误的假设。”“他们对行业潜在的弱点泛泛而论,并将其应用于InMobi,却不了解我们的产品和我们的产品。承诺保护隐私和安全。我们曾试图与火眼公司就他们的索赔进行磋商,但我们开启有意义对话的努力迄今未获成功。”
Davies说:“需要理解的是,潜在的破坏需要包括多种条件,而这些条件极不可能同时发生,真正的潜在风险充其量是最小的。”
他同意使用HTTPS可以减少潜在的攻击,但也表示还有其他技术手段可以达到同样的效果。
他说:“虽然HTTPS是互联网的一种标准技术,但即使在桌面世界,也有你想应用HTTPS的场合,也有你不想应用的场合。”“HTTPS是一种CPU和网络密集型协议。还有许多其他的“更轻”技术可以提供同样的好处。”
Davies说,InMobi在移动领域找不到任何通过HTTPS进行所有交易的广告网络。“在广告技术行业,我们都知道HTTPS的好处,但仍然选择不使用它,肯定是有原因的。”
InMobi已经对设备识别码进行加密,这样如果有人嗅探广告请求,他们获得的数据就不能与特定的设备识别码相关联,他说。Inmobi计划在请求广告之前,在我们的SDK中使用一个秘钥对所有用户信息进行加密。这将包括在我们的下一个版本的SDK中。”
Davies说,公司在鼓励开发者使用最新版本的SDK上做出了巨大的努力。“当我们推出产品或产品的新改进版本时,我们会进行全面的市场营销和传播活动,包括直接向我们数据库中的开发者和出版商发送电子邮件,以及使用新闻发布、文章、采访、博客帖子、视频等提高公众意识的策略。”
他说,如果认为存在重大安全风险,公司将建议应用程序开发者立即升级到新的SDK版本。
一些安全专家认为,实现HTTPS对性能的影响不应该超过其在安全方面的好处。
安全公司Bitdefender的高级电子威胁分析师Bogdan Botezatu说:“很多应用程序,比如电子邮件客户端和社交网络客户端,已经完全迁移到SSL而没有副作用。”“我们说的是个人信息通过网络未经加密发送,这是应用开发者应该认真对待的事情。”
上个月Bitdefender的研究人员说在一个名为HomeBase SDK的广告库中发现了一个漏洞如果库使用HTTPS,那么风险就会小一些。他们发现HomeBase通过HTTP更新自己,允许中间人攻击者潜在地向流量注入流氓更新包,然后在主机应用程序许可的情况下在设备上执行。
总部位于以色列的开发HomeBase SDK的公司Widdit当时表示,它计划在1月底之前通过SSL来保证流量的安全。
博特扎图说:“根据设计,移动设备大部分时间都在连接用户无法控制的无线网络,比如咖啡店、机场等地的无线网络。”更重要的是,任何人都可以在没有安全设置的情况下设置一个流氓接入点,引诱附近的用户连接到这个接入点,然后拦截或操纵流量。对Wi-Fi网络的中间人攻击绝对是一个需要考虑的可能性。”
MWR Infosecurity的安全顾问Robert Miller说,即使到目前为止还没有关于利用addJavascriptInterface问题进行真实世界攻击的报告,攻击者发现它们只是时间问题。“这是什么时候的问题,而不是是否会。”
米勒说,MWR的研究人员建造了一个概念验证盒,可以放置在任何无线网络上,拦截和利用连接到该网络的电话的流量。
JavaScript桥攻击非常容易,Miller说。他说,通过阅读网页并使用在线免费提供的工具,攻击者可以在半小时内将其准备好。
HTTPS会减轻中间人的攻击,但像流氓广告这样的潜在进入广告网络并利用这一问题的攻击则不会。然而,添加HTTPS将极大地提高广告库供应商提供给客户的安全级别,米勒说。