Repository navigation
Derive downloads.cdn.telerik.com for jobs holding a nuget.telerik.com credential - #320
Merged
v-robaiken merged 1 commit intoOct 15, 2026
Conversation
… credential
The licensed Telerik NuGet feed (nuget.telerik.com, declared in
dependabot.yml as a nuget-feed registry with an api-key credential) answers
every package download with a 302 to a pre-signed URL on
downloads.cdn.telerik.com. The proxy refuses that second hop ("egress not
allowlisted downloads.cdn.telerik.com"), so every nuget job on the Telerik
feed ends in private_source_authentication_failure.
Add it under registry_redirect_derivations rather than the static nuget
list: only a job holding the feed credential can obtain the redirect, so
the CDN is opened only for those jobs.
Fixes dependabot#306
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
v-robaiken
approved these changes
Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What are you trying to accomplish?
Fixes #306.
Hosted Dependabot
nugetjobs on the licensed Telerik feed fail underproxy-egress-enforce. The feed (https://nuget.telerik.com/v3/index.json, declared independabot.ymlas anuget-feedregistry with an api-key credential) authenticates fine and serves the service index, registration and package index, but answers every package download with a302to a pre-signed URL onhttps://downloads.cdn.telerik.com/.... The proxy refuses that second hop, and the updater reports it asprivate_source_authentication_failure:Every licensed Telerik package (
Telerik.UI.for.Blazor,Telerik.Documents.*,Telerik.Zip, the other UI suites) downloads through this CDN, so any repo on the Telerik feed hits it.This adds
downloads.cdn.telerik.comunderregistry_redirect_derivations, keyed on the credential hostnuget.telerik.com.Anything you want to highlight for special attention from reviewers?
Why
registry_redirect_derivationsand not the staticnugetlist. #306 asked for the static list, but the redirect is only reachable by a job that holds the feed credential (the feed is licensed; unauthenticated requests never get the 302). The derivation section opens the CDN only for those jobs, which is strictly tighter and equally sufficient, matching theadd-egress-allowlist-domainguidance for the download target of a configured registry.Why the exact form is safe.
downloads.cdn.telerik.comis a single Progress/Telerik-owned host serving only their package artefacts, with no user-creatable names in it. The derived entry is matched exactly (the section rejects glob and leading-dot forms at startup), and the credential host is also exact, soevil.nuget.telerik.comornuget.telerik.com.attacker.comin a credential derives nothing.Ownership evidence. TLS:
subject=CN=downloads.cdn.telerik.com, SANdownloads.cdn.telerik.comonly,issuer=C=US, O=Amazon, CN=Amazon RSA 2048 M04; resolves to a public CloudFront address (3.168.70.234at the time of writing). The redirect chain was reproduced with a real feed credential and--max-redirs 0:How will you know you've accomplished your goal?
Reproduction: the
nuget in /.jobs of two private repos on the Telerik feed failed on every run with the log above; GitHub staff can pull the proxy log for INOV8Assist run 38601045294 (2026-10-14). Declaringhttps://downloads.cdn.telerik.comas a credential-lessnuget-feedregistry independabot.yml, which puts it in the job's dynamic hosts the same way this derivation does, made the next job finish without the error (INOV8Functions run 38285903239, 2026-10-12). This PR makes that per-repo workaround unnecessary.Regression coverage:
TestEgressDefaults_RegistryRedirectDerivationsLoadedFromYAMLasserts the derivation fornuget.telerik.com.TestRegistryRedirectHosts_TelerikDownloadCDNDerived(egress_dynamic_hosts_test.go): a job with anuget_feedcredential fornuget.telerik.comreaches the feed and a realistic CDN download URL;evil.downloads.cdn.telerik.com,downloads.cdn.telerik.com.attacker.com,cdn.telerik.com,telerik.comandwww.telerik.comstay blocked.TestRegistryRedirectHosts_TelerikMatchedExactly: onlynuget.telerik.com(and its absolute-DNS form) derives the CDN; lookalike credential hosts derive nothing.TestRegistryRedirectHosts_TelerikCDNNotAllowedWithoutCredential: a job with a differentnuget_feedcredential cannot reach the CDN.With the YAML entry removed, the first three tests fail; restored,
go test -shuffle=on -count=2 ./...passes andgofmt -l internal/handlers/prints nothing.Checklist
go test -shuffle=on -count=2 ./...passes locally;script/testwith-racecould not run in my environment, no C compiler for cgo. Relying on CI for the race run.)🤖 Generated with Claude Code