【问题标题】:Geoserver - Replacing log4j 1.2.17 with 2.15.0?Geoserver - 用 2.15.0 替换 log4j 1.2.17?
【发布时间】:2022-01-16 09:34:16
【问题描述】:

我的网络服务器上有一个地理服务器,它使用 log4j v 1.2.17 (log4j-1.2.17.jar)。

我已经从 the log4j download site 下载了最新(安全?)版本 (2.15.0) 并校验和下载。

我现在对应该尝试使用哪个.jar 感到困惑?

我网站上的版本名为log4j-1.2.17.jar,但下载中的.jars 都称为例如log4j-web-2.15.0.jar

geoserver 的 Web 服务器是 jetty,如果这有什么不同的话。

怎么办?

【问题讨论】:

标签: logging log4j jetty geoserver


【解决方案1】:

在从 log4j v1(GeoServer 使用的那个)和 log4j v2(具有最新 CVE 的那个)切换时,日志记录的方式发生了重大变化。虽然 GeoServer 不受问题中提到的 RCE 漏洞的影响,但使用我们使用的旧(和 EOL)版本仍然存在一些小风险。

因此,作为临时缓解措施,Andrea Aime 对当前的 log4j v1 主干进行了分叉,删除了可能被有权访问您的 GeoServer 计算机的攻击者滥用的网络元素。请参阅https://github.com/aaime/log4j 了解您需要克隆和构建的树。这将生成一个名为 log4j-1.2.17-norce.jar 的新 jar,您应该将其替换为 log4j-1.2.17.jar。您现在可以从 https://repo.osgeo.org/repository/geotools-releases/log4j/log4j/1.2.17/log4j-1.2.17-norce.jar 下载预构建的 jar

如果您使用 GeoServer,那么您可能希望为开发人员做出贡献(或通过 OSGEO foundation),以帮助支持减少项目技术债务所涉及的工作,例如更新日志库。

【讨论】:

  • 有趣的是,您删除了之前糟糕的答案。感谢您提供一个更有用的!
  • 自昨天以来,事情已经平静了很多,当时我们所拥有的只是人们在没有支持的情况下寻求解决方案
  • 谢谢伊恩和安德里亚。我会试试这个,然后接受答案。我也想为开发人员做出贡献:) 再次感谢
  • Log4j 1.x 已停产(截至 2015 年 8 月),并有其他列出的 CVE 和漏洞(停产后)永远无法修复。
  • @JoakimErdfelt - 我们知道,您愿意赞助升级工作吗?
【解决方案2】:

【讨论】:

    【解决方案3】:

    出于同样的原因,我自己一直在研究这个问题,据我所知,您需要根据以下内容使用 log4j-1.2-api-2.15.0.jar:

    也许转换为使用 Log4j 2 的最简单方法是将 log4j 1.x jar 文件替换为 Log4j 2 的 log4j-1.2-api.jar。

    source

    我想指出,这不应该是公认的答案,但我想为那些试图掌握情况的人提供一个答案。

    [编辑]

    看来log4j-1.2-api-2.15.0.jar 是不够的。它有助于将 Geoserver 迁移到较新的 log4j 版本,同时仍使用以前的主包,但它无法引用较新的版本。因此,我还将 log4j-api-2.15.0.jar 添加到混合中以完成路径。

    在此之后,它似乎再次工作并且版本已更新。 我可以通过专门使用 Geoserver (/geoserver/rest/about/manifest.xml) 的 api 来验证这一点。如果您在升级之前搜索 log4j,您将看到 1.2.17 和之后的 2.15。

    【讨论】:

    • 你试过了吗?由于 API 的差异,GeoServer 甚至不应该启动(基于 GeoServer GUI 的日志级别切换器直接使用 Log4J API,并且该部分也直接在启动时运行......)
    • @AndreaAime 是的,我确实尝试过,但一开始我没有注意到实际上正在制作日志。 GeoServer 实际上确实启动了,但我无法通过 Log4j 写入日志。很遗憾,如果您打算使用 Log4j,这将不是一个可行的解决方案。如果您不使用它,那么您总是可以将此视为一种可能的解决方案。
    • 注意 log4j2 v2.15.0 在 CVE-2021-45046 中发现了其他漏洞,使用版本 2.16.0
    • 我刚刚注意到,感谢您的更新,尽管我最初的方法可能不会有太大帮助。 @AndreaAime 我注意到我的问题可能出在哪里。尽管 GeoServer 实际上确实启动了,但日志记录却没有。这可能是由于 DEFAULT_LOGGING.properties 使用了 RollingFileAppender,它在 2.15(可能是 2.16)主包中不存在。如果是这样,那么我认为它会顺利运行。
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2022-01-16
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多