Visual Studio 2022中如何更新NuGet包依赖库以修复安全漏洞
解决RimDev.Stuntman依赖的JwtBearer安全漏洞问题
问题说明
项目里用的RimDev.Stuntman(3.0.0版)依赖的Microsoft.AspNetCore.Authentication.JwtBearer版本老旧,存在GHSA-q7cg-43mg-qp69安全漏洞。目前JwtBearer已有安全更新版本,但RimDev.Stuntman官方暂无适配更新。尝试执行Install-Package RimDev.Stuntman -Version 3.0.0 -IgnoreDependencies命令安装后,仍会自动引入不安全的JwtBearer版本,暂未找到有效更新方法。
解决办法
1. 强制指定JwtBearer的安全版本(最直接)
直接在项目的.csproj文件中手动添加JwtBearer的引用,明确指定安全版本号,NuGet会自动用该版本覆盖依赖链中的旧版本:
<ItemGroup> <!-- 把x.x.x替换为符合安全要求的最新稳定版本,需匹配你的.NET框架版本 --> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="x.x.x" /> </ItemGroup>
保存文件后,右键项目→「管理NuGet程序包」,确认JwtBearer已更新至指定的安全版本即可。
2. 忽略版本冲突警告并强制替换
若添加上述引用后出现版本冲突警告,可给Stuntman的引用配置忽略警告,确保安全版本的JwtBearer正常生效:
<ItemGroup> <PackageReference Include="RimDev.Stuntman" Version="3.0.0" NoWarn="NU1605" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="x.x.x" /> </ItemGroup>
3. 自行编译修改后的Stuntman包
如果前两种方法无效,可尝试手动修改源码编译:
- 找到RimDev.Stuntman的开源源码仓库
- 将仓库内项目的JwtBearer依赖版本替换为安全版本
- 编译生成自定义NuGet包,替换项目中原有的Stuntman引用
漏洞修复验证
更新完成后,可通过以下方式确认漏洞已修复:
- 在Visual Studio的NuGet包管理器中,查看
Microsoft.AspNetCore.Authentication.JwtBearer的版本是否为安全版本 - 使用Visual Studio内置的漏洞检测工具扫描项目,确认GHSA-q7cg-43mg-qp69漏洞已消失
内容的提问来源于stack exchange,提问作者asap_coder
相关产品推荐
相关产品推荐

