ASP.NET Core 6.0 Web API未直接安装库出现漏洞的原因咨询
关于ASP.NET Core 6.0 Web API中未直接引用库的漏洞疑问
我有一个ASP.NET Core 6.0 Web API项目,已经实现了CI/CD流程用于发布变更,同时集成了漏洞扫描工具trivy检测代码漏洞。今天发现几个未在项目中直接安装的库被标记存在高危漏洞,涉及System.Formats.Asn1、System.IO.Packaging、NuGet.Protocol、SortedList。虽然可以安装6.0.1版本修复漏洞,但我疑惑这些库明明不在项目依赖里,为什么会被扫描到?想确认这些库是否是.NET 6.0框架内部调用的?
漏洞详情(以System.Formats.Asn1为例)
- 库名称:System.Formats.Asn1
- 漏洞编号:CVE-2024-38095
- 风险等级:高
- 当前检测到的版本:6.0.0
- 修复版本:6.0.1、8.0.1
- 漏洞描述:.NET在解析X.509内容和对象标识符(ObjectIdentifiers)时存在拒绝服务(DoS)漏洞
这些库确实是.NET 6.0框架的间接依赖项——你的项目依赖的ASP.NET Core或.NET基础库内部会调用它们,所以即使你没在项目文件(如.csproj)里直接声明引用,它们依然会作为框架的一部分被引入到最终的部署包中。
具体来说:
- System.Formats.Asn1是.NET 6.0中处理ASN.1编码的核心组件,ASP.NET Core的身份验证、HTTPS相关模块都会间接依赖它;
- System.IO.Packaging用于处理Office Open XML格式的打包文件,部分框架内部功能会用到;
- NuGet.Protocol会在项目构建的包还原环节(比如CI/CD流程中)被间接引入,或是被相关工具依赖;
- SortedList是.NET基础类库中的集合类型,大量框架组件都会直接使用它。
扫描工具trivy会分析整个部署包的所有依赖(包括框架自带的间接依赖),因此会检测到这些未直接引用但实际存在的库的漏洞。
修复建议
- 优先升级.NET 6.0补丁版本:这类框架自带的库,官方的安全更新会统一修复,建议将项目的.NET 6.0 runtime升级到6.0.1及以上的补丁版本,这是最彻底的修复方式;
- 强制指定NuGet包版本:如果需要单独安装修复版本,可以在
.csproj中添加<PackageReference>节点强制指定这些库的6.0.1版本,确保框架优先使用修复后的版本。
内容的提问来源于stack exchange,提问作者Mannan Bahelim
相关产品推荐
相关产品推荐

