Hello, 我们在使用2.X最新的版本2.5.2官方镜像时被公司内部安全部门告知,由漏洞扫描工具wiz发现有8个Critical, 70个High的高危漏洞, <img width="1198" height="1011" alt="Image" src="https://github.com/user-attachments/assets/d426f0e5-0b35-4b92-93e8-cc3507b2c108" /> 很好奇最新的版本为什么会有这么多漏洞,同时也想了解一下对于阿里大厂提供的开源产品是否有严格的安全机制来众保证每次新版本迭代过程是否会用安全工具扫描并及时修复这些安全漏洞。 详细的漏洞数据可以参考附件CSV。 [dkt-ali-public-registry_cn-shanghai_cr_aliyuncs_com_paas-public_nacos_nacos-server_v2_5_2.csv](https://github.com/user-attachments/files/29488979/dkt-ali-public-registry_cn-shanghai_cr_aliyuncs_com_paas-public_nacos_nacos-server_v2_5_2.csv)
Activity
KomachiSion commentedon Jul 1, 2026
可以检索一下历史里的其他issue,此类问题有很多讨论处理。
扫描出来的漏洞都是依赖包的漏洞,能够升级解决的基本都会升级解决掉。
少部分难以升级解决的(比如spring boot2的漏洞,因为社区停止维护, 或者其他社区未修复的漏洞),在确认实际不受影响后会暂停处理。
你可以看一下3.2.X版本是否更能符合您的安全漏洞要求。 2.X 版本已经进入基本维护阶段较长时间了。
leoxhj commentedon Jul 1, 2026
感谢社区的同事快速回复,在详细分析了这些CVE后,得出结论。
Critilcal, High主要分两大类:
比如通过命令
apk upgrade --available主动更新最新的包,2.5.2官方镜像8个月以上时间没有更新过了。考虑到对大版本2.X->3.X的更新可能会对业务造成影响,所以我们目前是升级到了2.X的最后一个版本2.5.2。希望社区能维护2.X的版本,包括这些漏洞,非常感谢。
KomachiSion commentedon Jul 6, 2026
基础镜像每次构建应该拉取的是latest, 2.5确实有一段时间没有发布新版本了, 之后发布大概率可能可以把系统层级的修复掉。
jar依赖的内容如同我直前回复的, 收到上游依赖社区的修复, 比如derby和spring相关的都无法升级, 因为derby新版本均需要jdk19+, spring时jdk17+ 而nacos 2.x 是jdk8+, nacos3.x是jdk17+ 所以在nacos3.x中吧大部分依赖修复了, 但是2.x可能比较困难。
leoxhj commentedon Jul 7, 2026
感谢回复,想进一步确认一点,比如你上面提到的derby新版本均需要jdk19+,不知道你这里提的新版本是哪个版本,但从我上面发的截图来看,该漏洞只需要把derby从10.14.2.0升级到10.14.3就能修复漏洞,只是一个修订号(Z)的小更新,甚至还没有到小版本。所以比如pom里不能简单的把这个更新为10.14.3吗?其它的依赖都是类似的,除了一些(X)大版本更新除外。
KomachiSion commentedon Jul 7, 2026
如果是升级小版本即可修复, 那欢迎提交一个pr 到 v2.x-develop, 预计下周或者下下周发布一个2.5的新版本
我记得之前提交过一个derby修复漏洞,是需要升级很大的版本的
#11410
KomachiSion commentedon Jul 7, 2026
maven仓库中心未发现10.14.3, 因此derby问题可能还是无法修复。
leoxhj commentedon Jul 7, 2026
只要大于10.14.3的都可以,我了一下好像目前只有10.17.1.0没有漏洞,其它都有,可以更新到这个版本吗?
KomachiSion commentedon Jul 8, 2026
需要jdk19+ 还是jdk21+ 必须。
当然如果你可以确定您部署的环境满足,可以自定修改依赖版本
KomachiSion commentedon Jul 8, 2026
不同的工具扫描出来的内容是不同的, 并且有一些难以升级的依赖版本(但本身并不满足对应的安全漏洞攻击面),前面多次提到了,这里就不再强调了。
可行的解决方法:
leoxhj commentedon Jul 8, 2026
这里有几个问题请教一下:
主要考虑到自行修改未来升级的时候会有很多问题,所以更倾向官方能定期维护管理这些安全漏洞,感谢。
leoxhj commentedon Jul 8, 2026
关键的一点,举上面这个依赖包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
2.5.2 - 8 Critical, 128 High
KomachiSion commentedon Jul 8, 2026
需要拆分来看,
首先在选择依赖当时肯定是尽量选择新版本,减少后续适配问题和安全漏洞数量, 就像你举出的例子, nacos18年开源时 derby的10.14.2.0是较新的版本, 你提出的漏洞也是22年才发现的, 但derby社区迭代后不再维护老版本, 新版本又必需jdk19+ 21+, 因此不好升级。同理其他依赖也是,不赘述。
另一部分是镜像,镜像考虑的会更多,构建的架构,基础镜像的迭代,都可能导致一些非代码的场景引入问题,这些问题可能不是依赖或者是Nacos的问题,而是基础镜像本身自带的一些问题,这些问题要推进和等待对应基础镜像本身去进行解决。 就比如你说2.5.2更多了, 多出来的部分是哪些呢? 是基础镜像带来的, 还是nacos本身代码带来的? 有可能老版本的基础镜像因为不维护了,更封闭没有被扫描到呢?
社区当然欢迎大家一起提交,一起修复,社区也愿意减少和解决这些问题,但是没法做到完全的面面俱到。
欢迎将分析的结果和解决方案分享到issue中, 如果后续能够为社区提交PR修复就更好了。
leoxhj commentedon Jul 8, 2026
快速过了一下2.5.2由wiz发现的8critical, 128high的漏洞
nacos相关的依赖包主要需要修复以下的包基础
基础镜像的话
apk upgrade --available就基本上能解决90%以上的漏洞了,主要集中的libssl3, musl, libcrypto3, lcms2如果社区能统一在下周或者下周的新发版里一起修复最好了,这个工作量应该不会太大,非常感谢。
KomachiSion commentedon Jul 13, 2026
已提交 PR:#15501
本次 PR 只升级了 v2.x 在 JDK8 基线下可以相对低风险升级的 Maven 依赖:
1.64.2 -> 1.75.0。对应grpc-netty-shaded的 CVE-2025-55163 / GHSA-prj3-ccx8-p6x4 fixed version 是1.75.0。评估过1.78.0,但它会带入 Guava33.5.0-android/ jspecify 注解,在 JDK8 + Spring 5 扫描 shaded client jar 时触发启动失败,因此 v2.x 采用1.75.0。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。5.8.15 -> 5.8.16。5.8.16是 Maven Central 当前可用的最新 5.8.x 版本;扫描提到的5.8.18目前 Maven Central 不存在,因此本次只能先升级到 5.8 线最新可用版本。未在本 PR 中升级的部分:
v2.x-develop已经是9.0.118,不需要在本 PR 重复处理。10.14.3artifact;较新的10.17.x需要更高 Java 版本,不适合 v2.x JDK8。1.3.x切到 SLF4J 2.x 体系,和当前 Spring Boot 2.7 / SLF4J 1.7 / Logback 1.2 组合不属于无损小版本升级。本地验证:
mvn -B clean package apache-rat:check findbugs:findbugs -DskipTests通过。1.75.0生成产物做过 JDK8 standalone 短启动验证。[ISSUE #15451] Upgrade compatible dependencies for v2.x (#15501)