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 服务器的响应:
编辑<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'
要么注释掉 <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
实现必须支持初始化参数。
我创建了一个包含过滤器的简单 jar 并将其复制到 <SonarQube-Home>\lib\server
目录。
我是 运行 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 服务器的响应:
编辑
<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'
要么注释掉
<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
实现必须支持初始化参数。我创建了一个包含过滤器的简单 jar 并将其复制到
<SonarQube-Home>\lib\server
目录。