Log4J2漏洞修复方法验证和最终方案
验证代码准备:
在项目登录接口中增加类似如下代码:
@PostMapping("login")
public R<?> login(@RequestBody LoginBody form) {
//form.getUsername()="${java:version}"
logger.info("登录:{}",form.getUsername());
// 用户登录
LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
// 获取登录token
return R.ok(tokenService.createToken(userInfo));
}
或
public class App {
private static Logger logger = LogManager.getLogger(App.class);
public static void main(String[] args) {
logger.info("user {}", "${java:version}");
System.out.println("Hello World!");
}
}
存在漏洞时输出结果:org.example.App - user Java version 1.8.0_181
无漏洞时的输出结果:org.example.App - user ${java:version}
1、紧急缓解措施
方式一:修改jvm参数 -Dlog4j2.formatMsgNoLookups=true
输出结果:org.example.App - user ${java:version}
结论:有效
方式二: 修改配置log4j2.formatMsgNoLookups=True
注意:在应用程序入口logger初始化之前,写入代码System.setProperty("log4j2.formatMsgNoLookups", "true");
输出结果:org.example.App - user ${java:version}
结论:有效
方式三:将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true
输出结果:org.example.App - user Java version 1.8.0_181
结论:Win10 无效【本人在Win10上测试的,而且没有尝试重新启动电脑】
2、下载最新的log4J,如2.15.0版本,直接将本地仓库中2.0至2.14.1版本里的jar,用2.15.0更名后替换
以Idea Maven项目Log4J依赖包为例:
第一步:在Project视图中展开External Libraries找到Log4J相关jar依赖,并进行如下操作:对应jar上右键->copy->Absolute Path 复制到文件管理器中打开
第二步:将2.15.0中对应jar复制一份更名成2.14.1中jar的名称并覆盖2.14.1中的jar
输出结果:org.example.App - user ${java:version}
结论:有效
3、从项目里强制修改直接依赖或间接依赖的Log4J版本
以Idea Maven项目spring-boot-starter-logging依赖包为例:
第一步:打开pom.xml
ctrl 鼠标左键 单击artifactId内容spring-boot-starter-logging进入如下界面:
原始配置:
第二步:将2.*版本更改成2.15.0
强制修改后:
第三步:Reimport
输出结果:org.example.App - user ${java:version}
结论:有效
4、总结
根据以上测试结果,对于正式环境有以下解决方案:
方案一:根据1中的方式一在bat中加入如下设置:
set _JAVA_OPTIONS=-Dlog4j2.formatMsgNoLookups=true
示例:
方案二:对于jar包与主程序分离的项目,可以直接将正式环境2.15.0的jar更名后直接覆盖2.*版本。
方案三:对于jar包与主程序统一打包的项目,可以采用2、3和1中的方式二在开发环境做对应更改后重新打包部署。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgiggfe
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13