You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Net6.0中Grype检测CVE-2023-36049的疑惑及修复咨询

.NET 6.0漏洞扫描相关问题解答

问题背景

使用Syft和Grype扫描.NET 6.0解决方案的CRITICAL和HIGH级别漏洞时,Grype检测到CVE-2023-36049(关联System.Net.Requests包,官方建议安装SDK 6.0.317或Runtime 6.0.25)。但通过dotnet list package --include-transitive命令及DependencyVisualizerTool均未找到该包,仅在自动生成的*.deps.json文件中发现其引用。机器已安装符合要求的SDK和Runtime,在csproj中添加<PackageReference Include="System.Net.Requests" Version="4.3.0" ExcludeAssets="all"/>后,Grype不再检测到该漏洞,但不清楚NuGet的System.Net.Requests包与.NET Core系统DLL的区别,现咨询以下问题:

  1. 未显式依赖该包为何会被检测到?
  2. 如何彻底解决该漏洞?
  3. 为何*.deps.json中存在该引用?

解答

1. 未显式依赖却被检测到的原因

  • .NET Core/.NET 6的核心功能依赖框架引用(Framework Reference),System.Net.Requests属于这类框架自带的间接依赖,并非普通的NuGet包依赖,因此不会出现在dotnet list package的输出结果中。
  • Grype等漏洞扫描工具会解析*.deps.json文件,该文件包含了应用运行时所需的全部依赖项(包括框架隐式引入的依赖),所以即使没有显式引用,工具也能从这里检测到该包并关联对应的漏洞信息。

2. 彻底解决漏洞的方法

  • 遵循官方建议,确保项目使用SDK 6.0.317或Runtime 6.0.25及以上版本:这些版本已经修复了该漏洞对应的系统库问题,无需额外添加NuGet引用。
  • 你之前添加的<PackageReference Include="System.Net.Requests" Version="4.3.0" ExcludeAssets="all"/>只是让扫描工具停止检测该包,属于“扫描绕过”,并未真正修复漏洞——因为ExcludeAssets="all"会让NuGet不引入该包的任何文件,实际运行时还是使用框架自带的库。
  • 验证修复的正确步骤:
    • 确认本地开发环境和部署环境都安装了指定版本的SDK/Runtime
    • 清理项目的bin/和obj/目录,重新构建解决方案
    • 再次用Grype扫描,确认漏洞已消失(此时无需保留依赖排除的配置)

3. *.deps.json中存在引用的原因

  • *.deps.json是.NET构建过程中自动生成的依赖清单文件,它记录了应用程序运行时需要加载的所有依赖项,包括:
    • 项目显式引用的NuGet包
    • 框架引用(如Microsoft.NET.Sdk.Web或Microsoft.NET.Sdk)自带的底层依赖库
  • 当你的项目用到.NET 6的网络相关功能(比如HttpClient操作)时,构建系统会自动将System.Net.Requests这类底层依赖加入到*.deps.json中,确保运行时能正确找到并加载对应的库文件。

内容的提问来源于stack exchange,提问作者Eduardo Isaac Ballesteros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 02:35:14