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

Critical: .NET install domains and URLs are changing #9671

Open
richlander opened this issue Dec 24, 2024 · 42 comments
Open

Critical: .NET install domains and URLs are changing #9671

richlander opened this issue Dec 24, 2024 · 42 comments
Assignees

Comments

@richlander
Copy link
Member

richlander commented Dec 24, 2024

.NET binaries and installers have moved to a new domain -- builds.dotnet.microsoft.com -- backed by a new Content Delivery Network (CDN). You may need to make changes to adjust.

Tracking issue: #9674

.NET Team Status:

Recommended action:

Last update: 2025.01.23
Next update: 2025.02.04

Context

Some .NET binaries and installers have been hosted on Azure Content Delivery Network (CDN) domains that end in .azureedge.net. These domains were hosted by edg.io, which has ceased operations due to bankruptcy. We migrated to a new CDN and will be using new domains going forward.

We expectazureedge.net domains to cease by 5/31 (at latest).

.NET Team Remediation

New domains were created:

  • builds.dotnet.microsoft.com for signed official builds
  • ci.dot.net for unsigned builds

Test links for new CDN:

Test links for old CDN:

The following resources have been updated to use new domains.

Other changes are in progress.

User Remediation

Please make the following replacements:

  • dotnetcli.azureedge.net -> builds.dotnet.microsoft.com
  • dotnetcli.blob.core.windows.net -> builds.dotnet.microsoft.com
  • dotnetbuilds.azureedge.net -> ci.dot.net
  • dotnetbuilds.blob.core.windows.net -> ci.dot.net

All the new domains are path-compatible with old domains, as they share the same origin.

Please also make the following changes:

  • Update local copies of the install script
  • Update setup-dotnet Action references
  • Validate that firewall rules work with the new domains

Install script

The .NET install script is used to install .NET from our CDN. We are changing CDNs (documented in a following section), which requires us to change the install script to use the new CDN.

Updated scripts:

  • https://dot.net/v1/dotnet-install.sh
  • https://dot.net/v1/dotnet-install.ps1

Notes:

  • Users who have local copies of these scripts will need to update their copies.
  • Users who rely on the remote copy (at the URLs above) do not need to do anything other than validate no observed change in behavior (due to new domains and CDNs being used).

Tracking PRs:

Official builds

Official builds and JSON files are hosted via a CDN, available for use by the install script and other installers.

Notes:

You can change from old to new domains by changing the domain section of the URL. The other parts of the URL do not need to change.

Example URLs:

A set of short links are available for official builds.

Link pattern:https://aka.ms/dotnet/[x.y]/[package].

Example URLs:

These links produce301 HTTP results that forward to our CDN.

We expect these links to be changed in mid January.

Tracking PR:

CI builds

Continuous integration (CI) builds are hosted via a CDN, available via the install script and GitHub README files.

Note: CI builds include a mix of tested and untested builds, signed and unsigned builds.

Example URLs:

A set of short links are available for CI builds.

Link pattern:https://aka.ms/dotnet/[x.y]/daily/[package].

Example URLs:

These links produce301 HTTP results that forward to our CDN.

We expect these links to be changed in mid January.

Tracking PR:

CI build pages use the CI short links.

Example build pages:

Azure DevOps and GitHub Actions

  • Major versions tags for actions/setup-dotnet have been updated. References to pinned versions will require updating to the most recent version.
  • We expect that GitHub Enterprise Server will be addressed in January.
  • Azure DevOps UseDotnetTask will be updated in January
  • We do not yet have a date for updating Azure DevOps Server.
@richlander richlander self-assigned this Dec 24, 2024
@KalleOlaviNiemitalo
Copy link

Is there a risk that a malicious party later acquires azureedge.net and starts serving malware to systems that still use the old URLs? From WHOIS, it looks like azureedge.net is registered to Microsoft, not to Edgio. (Just wondering how urgent it is to update URLs in old version-control branches that are not actively developed but might get built some day.)

Have there been any NuGet feeds in the domain?

@shanselman
Copy link
Contributor

@KalleOlaviNiemitalo we took it over, so it won’t be taken away.

@zarlo
Copy link

zarlo commented Dec 24, 2024

@KalleOlaviNiemitalo we took it over, so it won’t be taken away.

so why not keep the current urls for like 1-2 more dont net versions so after .net 11 you have to use the new urls this would give people time to update their whitelists

@klemmchr
Copy link

Given this issue I'm wondering when Microsoft will provide their own domain registrar on Azure to prevent such issues in the future. Currently this is the only thing that is really missing on the Azure platform. I can host virtually anything on Azure but when it comes to domains I still need to resort to a third party. I can point all my nameservers to Azure, sure. But the domain itself needs to be hosted somewhere else.

@charles-Graham-Keilman
Copy link

Does this affect the installers in the Azure Devops pipelines? We use a mix of classic and Yaml pipelines.

