安全漏洞描述
Jdbc反序列化漏洞发生在后台代码使用mysql-connector组件连接数据库且攻击者可控制连接参数的情况下。攻击者可以构造恶意的mysql数据库使服务器去访问链接它从而触发反序列化漏洞导致命令执行
mysql 连接参数风险点:autoDeserialize,statementInterceptors
风险等级:高
解决办法
- 升级mysql版本到8.0.27+,官方已经修复此问题
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
- 过滤掉风险参数 一般情况下不需要对autoDeserialize和statementInterceptors参数进行设置。在后端代码设置连接字符参数白名单,或者将这两个参数直接替换掉。
替换代码参考:
Properties prop = new Properties();
prop.put("autoDeserialize", "false");
prop.put("allowLoadLocalInfile", "false");
prop.put("allowUrlInLocalInfile", "false");
prop.put("allowLoadLocalInfileInPath", "");
prop.put("statementInterceptors", "");
Connectionconn=DriverManager.getConnection(DB_URL,prop);
安全无小事!!!
文档信息
- 本文作者:寒澈
- 本文链接:https://www.hancher.top/2023/07/04/mysql_jdbc_object_serial/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)