From 848d3883ed1cbc2ea16222c39d90648e98e09683 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 23 Oct 2025 16:57:05 -0700 Subject: [PATCH 01/17] Move the blog post guidance to the docs --- docs/concepts/Auditing-Packages.md | 50 ++++++++++++++++-- docs/concepts/media/dotnet-nuget-why-1.png | Bin 0 -> 39056 bytes .../media/pmui-transitive-tooltip-1.png | Bin 0 -> 20133 bytes .../vs-solution-explorer-search-options-1.png | Bin 0 -> 7508 bytes .../vs-solution-explorer-search-results-1.png | Bin 0 -> 25210 bytes .../errors-and-warnings/NU1901-NU1904.md | 2 +- 6 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 docs/concepts/media/dotnet-nuget-why-1.png create mode 100644 docs/concepts/media/pmui-transitive-tooltip-1.png create mode 100644 docs/concepts/media/vs-solution-explorer-search-options-1.png create mode 100644 docs/concepts/media/vs-solution-explorer-search-results-1.png diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index fff6752b3..6ddf329ee 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -16,8 +16,6 @@ This involves identifying vulnerabilities, evaluating risks, and making recommen The audit can include a review of the packages themselves, as well as any dependencies and their associated risks. The goal of the audit is to identify and mitigate any security vulnerabilities that could be exploited by attackers, such as code injection or cross-site scripting attacks. -We also have a [blog post](https://devblogs.microsoft.com/nuget/nugetaudit-2-0-elevating-security-and-trust-in-package-management/) which discusses our recommended method for taking action when a package with a known vulnerability is found to be used by your project, and tools to help get more information. - ### Feature availability | NuGet | .NET SDK | Visual Studio | Feature | @@ -150,7 +148,12 @@ Note that `--include-transitive` is not default, so should be included. ## Actions when packages with known vulnerabilities are reported -We also have a [blog post](https://devblogs.microsoft.com/nuget/nugetaudit-2-0-elevating-security-and-trust-in-package-management/) which discusses our recommended method for taking action when a package with a known vulnerability is found to be used by your project, and tools to help get more information. +Getting a warning about packages with known vulnerabilities is only part of the process. Once discovered, action needs to be taken to remove the potential vulnerability from your solution. + +The easiest case is when a package you reference directly has the known vulnerability, in which case you update the version to another version that fixes the vulnerability + +Package vulnerabilities may be reported in both direct and transitive package references. +The action you take to resolve may be different because of that. ### Security vulnerabilities found with updates @@ -163,13 +166,50 @@ If security vulnerabilities are found and updates are available for the package, #### Transitive Packages -If a known vulnerability exists in a top-level package's transitive dependencies, you have these options: +Often a vulnerability will be in a transitive dependency. +Our recommendation is to prefer updates to packages “closest” to your direct references. Though, there’s nothing wrong with just upgrading the package with known vulnerability either. + +For example, say your project references package A. Package A has a dependency on package B, which in turn has a dependency on package C. In this example, we’ll consider that package C version 1.0.0 has a known vulnerability, fixed in version 2.0.0. Our recommendation is to first try upgrading package A. If that doesn’t resolve the audit warning, then try upgrading package B. If that doesn’t resolve the audit warning, then upgrade C directly. +To aid with this, you'll [need to find the transitive package path](#finding-the-transitive-package-path). + +In summary, if a known vulnerability exists in a top-level package's transitive dependencies, you have these options: +- Check if the top-level package contains an update that does not have a transitive vulnerability and update that instead. +- Update the cloest package to your direct references that does not reference a vulnerability. - Add the fixed package version as a direct package reference. **Note:** Be sure to remove this reference when a new package version update becomes available and be sure to maintain the defined attributes for the expected behavior. -- Use [Central Package Management with the transitive pinning functionality](../consume-packages/Central-Package-Management.md#transitive-pinning). +- Use [Central Package Management with the transitive pinning functionality](../consume-packages/Central-Package-Management.md#transitive-pinning). Note that [CPM with transitive pinning will cause packages to become dependencies](../consume-packages/Central-Package-Management.md#transitive-pinning-and-pack) if you pack your project into your own package to share with others, even if your project doesn’t directly call APIs on that package. - [Suppress the advisory](#excluding-advisories) until it can be addressed. - File an issue in the top-level package's tracker to request an update. +##### Finding the transitive package path + +There are several ways to find the package path. Which method you prefer depends on what tools you normally use during your development. + +###### dotnet nuget why + +On the commandline, you can use the [`dotnet nuget why` command](/dotnet/core/tools/dotnet-nuget-why) to understand why transitive packages are being included in your project's package graph. + +![dotnet nuget why example](media/dotnet-nuget-why-1.png) + +###### Visual Studio Solution Explorer + +SDK style projects also provide the full package graph under the project’s Dependency node. It’s also searchable! +First, expand search options and enable “search external files”. + +![Visual Studio Solution Explorer Search Options](media/vs-solution-explorer-search-options-1.png) + +Then you can search the package name, and it will show you all instances under each project’s Dependencies node. + +![Visual Studio Solution Explorer Search Results](media/vs-solution-explorer-search-results-1.png) + +###### Visual Studio NuGet Package Manager UI + +When you look at the Installed tab in Visual Studio’s package manager UI, when the project uses PackageReference for package management, it will show both direct and transitive packages. Currently this only happens when you manage packages for a project, not for the solution, although we’re working to improve this. + +If you mouse hover of a package in the package list, the tooltip will include the name of one direct package that has caused that transitive package to be included in the project. + +![Visual Studio Package Manager UI tooltip](media/pmui-transitive-tooltip-1.png) + ### Security vulnerabilities found with no updates In the case that a known vulnerability exists in a package without a security fix, you can do the following. diff --git a/docs/concepts/media/dotnet-nuget-why-1.png b/docs/concepts/media/dotnet-nuget-why-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b8422c44ef4d3a7cf8a7f9c44bcdb570b451245f GIT binary patch literal 39056 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 literal 0 HcmV?d00001 diff --git a/docs/concepts/media/vs-solution-explorer-search-options-1.png b/docs/concepts/media/vs-solution-explorer-search-options-1.png new file mode 100644 index 0000000000000000000000000000000000000000..870c39a8a3ac3f95e45fe13ddff010a5cf04f5a1 GIT binary patch literal 7508 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 literal 0 HcmV?d00001 diff --git a/docs/concepts/media/vs-solution-explorer-search-results-1.png b/docs/concepts/media/vs-solution-explorer-search-results-1.png new file mode 100644 index 0000000000000000000000000000000000000000..00e30fedd7b5e3d2c945b37fa663183714d48c3d GIT binary patch literal 25210 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

I&wSK{;AfL6%_p_=n+@6&N=t)ODo62= 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 Date: Thu, 23 Oct 2025 16:59:57 -0700 Subject: [PATCH 02/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/concepts/Auditing-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 6ddf329ee..ccd8c30cb 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -150,7 +150,7 @@ Note that `--include-transitive` is not default, so should be included. Getting a warning about packages with known vulnerabilities is only part of the process. Once discovered, action needs to be taken to remove the potential vulnerability from your solution. -The easiest case is when a package you reference directly has the known vulnerability, in which case you update the version to another version that fixes the vulnerability +The easiest case is when a package you reference directly has the known vulnerability, in which case you update the version to another version that fixes the vulnerability. Package vulnerabilities may be reported in both direct and transitive package references. The action you take to resolve may be different because of that. From 42d66ea83efb7c132b38bf3298287307c6849085 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 23 Oct 2025 17:00:09 -0700 Subject: [PATCH 03/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/concepts/Auditing-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index ccd8c30cb..f659789d8 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -175,7 +175,7 @@ To aid with this, you'll [need to find the transitive package path](#finding-the In summary, if a known vulnerability exists in a top-level package's transitive dependencies, you have these options: - Check if the top-level package contains an update that does not have a transitive vulnerability and update that instead. -- Update the cloest package to your direct references that does not reference a vulnerability. +- Update the closest package to your direct references that does not reference a vulnerability. - Add the fixed package version as a direct package reference. **Note:** Be sure to remove this reference when a new package version update becomes available and be sure to maintain the defined attributes for the expected behavior. - Use [Central Package Management with the transitive pinning functionality](../consume-packages/Central-Package-Management.md#transitive-pinning). Note that [CPM with transitive pinning will cause packages to become dependencies](../consume-packages/Central-Package-Management.md#transitive-pinning-and-pack) if you pack your project into your own package to share with others, even if your project doesn’t directly call APIs on that package. - [Suppress the advisory](#excluding-advisories) until it can be addressed. From 8d9671b6e534352d8dea75ac967f4bc1f1b474ad Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 23 Oct 2025 17:00:23 -0700 Subject: [PATCH 04/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/concepts/Auditing-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index f659789d8..79db10653 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -206,7 +206,7 @@ Then you can search the package name, and it will show you all instances under e When you look at the Installed tab in Visual Studio’s package manager UI, when the project uses PackageReference for package management, it will show both direct and transitive packages. Currently this only happens when you manage packages for a project, not for the solution, although we’re working to improve this. -If you mouse hover of a package in the package list, the tooltip will include the name of one direct package that has caused that transitive package to be included in the project. +If you mouse hover over a package in the package list, the tooltip will include the name of one direct package that has caused that transitive package to be included in the project. ![Visual Studio Package Manager UI tooltip](media/pmui-transitive-tooltip-1.png) From 7af8fa8d9cc39a0474a0c81d3c2e50fca329f7e4 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 23 Oct 2025 17:02:35 -0700 Subject: [PATCH 05/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/concepts/Auditing-Packages.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 79db10653..db91f9d76 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -177,7 +177,8 @@ In summary, if a known vulnerability exists in a top-level package's transitive - Check if the top-level package contains an update that does not have a transitive vulnerability and update that instead. - Update the closest package to your direct references that does not reference a vulnerability. - Add the fixed package version as a direct package reference. **Note:** Be sure to remove this reference when a new package version update becomes available and be sure to maintain the defined attributes for the expected behavior. -- Use [Central Package Management with the transitive pinning functionality](../consume-packages/Central-Package-Management.md#transitive-pinning). Note that [CPM with transitive pinning will cause packages to become dependencies](../consume-packages/Central-Package-Management.md#transitive-pinning-and-pack) if you pack your project into your own package to share with others, even if your project doesn’t directly call APIs on that package. +- Use [Central Package Management with the transitive pinning functionality](../consume-packages/Central-Package-Management.md#transitive-pinning). + Note that if you pack your project into your own package to share with others, [CPM with transitive pinning will cause packages to become dependencies](../consume-packages/Central-Package-Management.md#transitive-pinning-and-pack), even if your project doesn’t directly call APIs on that package. - [Suppress the advisory](#excluding-advisories) until it can be addressed. - File an issue in the top-level package's tracker to request an update. From 8ed6c585e0eeb6b560d9be0fb2bf799837fc6771 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 23 Oct 2025 17:03:51 -0700 Subject: [PATCH 06/17] try --- docs/concepts/Auditing-Packages.md | 2 +- ...tooltip-1.png => pm-ui-transitive-tooltip-1.png} | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/concepts/media/{pmui-transitive-tooltip-1.png => pm-ui-transitive-tooltip-1.png} (100%) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index db91f9d76..2cdf68116 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -209,7 +209,7 @@ When you look at the Installed tab in Visual Studio’s package manager UI, when If you mouse hover over a package in the package list, the tooltip will include the name of one direct package that has caused that transitive package to be included in the project. -![Visual Studio Package Manager UI tooltip](media/pmui-transitive-tooltip-1.png) +![Visual Studio Package Manager UI tooltip](media/pm-ui-transitive-tooltip-1.png) ### Security vulnerabilities found with no updates diff --git a/docs/concepts/media/pmui-transitive-tooltip-1.png b/docs/concepts/media/pm-ui-transitive-tooltip-1.png similarity index 100% rename from docs/concepts/media/pmui-transitive-tooltip-1.png rename to docs/concepts/media/pm-ui-transitive-tooltip-1.png From 2c7be463a79b4a2bd3da9cf920c8e787697df4cd Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 23 Oct 2025 17:06:21 -0700 Subject: [PATCH 07/17] cleanup --- docs/concepts/Auditing-Packages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 2cdf68116..449133c3d 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -195,11 +195,11 @@ On the commandline, you can use the [`dotnet nuget why` command](/dotnet/core/to ###### Visual Studio Solution Explorer SDK style projects also provide the full package graph under the project’s Dependency node. It’s also searchable! -First, expand search options and enable “search external files”. +Expand search options and enable “search external files”. ![Visual Studio Solution Explorer Search Options](media/vs-solution-explorer-search-options-1.png) -Then you can search the package name, and it will show you all instances under each project’s Dependencies node. +Search the package name, and it will show you all instances under each project’s Dependencies node. ![Visual Studio Solution Explorer Search Results](media/vs-solution-explorer-search-results-1.png) From 4cb2ffad0a2888603bf4cb0c0830f993ec9225c1 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 23 Oct 2025 17:08:52 -0700 Subject: [PATCH 08/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/concepts/Auditing-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 449133c3d..b0127ec58 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -205,7 +205,7 @@ Search the package name, and it will show you all instances under each project ###### Visual Studio NuGet Package Manager UI -When you look at the Installed tab in Visual Studio’s package manager UI, when the project uses PackageReference for package management, it will show both direct and transitive packages. Currently this only happens when you manage packages for a project, not for the solution, although we’re working to improve this. +When you look at the Installed tab in Visual Studio’s package manager UI, when the project uses PackageReference for package management, it will show both direct and transitive packages. Currently, this only happens when you manage packages for a project, not for the solution. If you mouse hover over a package in the package list, the tooltip will include the name of one direct package that has caused that transitive package to be included in the project. From a8226672845c367b98ec3e77ca703f7605b8670a Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Fri, 24 Oct 2025 10:21:19 -0700 Subject: [PATCH 09/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Andy Zivkovic --- docs/concepts/Auditing-Packages.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index b0127ec58..74cc72565 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -148,7 +148,8 @@ Note that `--include-transitive` is not default, so should be included. ## Actions when packages with known vulnerabilities are reported -Getting a warning about packages with known vulnerabilities is only part of the process. Once discovered, action needs to be taken to remove the potential vulnerability from your solution. +Getting a warning about packages with known vulnerabilities is only part of the process. +Once discovered, action needs to be taken to remove the potential vulnerability from your solution. The easiest case is when a package you reference directly has the known vulnerability, in which case you update the version to another version that fixes the vulnerability. From e521d41e76de4d4cee8632a8b807b77ce91d0553 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Fri, 24 Oct 2025 10:21:33 -0700 Subject: [PATCH 10/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Andy Zivkovic --- docs/concepts/Auditing-Packages.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 74cc72565..0fde57991 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -168,7 +168,8 @@ If security vulnerabilities are found and updates are available for the package, #### Transitive Packages Often a vulnerability will be in a transitive dependency. -Our recommendation is to prefer updates to packages “closest” to your direct references. Though, there’s nothing wrong with just upgrading the package with known vulnerability either. +Our recommendation is to prefer updates to packages “closest” to your direct references. +Though, there’s nothing wrong with just upgrading the package with known vulnerability either. For example, say your project references package A. Package A has a dependency on package B, which in turn has a dependency on package C. In this example, we’ll consider that package C version 1.0.0 has a known vulnerability, fixed in version 2.0.0. Our recommendation is to first try upgrading package A. If that doesn’t resolve the audit warning, then try upgrading package B. If that doesn’t resolve the audit warning, then upgrade C directly. To aid with this, you'll [need to find the transitive package path](#finding-the-transitive-package-path). From 16126a2504e44b6a65782d71d1cf4fbd42843e4c Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Fri, 24 Oct 2025 10:21:42 -0700 Subject: [PATCH 11/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Andy Zivkovic --- docs/concepts/Auditing-Packages.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 0fde57991..65847823b 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -171,7 +171,12 @@ Often a vulnerability will be in a transitive dependency. Our recommendation is to prefer updates to packages “closest” to your direct references. Though, there’s nothing wrong with just upgrading the package with known vulnerability either. -For example, say your project references package A. Package A has a dependency on package B, which in turn has a dependency on package C. In this example, we’ll consider that package C version 1.0.0 has a known vulnerability, fixed in version 2.0.0. Our recommendation is to first try upgrading package A. If that doesn’t resolve the audit warning, then try upgrading package B. If that doesn’t resolve the audit warning, then upgrade C directly. +For example, say your project references package A. +Package A has a dependency on package B, which in turn has a dependency on package C. +In this example, we’ll consider that package C version 1.0.0 has a known vulnerability, fixed in version 2.0.0. +Our recommendation is to first try upgrading package A. +If that doesn’t resolve the audit warning, then try upgrading package B. +If that doesn’t resolve the audit warning, then upgrade C directly. To aid with this, you'll [need to find the transitive package path](#finding-the-transitive-package-path). In summary, if a known vulnerability exists in a top-level package's transitive dependencies, you have these options: From 8a578ca1f8e9c5fa727e8afcca74be5fb473f4a9 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Fri, 24 Oct 2025 10:22:01 -0700 Subject: [PATCH 12/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Andy Zivkovic --- docs/concepts/Auditing-Packages.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 65847823b..31cc3d7cb 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -191,7 +191,8 @@ In summary, if a known vulnerability exists in a top-level package's transitive ##### Finding the transitive package path -There are several ways to find the package path. Which method you prefer depends on what tools you normally use during your development. +There are several ways to find the package path. +Which method you prefer depends on what tools you normally use during your development. ###### dotnet nuget why From 8b16e7a1662bfcb4d1b11f22fbe8951681b316eb Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Fri, 24 Oct 2025 10:22:10 -0700 Subject: [PATCH 13/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Andy Zivkovic --- docs/concepts/Auditing-Packages.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 31cc3d7cb..bdc637fd9 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -213,7 +213,8 @@ Search the package name, and it will show you all instances under each project ###### Visual Studio NuGet Package Manager UI -When you look at the Installed tab in Visual Studio’s package manager UI, when the project uses PackageReference for package management, it will show both direct and transitive packages. Currently, this only happens when you manage packages for a project, not for the solution. +When you look at the Installed tab in Visual Studio’s package manager UI, when the project uses PackageReference for package management, it will show both direct and transitive packages. +Currently, this only happens when you manage packages for a project, not for the solution. If you mouse hover over a package in the package list, the tooltip will include the name of one direct package that has caused that transitive package to be included in the project. From 66347588d811ceeb23e66c9c51640c7ea8a56d52 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Fri, 24 Oct 2025 10:25:19 -0700 Subject: [PATCH 14/17] cleanup --- docs/concepts/Auditing-Packages.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index bdc637fd9..6aa0dcc29 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -169,14 +169,14 @@ If security vulnerabilities are found and updates are available for the package, Often a vulnerability will be in a transitive dependency. Our recommendation is to prefer updates to packages “closest” to your direct references. -Though, there’s nothing wrong with just upgrading the package with known vulnerability either. +Though, there's nothing wrong with just upgrading the package with known vulnerability either. For example, say your project references package A. Package A has a dependency on package B, which in turn has a dependency on package C. -In this example, we’ll consider that package C version 1.0.0 has a known vulnerability, fixed in version 2.0.0. +In this example, we'll consider that package C version 1.0.0 has a known vulnerability, fixed in version 2.0.0. Our recommendation is to first try upgrading package A. -If that doesn’t resolve the audit warning, then try upgrading package B. -If that doesn’t resolve the audit warning, then upgrade C directly. +If that doesn't resolve the audit warning, then try upgrading package B. +If that doesn't resolve the audit warning, then upgrade C directly. To aid with this, you'll [need to find the transitive package path](#finding-the-transitive-package-path). In summary, if a known vulnerability exists in a top-level package's transitive dependencies, you have these options: @@ -185,7 +185,7 @@ In summary, if a known vulnerability exists in a top-level package's transitive - Update the closest package to your direct references that does not reference a vulnerability. - Add the fixed package version as a direct package reference. **Note:** Be sure to remove this reference when a new package version update becomes available and be sure to maintain the defined attributes for the expected behavior. - Use [Central Package Management with the transitive pinning functionality](../consume-packages/Central-Package-Management.md#transitive-pinning). - Note that if you pack your project into your own package to share with others, [CPM with transitive pinning will cause packages to become dependencies](../consume-packages/Central-Package-Management.md#transitive-pinning-and-pack), even if your project doesn’t directly call APIs on that package. + Note that if you pack your project into your own package to share with others, [CPM with transitive pinning will cause packages to become dependencies](../consume-packages/Central-Package-Management.md#transitive-pinning-and-pack), even if your project doesn't directly call APIs on that package. - [Suppress the advisory](#excluding-advisories) until it can be addressed. - File an issue in the top-level package's tracker to request an update. @@ -202,18 +202,19 @@ On the commandline, you can use the [`dotnet nuget why` command](/dotnet/core/to ###### Visual Studio Solution Explorer -SDK style projects also provide the full package graph under the project’s Dependency node. It’s also searchable! +SDK style projects also provide the full package graph under the project's Dependency node. +It's also searchable! Expand search options and enable “search external files”. ![Visual Studio Solution Explorer Search Options](media/vs-solution-explorer-search-options-1.png) -Search the package name, and it will show you all instances under each project’s Dependencies node. +Search the package name, and it will show you all instances under each project's Dependencies node. ![Visual Studio Solution Explorer Search Results](media/vs-solution-explorer-search-results-1.png) ###### Visual Studio NuGet Package Manager UI -When you look at the Installed tab in Visual Studio’s package manager UI, when the project uses PackageReference for package management, it will show both direct and transitive packages. +When you look at the Installed tab in Visual Studio's package manager UI, when the project uses PackageReference for package management, it will show both direct and transitive packages. Currently, this only happens when you manage packages for a project, not for the solution. If you mouse hover over a package in the package list, the tooltip will include the name of one direct package that has caused that transitive package to be included in the project. From 8727cf412a2a60a59f8115d59473911d6f11c275 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Mon, 27 Oct 2025 12:55:50 -0700 Subject: [PATCH 15/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/concepts/Auditing-Packages.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 8279c65c9..0c9bab63a 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -183,8 +183,12 @@ Note that `--include-transitive` is not default, so should be included. Getting a warning about packages with known vulnerabilities is only part of the process. Once discovered, action needs to be taken to remove the potential vulnerability from your solution. -The easiest case is when a package you reference directly has the known vulnerability, in which case you update the version to another version that fixes the vulnerability. +The easiest case is when a package you reference directly has the known vulnerability. +In this situation, update the package version to one that fixes the vulnerability. +For example, edit your `.csproj` file to specify the new version: +```xml + Package vulnerabilities may be reported in both direct and transitive package references. The action you take to resolve may be different because of that. From 803984c95381868c24eecf067ec506786c4849f8 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Mon, 27 Oct 2025 12:56:23 -0700 Subject: [PATCH 16/17] Update docs/concepts/Auditing-Packages.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/concepts/Auditing-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 0c9bab63a..341022060 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -232,7 +232,7 @@ Which method you prefer depends on what tools you normally use during your devel ###### dotnet nuget why -On the commandline, you can use the [`dotnet nuget why` command](/dotnet/core/tools/dotnet-nuget-why) to understand why transitive packages are being included in your project's package graph. +On the command line, you can use the [`dotnet nuget why` command](/dotnet/core/tools/dotnet-nuget-why) to understand why transitive packages are being included in your project's package graph. ![dotnet nuget why example](media/dotnet-nuget-why-1.png) From c4c54c4998e70402e5ae58d21771964da9f1a00b Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Mon, 27 Oct 2025 12:57:11 -0700 Subject: [PATCH 17/17] Update Auditing-Packages.md --- docs/concepts/Auditing-Packages.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md index 341022060..47df5d0a4 100644 --- a/docs/concepts/Auditing-Packages.md +++ b/docs/concepts/Auditing-Packages.md @@ -185,10 +185,7 @@ Once discovered, action needs to be taken to remove the potential vulnerability The easiest case is when a package you reference directly has the known vulnerability. In this situation, update the package version to one that fixes the vulnerability. -For example, edit your `.csproj` file to specify the new version: -```xml - Package vulnerabilities may be reported in both direct and transitive package references. The action you take to resolve may be different because of that.