T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:186
- Finding
- Wildcard NuGet Versions Permit Unreviewed Dependency Changes<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 186-189 **Vulnerability Type**: Supply-chain dependency instability **Risk Level**: Medium ### Vulnerable Code ```xml <PackageReference Include="VL.Core" Version="2025.7.*" /> <PackageReference Include="VL.Core.Import" Version="2025.7.*" /> <!-- For Stride integration: --> <PackageReference Include="VL.Stride.Runtime" Version="2025.7.*" /> ``` ### Technical Analysis The recommended project configuration uses floating NuGet package versions. The `2025.7.*` pattern allows package restoration to select a future matching release without a corresponding source-code change or explicit review. This weakens build reproducibility and creates a supply-chain exposure. If a publisher account or upstream package is compromised, a malicious matching version could automatically enter subsequent builds. Package installation and build assets can execute logic in a developer environment or CI runner, depending on package contents and build configuration. The finding does not establish that the named packages are malicious. The vulnerability is the unsafe dependency-selection practice presented as the standard project template. ### Attack Path 1. A user applies the `.csproj` template generated from the Skill documentation. 2. The project retains the wildcard package versions. 3. An attacker compromises an upstream publisher or causes a malicious matching package version to be released. 4. A developer or CI runner performs a fresh NuGet restore. 5. NuGet resolves the wildcard to the attacker-controlled release without requiring a repository change. 6. Malicious package or build logic executes in the context of the developer account or build runner. 7. The attacker may tamper with compiled artifacts or access credentials and files available to that build context. ### Impact Assessment Successful exploitation could execute code with the permissions of the developer or CI build account. The accessible ...[truncated 239 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions - Replace wildcard package versions with exact, reviewed versions. - Generate and commit `packages.lock.json`. - Enable locked restore in CI with `dotnet restore --locked-mode`. - Configure dependency-update automation to submit reviewed pull requests rather than silently selecting new releases. - Use trusted package sources and package-source mapping where practical. - Review package signatures, ownership changes, release notes, and transitive dependency changes before upgrades. - Rebuild release artifacts only from a clean, isolated runner with minimum required permissions. ]]>
