连接器库生成 CycloneDX SBOM(软件物料清单)并执行依赖漏洞审计。这确保发布前全部依赖无已知漏洞。
漏洞审计
# ① 扫描全部包的已知漏洞(含传递依赖)dotnet list package --vulnerable --include-transitive审计脚本 scripts/vulnerability-audit.mjs 执行 dotnet list package --vulnerable 并输出 artifacts/package-audit.json:
{ "scanDate": "2026-08-01T...", "projectsScanned": 190, "vulnerabilitiesFound": 0, "projects": [ { "path": "src/Bitzsoft.Integrations.Payment/...", "vulnerabilities": [] }, // ... 190 个项目 ]}最新审计结果:190 个项目扫描,0 个漏洞。
NuGet 审计
Directory.Build.props 启用 NuGet 内置审计:
<NuGetAudit>true</NuGetAudit><NuGetAuditMode>all</NuGetAuditMode><NuGetAuditLevel>low</NuGetAuditLevel>警告作为错误处理:
<TreatWarningsAsErrors>true</TreatWarningsAsErrors><WarningsAsErrors>NU1605;NU1901;NU1902;NU1903;NU1904</WarningsAsErrors>NU1901-NU1904 覆盖 Low / Moderate / High / Critical 四个级别的漏洞警告。
SBOM 生成
# ① 生成 CycloneDX 1.5 SBOMdotnet CycloneDX ...输出 artifacts/sbom.cdx.json:
{ "bomFormat": "CycloneDX", "specVersion": "1.5", "metadata": { "component": { "type": "library", "bom-ref": "pkg:nuget/Bitzsoft.Integrations@workspace", "name": "Bitzsoft.Integrations", "purl": "pkg:nuget/Bitzsoft.Integrations@workspace" } }, "properties": [ { "name": "cdx:asset-file-count", "value": "146" } ], "components": [ { "type": "library", "name": "Microsoft.Extensions.DependencyInjection.Abstractions", "version": "10.0.10", "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@10.0.10" } // ... 全部传递依赖 ]}CPM 漏洞修复
当发现传递依赖有漏洞时,在 Directory.Packages.props 中显式固定安全版本:
<!-- 修复 CVE-2026-40021:log4net 传递依赖漏洞 --><PackageVersion Include="log4net" Version="3.3.1" />net5.0 的条件版本:
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" /><PackageVersion Include="Newtonsoft.Json" Version="13.0.1" Condition="'$(TargetFramework)' == 'net5.0'" />相关脚本
| 脚本 | 用途 |
|---|---|
scripts/vulnerability-audit.mjs | 执行 dotnet list package --vulnerable 并输出 JSON |
scripts/generate-sbom.sh | 生成 CycloneDX SBOM |
scripts/check-tfm-policy.mjs | TFM 策略合规性 |