漏洞分析
1 MyBatis组件介绍
MyBatis 本是Apache的一个开源项目iBatis, 2010年这个项目由Apache Software Foundation 迁移到了Google Code,并且改名为MyBatis。
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
2 漏洞描述
2020年10月6日,MyBatis官方发布了MyBatis 3.5.6版本,修复了一个远程代码执行漏洞,该漏洞编号为CVE-2020-26945。
在满足以下三个条件的时候,攻击者可以触发远程代码执行:
1、用户启用了内置的二级缓存
2、用户未设置JEP-290过滤器
3、攻击者找到了一种修改私有Map字段条目的方法,即修改org.apache.ibatis.cache.impl.PerpetualCache.cache有效的缓存密钥
影响范围
目前受影响的MyBatis版本:
Mybatis < 3.5.6
修复建议
目前厂商已发布升级补丁修复漏洞,请受影响用户尽快进行升级加固。补丁获取链接:
https://github.com/mybatis/mybatis-3
时间轴
2020/10/06 MyBatis 官方发布修复补丁。
2020/10/12 深信服千里目安全实验室发布漏洞通告。
参考链接
https://github.com/mybatis/mybatis-3/pull/2079