gpt4 book ai didi

c# - 针对 .NET Core 2.1 的解决方案使用旧的 System.ServiceModel.Primitives 和 System.Private.ServiceModel 构建

转载 作者:行者123 更新时间:2023-11-30 22:59:32 28 4
gpt4 key购买 nike

我有一个由针对 .NET Standard 2.0 和 .NET Core 2.1.304 的项目组成的解决方案。在构建此解决方案时,它利用了旧的易受攻击版本的 System.ServiceModel.PrimitivesSystem.Private.ServiceModel ( CVE-2018-0786 )。

我可能遗漏了一些关于整体解决方案或导致使用旧版本的项目之一的明显配置,但我所知道的一切检查看起来都是正确的:

全局.json

{
"sdk": {
"version": "2.1.302"
}
}

示例 .NET Core 项目文件

<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<Configurations>Debug;Dev;Qual;Release</Configurations>
<LangVersion>7.1</LangVersion>
</PropertyGroup>

示例 .NET 标准项目文件

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Configurations>Debug;Dev;Qual;Release</Configurations>
</PropertyGroup>

我已确保所有 NuGet 包都是最新的。也就是说,是否有可能是我的 NuGet 包引用之一导致回退到旧版本?我应该检查哪些其他配置?


有趣的是,当我构建一个不同但配置相似的解决方案(据我所知)时,该解决方案使用较新的不易受攻击的版本生成一个构建。

最佳答案

您可以使用 dotnet-outdated 等工具确定项目中依赖项和传递依赖项的版本。

通过 powershell 命令行上的 dotnet tool install --global dotnet-outdated 安装并在您的解决方案文件夹中运行 dotnet outdated -t -td 100 以查看 100 个传递依赖级别。

您的输出将如下所示

» MyProject
[.NETCoreApp,Version=v2.1]
System.Private.ServiceModel [T] 4.4.0 -> 4.5.3
System.ServiceModel.Primitives [T] 4.4.0 -> 4.5.3

然后,您可以使用上述过时的依赖项来追踪您的解决方案中需要进一步调查的项目。

从那里消除已知是安全的依赖项,因为它们出现在不依赖于错误库的其他项目中(无论版本如何)。此时可能需要使用 nuget.org并调查每个可疑的依赖项以查看它使用的子依赖项的版本。

关于c# - 针对 .NET Core 2.1 的解决方案使用旧的 System.ServiceModel.Primitives 和 System.Private.ServiceModel 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52123669/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com