【发布时间】:2022-01-16 02:42:22
【问题描述】:
如果总是格式化日志,log4j2有JNDI风险吗?
this.logger.info("your input code: {}。",code);
【问题讨论】:
如果总是格式化日志,log4j2有JNDI风险吗?
this.logger.info("your input code: {}。",code);
【问题讨论】:
该漏洞是由格式化的日志消息触发的,因此无论您是通过字符串连接、使用参数化的日志记录方法(如您的示例)还是以任何其他方式创建消息都无关紧要。
所以是的,您的代码很可能很容易受到攻击。
您可以通过运行轻松测试:
String user = "${java:os}";
logger.info("User '{}' logged in", user);
但请注意,如果上述日志消息中的查找占位符未被替换,您不应认为您的应用程序是安全的。它还取决于您使用的日志记录布局。
为了安全起见,您应该更新应用程序使用的 Log4j 2 版本,或者尝试security notes 中列出的其他缓解措施。
【讨论】: