# log4j-agent **Repository Path**: luckzj/log4j-agent ## Basic Information - **Project Name**: log4j-agent - **Description**: No description available - **Primary Language**: Java - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2021-12-10 - **Last Updated**: 2024-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # log4j-agent #### log4j RCE解决方案说明 最新公布的log4j2远程执行漏洞影响范围广。目前主流处置方案和缺陷如下: 1. 通过waf过滤关键字。 对http全流量进行关键字搜索。这种方式打击范围比较广,执行效率较低。 2. log4j2版本升级。 将log4j2升级成最新无漏洞版本。这种方法成本较高。在java程序中依赖往往层级较多,需将所有可能的依赖全部删除。另外,首次公布的log4j2的升级方案也被爆出可以绕过,仍存在漏洞。 3. 设置参数log4j2.formatMsgNoLookups = true。 经验证,本方法仅对高版本log4j2生效,对于低版本无效。此外,此项配置将禁用log4j中全部表达式替换功能,使正常的环境变量替换失效。 #### log4j-agent log4j2中通过JndiLookup类进行jndi查找,造成漏洞。但实际上,我们在记录日志时几乎用不到jndi功能,完全可以去掉。 log4j-agent 通过java instrument,对log4j2的JndiLookup功能进行修改,将其找jndi的方法直接替换为返回告警信息,使告警信息被记录到日志当中。 其优点如下: 1. 无需对应用进行任何修改,即可修补漏洞 2. 只针对日志记录时查找jndi的行为,不造其他影响 3. 自动将危险行为转换成日志信息,输出到日志当中 #### 使用说明 将log4j-agent.jar配置为 javaagent 即可: -javaagent:log4j-agent.jar 1. 普通程序 在jvm启动参数中增加 上述启动参数 2. tomcat 在catalina.sh 中增加上述参数 3. WebSphere 通过Web控制台在服务的进程定义->JVM参数中增加上述参数