Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Signing: macOS's distrust model overrides custom contextual trust #11986

Open
dtivel opened this issue Jul 26, 2022 · 5 comments
Open

Signing: macOS's distrust model overrides custom contextual trust #11986

dtivel opened this issue Jul 26, 2022 · 5 comments
Labels
Functionality:Signing Priority:2 Issues for the current backlog. Type:Bug

Comments

@dtivel
Copy link
Contributor

dtivel commented Jul 26, 2022

NuGet Product Used

dotnet.exe

Product Version

.NET 5 SDK+

Worked before?

No response

Impact

Other

Repro Steps & Context

In March 2022, I confirmed with Apple developer technical support that Apple had recently updated macOS's X.509 distrust model to explicitly distrust the intermediate certificate in the Symantec timestamping certificate chain used to timestamp NuGet.org packages.

When chain building the end certificate using macOS's default system trust store, the certificate chain validates successfully as trusted; however, the built chain terminates at the intermediate instead of the root.

When chain building the end certificate with custom trust anchors (including the timestamping root), macOS's distrust model overrides the implicit, transitive trust on the intermediate conferred by the explicit, contextual trust on the root. The end result is that certificate chain building fails with explicit distrust.

None of the solutions considered is attractive at this time, so we’re postponing macOS support for NuGet signed package verification during restore operations for the foreseeable future. Signed package verification is still possible using the dotnet nuget verify command.

Relevant timestamping certificate chains:

Verbose Logs

No response

@nkolev92
Copy link
Member

nkolev92 commented Aug 4, 2022

@dtivel Is there a proposal for an action that we're going to take on this?

@dtivel
Copy link
Contributor Author

dtivel commented Nov 30, 2023

@nkolev92, no, not at this time.

@nkolev92 nkolev92 added the Priority:2 Issues for the current backlog. label Oct 3, 2024
@tom171296
Copy link

I would opt for this to be explicitly documented in the trusted signers section of the NuGet documentation. I can imagine that there are a lot of people using maui for example on a macOs build server that trust on the documentation that the trusted signers just works.

Is there a reason why this gets a priority 2 label, it can result in serious security issues?

@dtivel
Copy link
Contributor Author

dtivel commented Nov 6, 2024

NuGet signed package verification is not supported on macOS and is disabled by default.

See https://learn.microsoft.com/dotnet/core/tools/nuget-signed-package-verification#macos

@dtivel
Copy link
Contributor Author

dtivel commented Nov 7, 2024

Also see the note for dotnet nuget trust, which leads to the aforementioned doc.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Functionality:Signing Priority:2 Issues for the current backlog. Type:Bug
Projects
None yet
Development

No branches or pull requests

4 participants