为什么 Google Chrome 会阻止原始 SWF 播放?

信息安全 铬合金 闪光
2021-09-02 02:00:34

如果您尝试访问原始 SWF 文件的 URL,Chrome 57 会拒绝显示,而是询问您是否要下载,并警告“此类文件可能会损害您的计算机”。但是,如果您使用对象标记将相同的 SWF 包装在一个简单的网页中,它会正常加载。这些文件以正确的“application/x-shockwave-flash”内容类型提供。

前一种情况应与后一种情况区别对待,是否有任何安全原因?

FWIW,我在 chrome://settings/content 中将 Flash 播放设置为“先询问(推荐)”

示例:http ://www.sjgames.com/dice/cthulhudice/demo.html与http://www.sjgames.com/dice/cthulhudice/img/CDdemo.swf

1个回答

这种行为显然与 Flash Player 如何成为 Chrome 中的点击启用功能有关(Chrome 帮助论坛讨论了这种行为)。如果您直接访问 SWF,它不会要求您点击运行,而是直接下载它。

如果您要去chrome://plugins/并选中“始终允许运行”,它将直接在浏览器中正常播放 SWF,而无需 HTML 包装器。它不会提示您启用它的事实似乎不是一个安全决定。


前一种情况应与后一种情况区别对待,是否有任何安全原因?

话虽如此,是的,我认为会有。

想象有一个网站,比如说一个旧论坛,它允许你上传一个头像。预计您将上传图像文件,但文件类型检查很差,攻击者会上传恶意 SWF 文件,以对站点管理员执行 XSS 攻击。现在,为这个头像生成的 HTML 可能看起来像这样:

<img src="http://example.com/user/123/avatar.swf" />

这不会作为 SWF 运行,因此攻击者没有 HTML。因此,而不是攻击招数管理员去点击一个链接,http://example.com/user/123/avatar.swf其中SWF负载,以及SWF执行XSS攻击的特权用户,并PWNs网站。

当然,这种风险并非 Flash Player 独有。可以使用 SVG 而不是 SWF 中的 JavaScript 执行类似的攻击。