log4j漏洞主要是由于其提供的lookup功能下的JndiLookup模块出现问题所导致的。当开发人员在处理数据时,并没有对用户输入的信息进行判断,导致Log4j请求远程主机上的含有恶意代码的资源并执行其中的代码,从而造成远程代码执行漏洞。
具体来说,log4j是一款通用日志记录工具,开发人员可以使用log4j对当前程序状态进行记录。当日志中包含${}时,log4j会将表达式的内容替换成真实的内容(即lookup接口查找得到的内容)。使用LDAP或RMI协议,能从远程服务区上请求恶意的对象,对象在调用的过程中会被解析执行,导致了log4j的漏洞。