Flash通配符安全域风险

时间:2015-03-23 09:55:53

标签: actionscript-3 security flash cross-domain-policy

我对使用Flash的方法security.allowDomain中使用通配符作为安全域的风险提出了疑问。

假设Flash应用程序唯一能做的就是连续显示一些帧或图像,并且没有任何令人兴奋的功能。 Flash应用程序实现System.security.allowDomain('*'),但服务器没有跨域策略文件。

来自allowDomain documentation的第一张图片显示恶意SWF可以使用Flash应用程序的所有功能和通配符安全策略。但是因为这个应用程序没有任何令人兴奋的功能,所以这不是问题。

如果没有功能,恶意SWF是否可以从Flash应用程序中窃取cookie或其他数据? Adobe将跨脚本定义为:

  

movieA.swf可以在movieB.swf中检查修改变量,对象,属性,方法等

这是否意味着恶意SWF可以修改函数以在Flash应用程序的安全上下文中返回cookie或执行JavaScript?

另一个资源this tutorial page讨论了跨域策略文件和allowDomain函数之间的区别:

  

加载到当前安全域的SWF的信任超出了通过allowDomain给出的信任。而使用allowDomain,你可以有效地提供SWF 你可以做的任何事情,我可以做权限,当你将SWF加载到同一个安全域时,你可以按照的方式给予他们权限。做任何事情

但让我感到困惑的是该页面描述了由于loadBytes方法而导致这种差异不存在:

  

你可以做的任何事情,我可以做我可以做任何事情之间的区别。不同的是,实际上没有区别。

那么allowDomain('*')的风险是什么,但是没有功能或跨域策略文件?

2 个答案:

答案 0 :(得分:1)

真正的区别在于allowDomain允许在代码级别进行跨域访问,而crossdomain.xml可以被视为允许访问静态内容文件。


  

这是否意味着恶意SWF可以修改函数以在Flash应用程序的安全上下文中返回cookie或执行JavaScript?

使用allowDomain时,仅当包含此信息的公共方法或变量或在SWF中允许此功能时才会使用。{/ p>

使用crossdomain.xmlexploit like this are available,可以通过无限制的Flash域设置绕过Same Origin Policy。它不是完全访问权限,因为攻击者无法直接读取cookie,但如果网站功能允许,他们可以使用它们来检索其他数据。

即。您将允许任何托管SWF的域向您的域发出请求,然后检索响应。因此,您的用户可以通过您网站上的网络浏览器查看的任何信息,攻击者也可以检索(假设您的用户已登录到您的网站并使用相同的浏览器浏览攻击者的网站)。

  

但让我感到困惑的是该页面描述了由于loadBytes方法而导致这种差异不存在:

如果您信任其他域的SWF,那么可以使用loadBytes加载另一个SWF。例如您的域A可能信任域B但不信任C。如果您从域B加载SWF,则该SWF可能会使用C从域loadBytes加载某些内容,从而破坏您的信任模型。

答案 1 :(得分:0)

据我所知,正如袭击者所喜欢的那样,让你的瑞士法郎做起来是理所当然的。

Loader.loaderBytes()开始,注入代码并使其由当前应用程序域加载非常容易。

另外,我不明白为什么一个简单的应用程序"只是"连续显示图像"需要Security.allowDomain

但是,拥有跨域*策略文件是非常危险的,因为攻击者可以从他拥有的任何域中读取您的cookie或代表用户提交请求。

我建议您重新考虑在Security.allowDomain中使用wildcar,并且只允许您信任的域名。