Apache NiFi 1.25.0升级Spring修复CVE漏洞后启动失败求解决方案
修复NiFi 1.25.0 Spring Framework CVE-2024-22243漏洞的正确姿势
为啥手动替换JAR后启动失败?
NiFi对Spring版本有严格的依赖绑定,直接替换JAR或修改NAR包会打破这种平衡——要么是类版本冲突,要么是内部API不兼容,甚至NAR包的结构被破坏,自然启动不了。
靠谱的修复步骤
1. 首选官方补丁版
先去Apache NiFi官网看看1.25.x系列有没有最新维护版(比如1.25.1),官方通常会在小版本更新里修复这类依赖漏洞,直接升级是最省心的,完全不用手动折腾依赖。
2. 非要手动改?按这个来
如果暂时没法升级官方版,严格按下面步骤操作:
(1)先回退错误操作
把之前替换的文件全改回去:
- 删除
/home/servers/nifi-1.25.0/lib/properties/里的高版本Spring JAR,恢复成NiFi自带的5.3.31版本。 - 把你修改过的那些NAR包换回官方原版,别自己瞎改NAR结构。
(2)用正确版本的Spring JAR
Spring官方说升到5.3.32就够了,别用5.3.33(版本太高容易出兼容性问题)。替换NiFi核心目录lib/下的Spring JAR,别搞错路径:
# 先备份原文件,以防万一 cp /home/servers/nifi-1.25.0/lib/spring-core-5.3.31.jar /home/servers/nifi-1.25.0/lib/spring-core-5.3.31.jar.bak cp /home/servers/nifi-1.25.0/lib/spring-aop-5.3.31.jar /home/servers/nifi-1.25.0/lib/spring-aop-5.3.31.jar.bak cp /home/servers/nifi-1.25.0/lib/spring-context-5.3.31.jar /home/servers/nifi-1.25.0/lib/spring-context-5.3.31.jar.bak cp /home/servers/nifi-1.25.0/lib/spring-jcl-5.3.31.jar /home/servers/nifi-1.25.0/lib/spring-jcl-5.3.31.jar.bak cp /home/servers/nifi-1.25.0/lib/spring-beans-5.3.31.jar /home/servers/nifi-1.25.0/lib/spring-beans-5.3.31.jar.bak cp /home/servers/nifi-1.25.0/lib/spring-expression-5.3.31.jar /home/servers/nifi-1.25.0/lib/spring-expression-5.3.31.jar.bak cp /home/servers/nifi-1.25.0/lib/spring-web-5.3.31.jar /home/servers/nifi-1.25.0/lib/spring-web-5.3.31.jar.bak # 替换成5.3.32版本 cp /home/ubuntu/spring_jar/spring-core-5.3.32.jar /home/servers/nifi-1.25.0/lib/ cp /home/ubuntu/spring_jar/spring-aop-5.3.32.jar /home/servers/nifi-1.25.0/lib/ cp /home/ubuntu/spring_jar/spring-context-5.3.32.jar /home/servers/nifi-1.25.0/lib/ cp /home/ubuntu/spring_jar/spring-jcl-5.3.32.jar /home/servers/nifi-1.25.0/lib/ cp /home/ubuntu/spring_jar/spring-beans-5.3.32.jar /home/servers/nifi-1.25.0/lib/ cp /home/ubuntu/spring_jar/spring-expression-5.3.32.jar /home/servers/nifi-1.25.0/lib/ cp /home/ubuntu/spring_jar/spring-web-5.3.32.jar /home/servers/nifi-1.25.0/lib/
(3)正确处理NAR包
NAR是NiFi的模块化包,别乱改所有NAR,只需要处理nifi-spring-nar-1.25.0.nar——这是专门装Spring依赖的包:
- 解压这个NAR包,把里面的Spring JAR全换成5.3.32版本。
- 按原结构重新打包成NAR格式,确保和原包的目录结构完全一致,别破坏签名。
- 其他NAR包除非明确查到里面有旧版Spring且影响漏洞修复,否则别动。
(4)启动失败?查日志找原因
如果还是启动不了,立刻去看logs/nifi-app.log和logs/nifi-bootstrap.log:
- 要是看到
ClassNotFoundException或NoSuchMethodError,说明还有旧版Spring JAR没替换干净,或者某个依赖包只认旧版API。 - 可以用
jdeps工具扫一下NiFi的依赖树,找出冲突的地方。
3. 确认修复成功
启动NiFi后,去/nifi-api/system-diagnostics页面看Classpath里的Spring版本是不是5.3.32,再跑一遍安全扫描,确认漏洞没了就行。
内容的提问来源于stack exchange,提问作者GGB
相关产品推荐
相关产品推荐

