Sonarqube 4.2 X-Frame 选项和跨站点脚本漏洞

Sonarqube 4.2 X-Frame options and Cross site scripting vulnarabilities

我是 运行 linux 盒子上的一个 Sonarqube 4.2 实例。由于在我们的系统中我们有一个中央门户页面,我们可以从那里导航到所有子页面,所以我需要在框架内安装声纳曲。当我有一个 href 时,Sonarqube 否认这是由于 X-Frame options 设置为 SAMEORIGIN。有什么线索可以修改吗?

我还需要在 sonarqube 中提供 CSRF 保护。对于 jenkins,它带有一个内置选项来启用 CSRF 保护。 sonarqube 有类似的东西吗?

提前感谢您的所有意见。

对于 X-Frame 选项,这已在 SQ 5.1 中修复,您可以在我们的 Nemo instance.

上实际验证这一点

对于 CSRF 保护,我们有一个公开的票据:SONAR-5040。请注意,当发现 XSS 漏洞时,我们总是会在即将发布的版本以及最新的 LTS 版本(当前为 4.5.x)中修复它。

当放置在内部仪表板应用程序使用的 iframe 中时,我在尝试从 SonarQube 实例获取响应以显示时遇到了同样的问题。

虽然 'X-Frames-Option' 在 SonarQube 中无法明确配置,但这两个步骤将允许您在 iframe 中显示来自 SonarQube 服务器的响应:

  1. 编辑<SonarQube-Home>\web\WEB-INF\config目录下的environment.rb脚本,注释掉'X-Frames-Option'header赋值(或将值改为'ALLOW-FROM' 与适当的 URL 排除):

    # Clickjacking protection
    # See https://www.owasp.org/index.php/Clickjacking_Protection_for_Java_EE
    # headers['X-Frame-Options']='SAMEORIGIN'
    
  2. 要么注释掉 <SonarQube-Home>\web\WEB-INF\web.xml 文件中现有的过滤器配置(不推荐),要么自己编写 Filter 实现并替换现有配置:

    <filter> <filter-name>SecurityFilter</filter-name> <filter-class>org.sonar.server.platform.SecurityServletFilter</filter-class> </filter>

    用你自己的(例子):

    <filter> <filter-name>SecurityFilter</filter-name> <filter-class>com.foo.MySecurityServletFilter</filter-class> <init-param> <param-name>X-Content-Type-Options</param-name> <param-value>nosniff</param-value> </init-param> <init-param> <param-name>X-XSS-Protection</param-name> <param-value>1; mode=block</param-value> </init-param> <init-param> <param-name>X-Frame-Options</param-name> <param-value>ALLOW-FROM</param-value> </init-param> <init-param> <param-name>allow-from-uri</param-name> <param-value>http://internal.foo.com</param-value> </init-param> </filter> 当然,您的自定义 filter 实现必须支持初始化参数。

  3. 我创建了一个包含过滤器的简单 jar 并将其复制到 <SonarQube-Home>\lib\server 目录。