汝之观览,吾之幸也!本文主要讲解Java的一些安全漏洞,并且给出浅知的解决方案。
具体国内的风险可查看网址工业和信息化部网络安全威胁和漏洞信息共享平台
1、Spring Framework反射型文件下载漏洞(CVE-2020-5421)
漏洞危害描述
Spring Framework是 Java 平台的一个开源全栈应用程序框架和控制反转容器实现,一般被直接称为 Spring,该框架提供了一种简易的开发方式,可避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类,被大量的Java开发工作者采用。利用本次公布的漏洞,攻击者可绕过RFD攻击防御,进行反射型文件下载攻击,风险较高。观安信息研究院建议广大用户尽快进行资产自查及预防工作,及时进行版本更新,以免遭受恶意攻击。
本次公布的漏洞存在于Spring Framework版本5.2.0-5.2.8、5.1.0-5.1.17、5.0.0-5.0.18、4.3.0-4.3.28和较旧的不受支持的版本中。利用该漏洞可通过jsessionid路径参数,绕过防御RFD攻击的保护。攻击者通过向用户发送带有批处理脚本扩展名的URL,使用户下载并执行文件,从而危害用户系统。
影响版本:
Spring Framework 5.2.0 – 5.2.8
Spring Framework 5.1.0 – 5.1.17
Spring Framework 5.0.0 – 5.0.18
Spring Framework 4.3.0 – 4.3.28
以及其他已不受支持的版本
漏洞解决方案
更改版本
Spring Framework 5.2.9
Spring Framework 5.1.18
Spring Framework 5.0.19
Spring Framework 4.3.29
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
将涉及到spring-web jar的进行屏蔽 如:spring-boot-starter、spring-boot-starter-quartz、
spring-boot-starter-data-redis、spring-boot-starter-websocket、spring-boot-starter-web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
</exclusions>
</dependency>
2、MyBatis 远程代码执行漏洞(CVE-2020-26945)
漏洞危害描述
MyBatis是美国阿帕奇(Apache)软件基金会的一款优秀的持久层框架。支持自定义SQL、存储过程以及高级映射,免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作,可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录,在国内被广泛使用。该漏洞影响范围广,风险性高,为避免业务受影响,建议受影响的用户尽快升级至安全版本,做好资产自查及预防工作,避免被外部攻击者入侵。
MyBatis 3.5.6之前版本存在安全漏洞,该漏洞源于错误处理对象流的反序列化。
该漏洞被成功利用,需满足以下的前提条件:
1)用户启用了内置的二级缓存;
2)用户未设置JEP-290过滤器;
3)攻击者获取了修改私有Map字段条目的方法,即修改org.apache.ibatis.cache.impl.PerpetualCache.cache有效的缓存密钥。
影响版本:
Mybatis < 3.5.6
漏洞解决方案
升级版本
Mybatis 3.5.6
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
将涉及到mybatis jar的进行屏蔽 如:mybatis-spring-boot-starter、mybatis-plus-generator
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>