事情起因:一位服主跟我说服务器总是开着开着就关服,我看了报错,是线程堵塞,并且第一条就是Fixer的类,如图所示
这是对应的类
如图所示,有一个正则,贪婪量词 导致了 嵌套回溯,其实就是白老板在修复之前Log4j2的漏洞的时候,写的正则,错误原因举个例子,假如日志消息是"aaaaaaaaaaaaaaaaaaaaaaaaaaaa",不包含${jndi:,就会导致
对于长度为 N 的不匹配字符串,回溯次数约为 O(N³):
第一个 .*: N 种可能
第二个 .*: 对每个第一个 .* 的位置,又有 N 种可能
第三个 .*: 对每个前两个 .* 的组合,又有 N 种可能,总之改成\$\{jndi:或者限制匹配长度或者String.contains("${jndi:"),总之我目前是改成\$\{jndi:了,先用着吧
这是对应的类
如图所示,有一个正则,贪婪量词 导致了 嵌套回溯,其实就是白老板在修复之前Log4j2的漏洞的时候,写的正则,错误原因举个例子,假如日志消息是"aaaaaaaaaaaaaaaaaaaaaaaaaaaa",不包含${jndi:,就会导致
对于长度为 N 的不匹配字符串,回溯次数约为 O(N³):
第一个 .*: N 种可能
第二个 .*: 对每个第一个 .* 的位置,又有 N 种可能
第三个 .*: 对每个前两个 .* 的组合,又有 N 种可能,总之改成\$\{jndi:或者限制匹配长度或者String.contains("${jndi:"),总之我目前是改成\$\{jndi:了,先用着吧