بهبود امنیت در استفاده از بستههای NuGet در .NET 10
نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۹/۱۵ ۰۹:۳۸
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
dotnet restore انجام میشود. NuGet تمام بستهها را با پایگاه داده GitHub Advisory Database مقایسه میکند. اگر آسیبپذیری پیدا شود، هشدارهایی مانند این دریافت خواهید کرد:warning NU1902: Package 'Example.Package' 5.0.0 has a known moderate severity vulnerability, https://github.com/advisories/GHSA-xxxx-xxxx-xxxx
<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>
<PropertyGroup> <NuGetAudit>false</NuGetAudit> </PropertyGroup>
<ItemGroup> <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-xxxx-xxxx-xxxx" /> </ItemGroup>
<ItemGroup> <PackageReference Include="VulnerablePackage" Version="2.0.0" /> </ItemGroup>
dotnet package update --vulnerable, NuGet تمام بستههای آسیبپذیر را به اولین نسخه بدون آسیبپذیری شناختهشده بهروزرسانی میکند. این دستور پروژه را اسکن کرده و تغییرات لازم را اعمال مینماید، که زمان و تلاش شما را صرفهجویی میکند./build/_build.csproj : warning NU1903: Package 'Microsoft.Build' 17.12.6 has a known high severity vulnerability, https://github.com/advisories/GHSA-w3q9-fxm7-j8fq
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="App.Common" Version="9.0.4" />
</ItemGroup>
<ItemGroup>
<PackageDownload Include="GitVersion.Tool" Version="[5.12.0]" />
</ItemGroup>
</Project>App.Common وارد میشوند. در نسخههای پیشین .NET، این وابستگیها اغلب بدون بررسی خودکار باقی میماندند، که میتوانست ریسکهای امنیتی را افزایش دهد. مطالعات نشان میدهد که وابستگیهای گذرا میتوانند منبع اصلی آسیبپذیریها باشند، زیرا توسعهدهندگان کمتر به مدیریت مستقیم آنها توجه میکنند.dotnet list package با گزینههای --vulnerable و --include-transitive بود که لیست پکیجها را همراه با آسیبپذیریها نمایش میدهد:dotnet list package --vulnerable --include-transitive
Project 'MyProject' has the following vulnerable packages
[net10.0]:
> Microsoft.Build [17.12.6]: High - https://github.com/advisories/GHSA-w3q9-fxm7-j8fq
Transitive via: App.Common -> Microsoft.Builddotnet depends برای نمایش گراف وابستگیها مفید بودند، اما این روشها زمانبر و وابسته به اجرای دستورات جداگانه بودند. علاوه بر این، عدم هشدار خودکار در مراحل build یا restore، میتوانست مشکلات را تا مراحل تست یا استقرار پنهان نگه دارد.NuGetAuditMode، بررسی آسیبپذیریها را به وابستگیهای گذرا گسترش داده است. این ویژگی، که بخشی از تغییرات breaking در نسخه جدید است، هشدارها را حتی برای پکیجهای غیرمستقیم تولید میکند و امنیت زنجیره تأمین را تقویت مینماید.dotnet add package Microsoft.Build dotnet add package Microsoft.Build.Tasks.Core dotnet add package Microsoft.Build.Utilities.Core
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Build" Version="18.0.2" />
<PackageReference Include="Microsoft.Build.Tasks.Core" Version="18.0.2" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="18.0.2" />
<PackageReference Include="App.Common" Version="9.0.4" />
</ItemGroup>
<ItemGroup>
<PackageDownload Include="GitVersion.Tool" Version="[5.12.0]" />
</ItemGroup>
</Project>NuGetAuditLevel (مانند high برای آسیبپذیریهای شدید) استفاده کنید. ادغام با pipelineهای CI/CD مانند GitHub Actions، بررسی خودکار را امکانپذیر میسازد و از ورود کد آسیبپذیر جلوگیری میکند.