@klemmchr
Copy link

klemmchr commented Dec 24, 2024

Does this affect the installers in the Azure Devops pipelines? We use a mix of classic and Yaml pipelines.

Yes, it does.

Azure DevOps and GitHub Actions installation tools are dependent on some of these resources. We are working directly with those teams to maintain continuity of service. They are moving to the new domains at best speed.

bouwkast added a commit to DataDog/dd-trace-dotnet that referenced this issue Jan 17, 2025
See: dotnet/core#9671

They are changing CDNs.
These changes have already been added in
the official install scripts.

https://github.com/dotnet/install-scripts/pull/555/files
Tanya-Solyanik added a commit to Tanya-Solyanik/winforms that referenced this issue Jan 19, 2025
Please make the following replacements:

dotnetcli.azureedge.net -> builds.dotnet.microsoft.com
dotnetcli.blob.core.windows.net -> builds.dotnet.microsoft.com
dotnetbuilds.azureedge.net -> ci.dot.net
dotnetbuilds.blob.core.windows.net -> ci.dot.net
@EatonZ
Copy link

EatonZ commented Jan 22, 2025

Hi, I emailed [email protected] as instructed (twice), but never received a response. Is the inbox monitored?

I had asked this question - now posting here:

It appears that your new CDN does not utilize the Content-MD5 HTTP response header, which my software currently checks during updates to ensure the data was downloaded correctly. Any plans to add that header to the new CDN?

Image

Image

@richlander
Copy link
Member Author

ACK. Will respond in the morning.

@richlander
Copy link
Member Author

richlander commented Jan 22, 2025

Looks like this information is available via a HEAD request. Is that OK?

$ curl -s --head https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/8.0.12/windowsdesktop-runtime-8.0.12-win-x64.zip
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-MD5: dJZSYimxFoMXhyGvvmfWKA==
Last-Modified: Tue, 14 Jan 2025 18:04:37 GMT
ETag: 0x8DD34C5E9028595
x-ms-request-id: 410c4d19-601e-004b-024e-6c9933000000
x-ms-version: 2009-09-19
x-ms-lease-status: unlocked
x-ms-blob-type: BlockBlob
Date: Wed, 22 Jan 2025 05:41:53 GMT
Connection: keep-alive
Content-Length: 36822832
Akamai-GRN: 0.0f0e2017.1737524513.56f37fbd

Separately, we're working on a separate proposal to expose .sha512 files right beside the binaries. We publish checksums today, but there are not convenient to retrieve. Would that help? As you likely know, MD5 is no longer recommended for this purpose.

Related: dotnet/docs#44425

@EatonZ
Copy link

EatonZ commented Jan 22, 2025

Hi @richlander, thanks for the info!
I wouldn't want to do a HEAD request that info. For me, I just decided to use the MD5 hash since it was there and there was no harm in doing so. Just wanted to point out that it was missing on the new CDN in case it is a simple server-side change to add. Is that the case? Are you willing to add it for GET requests?

Of course, stronger hashes are welcome, and that hash file would be great to have!

@richlander
Copy link
Member Author

I asked @rbhanda to talk to our CDN provides @EatonZ.

@richlander
Copy link
Member Author

We plan to start scream tests on the old domains soon, per #9676.

@blowdart
Copy link
Contributor

.NET security chiming in :)

Microsoft's internal policy has been, for years, to not use MD5 in new code or systems, and to deprecate it (and SHA1) everywhere else.

Whilst yes, it's part of the HTTP spec, it's not something I want to push for, the hash file route, with stronger hashes would be the preferred option for us, when it's delivered over HTTPS.

I'll leave it to @richlander to track that.

@richlander
Copy link
Member Author

I am hoping to have a good hash file acquisition option in place soon. It will be SHA 512 which is a vastly superior option (as Barry mentions). As they say, friend don't let friends ...

@EatonZ
Copy link

EatonZ commented Jan 24, 2025

@blowdart Totally understandable, thank you.

I'll discontinue my use of this header. @richlander let me know when there's any details about obtaining the new strong hashes.

RussKie pushed a commit to dotnet/extensions-samples that referenced this issue Jan 28, 2025
Bump the update-dotnet-sdk action to v3.4.0 to pick up changes to react to dotnet/core#9671.
@slonkak
Copy link

slonkak commented Jan 30, 2025

Sorry for this specific issue not being directly linked to .net, but Azure Labs uses the same azureedge.net domain for their icons. As of 2025-01-29 those icons are now broken. Do you have a way to correct this or will this not be fixed since Labs is being deprecated in 2027? (Side note: that is still 2 years away, please fix this)

@sageev
Copy link

sageev commented Jan 30, 2025

@slonkak This will be fixed. The Azure Labs team is already working on this.

@slonkak
Copy link

slonkak commented Jan 30, 2025 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests