Skip to content

Nacos 2.5.2 的高危漏洞 #15451

Closed
Closed

Description

@leoxhj

Hello,

我们在使用2.X最新的版本2.5.2官方镜像时被公司内部安全部门告知,由漏洞扫描工具wiz发现有8个Critical, 70个High的高危漏洞,
Image

很好奇最新的版本为什么会有这么多漏洞,同时也想了解一下对于阿里大厂提供的开源产品是否有严格的安全机制来众保证每次新版本迭代过程是否会用安全工具扫描并及时修复这些安全漏洞。

详细的漏洞数据可以参考附件CSV。

dkt-ali-public-registry_cn-shanghai_cr_aliyuncs_com_paas-public_nacos_nacos-server_v2_5_2.csv

Activity

  1. KomachiSion commented on Jul 1, 2026

    @KomachiSion
    Collaborator

    可以检索一下历史里的其他issue,此类问题有很多讨论处理。

    扫描出来的漏洞都是依赖包的漏洞,能够升级解决的基本都会升级解决掉。

    少部分难以升级解决的(比如spring boot2的漏洞,因为社区停止维护, 或者其他社区未修复的漏洞),在确认实际不受影响后会暂停处理。

    你可以看一下3.2.X版本是否更能符合您的安全漏洞要求。 2.X 版本已经进入基本维护阶段较长时间了。

  2. leoxhj commented on Jul 1, 2026

    @leoxhj
    Author

    感谢社区的同事快速回复,在详细分析了这些CVE后,得出结论。
    Critilcal, High主要分两大类:

    1. Alphine Linux package的CVE,个人认为社区的团队完全可以定期通过更新基础镜像包版本来修复这些镜像,
      比如通过命令 apk upgrade --available 主动更新最新的包,2.5.2官方镜像8个月以上时间没有更新过了。
    Image 2. Nacos-server.jar包的很多依赖存大量的Critical, High,我相信这部分应该也是被更新掉的。 Image

    考虑到对大版本2.X->3.X的更新可能会对业务造成影响,所以我们目前是升级到了2.X的最后一个版本2.5.2。希望社区能维护2.X的版本,包括这些漏洞,非常感谢。

  3. KomachiSion commented on Jul 6, 2026

    @KomachiSion
    Collaborator

    基础镜像每次构建应该拉取的是latest, 2.5确实有一段时间没有发布新版本了, 之后发布大概率可能可以把系统层级的修复掉。

    jar依赖的内容如同我直前回复的, 收到上游依赖社区的修复, 比如derby和spring相关的都无法升级, 因为derby新版本均需要jdk19+, spring时jdk17+ 而nacos 2.x 是jdk8+, nacos3.x是jdk17+ 所以在nacos3.x中吧大部分依赖修复了, 但是2.x可能比较困难。

  4. leoxhj commented on Jul 7, 2026

    @leoxhj
    Author

    感谢回复,想进一步确认一点,比如你上面提到的derby新版本均需要jdk19+,不知道你这里提的新版本是哪个版本,但从我上面发的截图来看,该漏洞只需要把derby从10.14.2.0升级到10.14.3就能修复漏洞,只是一个修订号(Z)的小更新,甚至还没有到小版本。所以比如pom里不能简单的把这个更新为10.14.3吗?其它的依赖都是类似的,除了一些(X)大版本更新除外。

  5. KomachiSion commented on Jul 7, 2026

    @KomachiSion
    Collaborator

    如果是升级小版本即可修复, 那欢迎提交一个pr 到 v2.x-develop, 预计下周或者下下周发布一个2.5的新版本

    我记得之前提交过一个derby修复漏洞,是需要升级很大的版本的

    #11410

  6. KomachiSion commented on Jul 7, 2026

    @KomachiSion
    Collaborator
    Image

    maven仓库中心未发现10.14.3, 因此derby问题可能还是无法修复。

  7. leoxhj commented on Jul 7, 2026

    @leoxhj
    Author

    只要大于10.14.3的都可以,我了一下好像目前只有10.17.1.0没有漏洞,其它都有,可以更新到这个版本吗?

    Image 因为2.5.2版本里HIGH漏洞实在太多了(WIZ今天扫描出来有100+),有没有可能官方有一些安全工具扫描一下镜像,然后统一在下一次发版前更新掉呢?
  8. KomachiSion commented on Jul 8, 2026

    @KomachiSion
    Collaborator

    只要大于10.14.3的都可以,我了一下好像目前只有10.17.1.0没有漏洞,其它都有,可以更新到这个版本吗?

    Image 因为2.5.2版本里HIGH漏洞实在太多了(WIZ今天扫描出来有100+),有没有可能官方有一些安全工具扫描一下镜像,然后统一在下一次发版前更新掉呢?

    需要jdk19+ 还是jdk21+ 必须。

    当然如果你可以确定您部署的环境满足,可以自定修改依赖版本

  9. KomachiSion commented on Jul 8, 2026

    @KomachiSion
    Collaborator

    因为2.5.2版本里HIGH漏洞实在太多了(WIZ今天扫描出来有100+),有没有可能官方有一些安全工具扫描一下镜像,然后统一在下一次发版前更新掉呢?

    不同的工具扫描出来的内容是不同的, 并且有一些难以升级的依赖版本(但本身并不满足对应的安全漏洞攻击面),前面多次提到了,这里就不再强调了。

    可行的解决方法:

    1. 基础镜像自带的版本安全漏洞, 有必要可以自行构建安全镜像,以修复问题。 Nacos每次发布也会重新拉取最新的基础镜像和依赖,但无法保证拉取的最新镜像和依赖完全没有已发现的安全漏洞,这依赖于下游依赖是否已经修复以及版本兼容性。
    2. 针对pom中的依赖,有必要可以自行在源代码中更新升级版本,然后自动构建部署版本,但需要自行确保升级后的构建成功和兼容性。
  10. leoxhj commented on Jul 8, 2026

    @leoxhj
    Author

    这里有几个问题请教一下:

    1. 目前社区团队有没有流程或者机制来定期做安全漏洞的管理(基础镜像+应用层有三方依赖),还是完全依赖于社区外的使用方自行各自解决,个人更倾向于阿里官方来做统一的安全漏洞管理流程。
    2. 可以考虑自行修改依赖版本,但有一个前提是必须要很了解NACOS底层代码,因为修改依赖包有可能会导致不可以见的兼容性问题
    3. 对于安全扫描工具,我相信大同小异,因为CVE都是公开的,多数的CVE一定会被安全工具扫描覆盖。

    主要考虑到自行修改未来升级的时候会有很多问题,所以更倾向官方能定期维护管理这些安全漏洞,感谢。

  11. leoxhj commented on Jul 8, 2026

    @leoxhj
    Author

    关键的一点,举上面这个依赖包derby的例子:10.14.2.0这个版本发布时间为2018年,已经有8年时间了。所以官方是否在发新版本的时候或者开发新代码的时候是否有这样安全意识在使用的依赖包时,比如至少能确保在1-2年的,这样也能有效减少很多漏洞问题,另外目前我们使用的是2.3.2的版本,有9critical, 71high,但发现升级到2.5.2后,high更多了,有100多个,原来给安全团队说的相信更新2.5.2的应该能让c, h级别的漏洞更少一些,但实际结果相反有点意外。

    2.3.2 - 9 Critical, 71 High

    Image

    2.5.2 - 8 Critical, 128 High

    Image
  12. KomachiSion commented on Jul 8, 2026

    @KomachiSion
    Collaborator

    需要拆分来看,

    首先在选择依赖当时肯定是尽量选择新版本,减少后续适配问题和安全漏洞数量, 就像你举出的例子, nacos18年开源时 derby的10.14.2.0是较新的版本, 你提出的漏洞也是22年才发现的, 但derby社区迭代后不再维护老版本, 新版本又必需jdk19+ 21+, 因此不好升级。同理其他依赖也是,不赘述。

    另一部分是镜像,镜像考虑的会更多,构建的架构,基础镜像的迭代,都可能导致一些非代码的场景引入问题,这些问题可能不是依赖或者是Nacos的问题,而是基础镜像本身自带的一些问题,这些问题要推进和等待对应基础镜像本身去进行解决。 就比如你说2.5.2更多了, 多出来的部分是哪些呢? 是基础镜像带来的, 还是nacos本身代码带来的? 有可能老版本的基础镜像因为不维护了,更封闭没有被扫描到呢?

    社区当然欢迎大家一起提交,一起修复,社区也愿意减少和解决这些问题,但是没法做到完全的面面俱到。

    欢迎将分析的结果和解决方案分享到issue中, 如果后续能够为社区提交PR修复就更好了。

  13. leoxhj commented on Jul 8, 2026

    @leoxhj
    Author

    快速过了一下2.5.2由wiz发现的8critical, 128high的漏洞

    nacos相关的依赖包主要需要修复以下的包基础

    /home/nacos/target/nacos-server.jar -> BOOT-INF/lib/grpc-netty-shaded-1.64.2.jar -> Fixed version: 1.75.0
    /home/nacos/target/nacos-server.jar -> BOOT-INF/lib/jackson-core-2.13.5.jar -> Fixed version: 2.15.0
    /home/nacos/target/nacos-server.jar -> BOOT-INF/lib/spring-webmvc-5.3.39.jar -> Fixed version: 6.1.13
    /home/nacos/target/nacos-server.jar -> BOOT-INF/lib/jackson-databind-2.13.5.jar -> Fixed version: 2.18.8
    /home/nacos/target/nacos-server.jar -> BOOT-INF/lib/tomcat-embed-core-9.0.99.jar -> Fixed version: 9.0.118 好像有2.x-develop分支已经有人PR修复过了
    /home/nacos/target/nacos-server.jar -> BOOT-INF/lib/spring-boot-2.7.18.jar -> Fixed version: 3.5.14
    /home/nacos/target/nacos-server.jar -> BOOT-INF/lib/spring-core-5.3.39.jar -> Fixed version: 6.2.11
    /home/nacos/target/nacos-server.jar -> BOOT-INF/lib/spring-security-crypto-5.8.15.jar -> Fixed version: 5.8.18
    /home/nacos/target/nacos-server.jar -> BOOT-INF/lib/logback-core-1.2.13.jar -> Fixed version: 1.3.16
    

    基础镜像的话 apk upgrade --available 就基本上能解决90%以上的漏洞了,主要集中的libssl3, musl, libcrypto3, lcms2

    如果社区能统一在下周或者下周的新发版里一起修复最好了,这个工作量应该不会太大,非常感谢。

  14. KomachiSion commented on Jul 13, 2026

    @KomachiSion
    Collaborator

    已提交 PR:#15501

    本次 PR 只升级了 v2.x 在 JDK8 基线下可以相对低风险升级的 Maven 依赖:

    • gRPC Java:1.64.2 -> 1.75.0。对应 grpc-netty-shaded 的 CVE-2025-55163 / GHSA-prj3-ccx8-p6x4 fixed version 是 1.75.0。评估过 1.78.0,但它会带入 Guava 33.5.0-android / jspecify 注解,在 JDK8 + Spring 5 扫描 shaded client jar 时触发启动失败,因此 v2.x 采用 1.75.0。
    • Jackson:2.16.2 -> 2.18.9。保持在 Jackson 2.x / JDK8 兼容线,同时覆盖 issue 中提到的 jackson-core / jackson-databind 扫描项;2.18.9 也是 GHSA-5jmj-h7xm-6q6v advisory 文本标注的 2.18 线 fixed version。
    • Spring Security:5.8.15 -> 5.8.16。5.8.16 是 Maven Central 当前可用的最新 5.8.x 版本;扫描提到的 5.8.18 目前 Maven Central 不存在,因此本次只能先升级到 5.8 线最新可用版本。

    未在本 PR 中升级的部分:

    • Tomcat:v2.x-develop 已经是 9.0.118,不需要在本 PR 重复处理。
    • Spring WebMVC / Spring Core / Spring Boot:对应 fixed version 是 Spring Framework 6.x / Spring Boot 3.x,需要 JDK17+ 并涉及 Spring Boot 3 迁移,不符合 v2.x 的 JDK8 基线。
    • Derby:无可用的 10.14.3 artifact;较新的 10.17.x 需要更高 Java 版本,不适合 v2.x JDK8。
    • Logback:1.3.x 切到 SLF4J 2.x 体系,和当前 Spring Boot 2.7 / SLF4J 1.7 / Logback 1.2 组合不属于无损小版本升级。
    • 基础镜像中的 Alpine / apk 包漏洞需要通过镜像构建和发布流程处理,不属于本次 Maven 依赖 PR 范围。

    本地验证:

    • JDK8 下执行 mvn -B clean package apache-rat:check findbugs:findbugs -DskipTests 通过。
    • 对 gRPC 1.75.0 生成产物做过 JDK8 standalone 短启动验证。
  15. added a commit that references this issue on Jul 13, 2026
  16. modified the milestones: 3.2.3, 2.5.3 on Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests that update a dependency file

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions