威胁说明
如果Java应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行。
问题原因
类ObjectInputStream在反序列化时,没有对生成的对象的输入做限制,使攻击者利用反射调用函数进行任意命令执行。
CommonsCollections组件中对于集合的操作存在可以进行反射调用的方法
问题根源
Apache Commons Collections允许链式的任意的类函数反射调用。
问题函数
org.apache.commons.collections.Transformer接口
问题版本
3.2.2之前所有版本
快速排查
目前打包有apache commons collections库并且应用比较广泛的主要中间件有Jenkins、WebLogic、Jboss、WebSphere、OpenNMS等。
如果使用了以上中间件,需检测中间件安装目录是否包含apache commons collections库及其版本。特别是项目中发现使用了readObject函数。如:
ls -R 安装目录 | grep commons-collections.jar
ls -R 安装目录 | grep *.commons-collections.jar
ls -R 安装目录 | grep apache.commons.collections.jar
ls -R 安装目录 | grep *.commons-collections.*.jar
如果包含,且版本低于3.2.2,请参考修复建议。
修复建议
1. 通用修复方案</