mirai 使用 log4j 只是为了允许用其他日志系统替换内置。而且 mirai 默认只使用 SimpleMessage,应该没有安全问题。如果用户要用 log4j 接管日志,那么这就是用户的责任来解决安全问题(使用更好版本依赖覆盖 mirai 的)
根据log4j官网对simplemessage的解释:The simplest possible implementation of Message. It just returns the String given as the constructor argument.
得知SimpleMessage只返回作为构造函数参数给出的字符串,不会对字符串中的${}等内容解析,也就不会触发漏洞
参考来源:
https://logging.apache.org/log4j/log4j-2.3.2/log4j-api/apidocs/org/apache/logging/log4j/message/SimpleMessage.html
https://github.com/mamoe/mirai/issues/1969
按照此处说法,若不接管或者修改mirai的log4j日志不会存在远程执行漏洞,若你修改或者接管了mirai的log4j日志,请考虑升级mirai-core-all等mcl依赖包中log4j的版本