了解WordPress中与特定修复程序相关的SVG漏洞

时间:2016-11-23 作者:CoderScissorhands

我已经使用上提供的答案为我的Wordpress徽标启用了SVG上载this stack link, 尽管已经在许多地方读到,Wordpress站点中的SVG支持使其容易受到脚本攻击。这里只有一个这样的来源:

For what security reasons are svgs blocked in the media uploader?

我的问题有三个方面:

1) 据我所知,我使用的黑客(基于the above link) 允许我上载徽标的SVG。这是否也意味着最终用户(非管理员)可以上传恶意SVG,如果我允许他们上传文件,这些SVG会对我的网站造成真正的损害?

2) 如果它允许用户上传恶意的SVG文件,是否还有其他代码可以用来保护我的网站免受攻击?

3) 如果我使用的SVG补丁引入了漏洞,黑客会造成什么样的破坏?触发恶意脚本需要什么样的命令?

谢谢

2 个回复
最合适的回答,由SO网友:socki03 整理而成

This article 对你的问题有很多很好的答案。我强烈建议您查看一下,以了解更多有关此问题规模的信息,但我可以简要介绍一下。

SVG是基于XML的,因此很难破译什么是恶意的,什么不是恶意的。在一端,它会使您面临XSS攻击,而在另一端,它实际上可能会引发DoS攻击。

他提到this Wordpress Trac Ticket 讨论SVG安全已经有很长一段时间了,在站点上似乎没有尽头。

无论如何,要回答您的问题:

我的直觉反应是否定的,但这确实取决于最终用户的能力。如果他们没有上传任何东西的权限,那么你就没事了。如果他们这样做了,那么这取决于您使用什么来解析前端文件上传系统。主要是关于有能力上传东西的实际WP用户,以及你如何完全信任他们不会上传恶意的东西。

有一个插件叫做Safe SVG 基于一个名为SVG Sanitizer. 查看这两方面的自述,以更好地了解它可以/不能阻止什么。

损害可能是从浏览信息到关闭主机服务器。我让你回到我链接的原始文章。打开SVG时可能发生的事情的深度是非常开放的。

SVG是未来的趋势,我在构建的每个网站上都使用它们,但我通常不允许上传它们,因为它们通常可以在主题中硬编码。

我允许在需要更流畅的站点上上传SVG,但我认为我可以理解这样一种想法,即它在默认情况下没有启用,因为我一方面可以计算它实际需要的次数。

SO网友:cybmeta

正如另一个答案中所解释的那样,允许用户上载SVG文件通常会带来安全风险,这在WordPress中不是一个特定的问题。但请注意,您使用的是定制器设置,因此不允许将SVG上载到每个用户,只允许可以访问主题定制器的用户。

默认情况下,只有edit_theme_options capability 可以访问主题定制器,默认情况下,只有管理员具有该功能。因此,在这种情况下,风险实际上是最小的;管理员应该知道他们在做什么。

you can control exactly which users can access to the customizer sections and settings 使用capability 的参数WP_Customize_Manager::add_section()WP_Customize_Manager::add_setting() 方法:

  $wp_customize->add_section( \'mytheme_options\', 
     array(
        \'capability\' => \'edit_theme_options\', // Change this if you wish
     ) 
  );

  $wp_customize->add_setting( \'some_setting\',
     array(
        \'capability\' => \'edit_theme_options\', // Change this if you wish
     ) 
  );

相关推荐

Content-Security-Policy标头存在并显示正确的设置,但仍收到拒绝的连接

所以我把一个插件放在一起,它允许我用一个在线服务连接多个客户端站点。我可以让服务供应商代码段加载,但一旦你与它交互,事情就会变得棘手,它拒绝加载(我猜)iframe。。。它的文档记录很差。Refused to load https://www.service-domain.com/ because it does not appear in the frame-ancestors directive of the Content Security Policy.这是我收到的控制台日志错误。因此,我跳回插件