一、Nexus3简介
Sonatype Nexus Repository 3 通常简称为Nexus3,它是Sonatype公司出品的仓库管理软件,有开源和付费两个版本。Nexus3是DevOps制品仓库技术选型中的常客,对于开源版本的Nexus3具有以下优点:
- 可扩展性。Nexus3支持许多不同的仓库类型,包括Maven、NPM、Docker和Yum等。
- 安全性。Nexus3提供多种安全措施保护仓库,如用户身份验证、访问控制和SSL加密。
- 易用性。Nexus3提供了一套功能丰富的仪表板,用户可以轻松地管理您的仓库内容、配置和权限。
这里需要注意的是,后续的内容都是基于3.38.0-01开源版本的Nexus3展开的。
二、Nexus3安装目录
Nexus3安装比较简单,在sonatype官方网站的文档中有详细的介绍,这里就不再赘述了。因为后面涉及的安全漏洞都是对Nexus3安装目录的操作,所以需要对Nexus3安装目录有一定的了解,下面就介绍下Nexus3安装目录。
- bin/。该目录包含nexus启动脚本和启动相关的配置文件。
- etc/。该目录包含配置文件。
- lib/。该目录包含关于Apache Karaf的二进制库文件。
- public/。该目录包含应用的公共资源。
- system/。该目录包含Nexus3应用的所有的组件和插件。
为了后面更好的看Nexus3服务日志信息,这里需要知道Nexus3服务日志默认在../sonatype-work/nexus3/log目录下,重点关注该目录下的nexus.log文件的内容,它是Nexus3服务的最重要的日志。
三、Nexus3漏洞修复操作流程
1、漏洞简介
漏洞名称 | Apache Commons FileUpload 拒绝服务漏洞(CVE-2023-24998) |
漏洞类型 |
拒绝服务连接 |
危险程度 | 高危 |
漏洞描述 |
Apache Commons FileUpload 包可以提供强大的、高性能的、文件上传能力。 Apache Commons FileUpload 存在安全漏洞,由于1.5 版本之前的Commons FileUpload对处理的请求部分的数量没有限制,攻击者有可能通过恶意上传或一系列上传触发 DoS。 |
修复建议 |
将 Commons FileUpload 升级到 1.5 及以上版本 |
修复影响 |
服务重启 |
2、查看漏洞包路径和被引用文件
在安装目录nexus-3.38.0-01下,执行如下命令:
grep –r “commons-fileupload” ./system/
可以看到该漏洞包所在路径为:
./system/commons-fileupload/commons-fileupload/1.4/commons-fileupload-1.4.jar
引用该漏洞包的文件有:
- ./system/com/sonatype/nexus/assemblies/nexus-pro-feature/3.38.1-01/nexus-pro-feature-3.38.1-01-features.xml
- ./system/com/sonatype/nexus/assemblies/nexus-oss-feature/3.38.1-01/nexus-oss-feature-3.38.1-01-features.xml
- ./system/org/sonatype/nexus/assemblies/nexus-core-feature/3.38.1-01/nexus-core-feature-3.38.1-01-features.xml
- ./system/org/sonatype/nexus/assemblies/nexus-base-feature/3.38.1-01/nexus-base-feature-3.38.1-01-features.xml
3、升级依赖包和修改被应用文件
根据修复建议,需要将commons-fileupload包的版本升级到1.5及以上,那么这里选择升级到1.5版本
在./system/commons-fileupload/commons-fileupload/目录下创建“1.5”目录,然后将commons-fileupload-1.5.jar拷贝到该目录下,最后修改上一步中引用了commons-fileupload包1.4版本的那4个文件中的版本号,改为1.5。
需要注意的是做升级的过程中,请停止Nexus3服务!
4、重启Nexus3和验证
做完包升级的工作后,重启Nexus3,然后查看日志有无报错,验证Nexus3功能是否正常。如果都没有问题,那么安全漏洞修复就成功了。