中间件版本号泄露问题修复

开发过程中的一些信息带到了线上,要及时修复,不如坏人就顺藤摸瓜找来了。

以下是漏洞的一些内容:

安全漏洞描述

信息泄露主要是由于开发人员或运维管理人员的疏忽所导致。如未及时删除调试页面、未关闭程序调试功能、未屏蔽程序错误信息、备份文件未删除、数据库备份文件未删除、未屏蔽敏感数据信息等多个方面所导致的不同严重程度的信息泄露。攻击者可通过所掌握的信息进一步分析攻击目标,从而有效发起下一步的有效攻击。

常见的问题有:

  1. swagger 接口未关闭
  2. druid监控台未关闭

风险等级:低

解决办法

关闭相关接口的线上权限,或增加权限控制

1,swagger 关闭入口的方式
方法a: 使用注解 @Value() 推荐使用, 然后在不同的配置文件里指定开关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@Value("${swagger.enabled}")
private boolean enabled;

@Bean
public Docket createRestApi()
{
return new Docket(DocumentationType.V1)
// 是否启用Swagger
.enable(enabled)
// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
.apiInfo(apiInfo())
// 设置哪些接口暴露给Swagger展示
.select()
// 扫描所有有注解的api,用这种方式更灵活
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
// 扫描指定包中的swagger注解
// .apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger"))
// 扫描所有 .apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
/* 设置安全模式,swagger可以设置访问token */
.securitySchemes(securitySchemes())
.securityContexts(securityContexts())
.pathMapping(pathMapping);
}

方法b: 使用注解@Profile({“dev”,“test”}) 表示在开发或测试环境开启,而在生产关闭
swagger-switch
其实ab 的方式是一样的,都是不同的环境开关不同。

2, druid关闭监控台的方式

1
2
spring.datasource.druid.webStatFilter.enabled=false
spring.datasource.druid.statViewServlet.enabled=false

3, 一些其他接口增加权限认证
通过spring的httpSecurity 增加路径鉴权

1
2
3
4
5
6
protected void configure(HttpSecurity httpSecurity) throws Exception {
// something
// druid 接口要鉴权
httpSecurity..antMatchers("/druid/**").authenticated()
// something
}

安全无小事!!!


中间件版本号泄露问题修复
https://www.hancher.top/2023/06/19/safe-dev-info-leak/
作者
寒澈
发布于
2023年6月19日
许可协议