VYPR
High severity7.5NVD Advisory· Published Apr 6, 2026· Updated Apr 9, 2026

CVE-2026-33540

CVE-2026-33540

Description

Distribution is a toolkit to pack, ship, store, and deliver container content. Prior to 3.1.0, in pull-through cache mode, distribution discovers token auth endpoints by parsing WWW-Authenticate challenges returned by the configured upstream registry. The realm URL from a bearer challenge is used without validating that it matches the upstream registry host. As a result, an attacker-controlled upstream (or an attacker with MitM position to the upstream) can cause distribution to send the configured upstream credentials via basic auth to an attacker-controlled realm URL. This vulnerability is fixed in 3.1.0.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
github.com/distribution/distribution/v3Go
< 3.1.03.1.0
github.com/distribution/distributionGo
<= 2.8.3

Affected products

1

Patches

1
cc5d5fa4ba02

Merge commit from fork

https://github.com/distribution/distributionMilos GajdosApr 5, 2026via ghsa
11 files changed · +560 2
  • internal/client/auth/challenge/authchallenge_test.go+41 0 modified
    @@ -122,3 +122,44 @@ func testAuthChallengeConcurrent(t *testing.T, host string) {
     	}()
     	s.Wait()
     }
    +
    +func TestFilteringManager(t *testing.T) {
    +	t.Parallel()
    +
    +	base := NewSimpleManager()
    +	manager := NewFilteringManager(base, func(c Challenge) bool {
    +		return c.Parameters["service"] == "keep.example.com"
    +	})
    +
    +	endpoint, err := url.Parse("https://registry.example.com/v2/")
    +	if err != nil {
    +		t.Fatal(err)
    +	}
    +
    +	resp := &http.Response{
    +		Request: &http.Request{
    +			URL: endpoint,
    +		},
    +		Header:     make(http.Header),
    +		StatusCode: http.StatusUnauthorized,
    +	}
    +	resp.Header.Add("WWW-Authenticate", `Bearer realm="https://auth.example.com/token",service="keep.example.com"`)
    +	resp.Header.Add("WWW-Authenticate", `Bearer realm="https://evil.example.net/token",service="drop.example.net"`)
    +
    +	if err := manager.AddResponse(resp); err != nil {
    +		t.Fatal(err)
    +	}
    +
    +	challenges, err := manager.GetChallenges(*endpoint)
    +	if err != nil {
    +		t.Fatal(err)
    +	}
    +
    +	if len(challenges) != 1 {
    +		t.Fatalf("unexpected challenge count: got %d want 1", len(challenges))
    +	}
    +
    +	if got := challenges[0].Parameters["service"]; got != "keep.example.com" {
    +		t.Fatalf("unexpected surviving challenge service: %q", got)
    +	}
    +}
    
  • internal/client/auth/challenge/filteringmanager.go+46 0 added
    @@ -0,0 +1,46 @@
    +package challenge
    +
    +import (
    +	"net/http"
    +	"net/url"
    +)
    +
    +// FilteringManager decorates another Manager and drops challenges that do not
    +// satisfy the configured predicate.
    +type FilteringManager struct {
    +	base Manager
    +	keep func(Challenge) bool
    +}
    +
    +// NewFilteringManager returns a Manager that delegates storage to base and
    +// filters challenges on reads. If keep is nil, the base manager is returned.
    +func NewFilteringManager(base Manager, keep func(Challenge) bool) Manager {
    +	if keep == nil {
    +		return base
    +	}
    +
    +	return FilteringManager{
    +		base: base,
    +		keep: keep,
    +	}
    +}
    +
    +func (m FilteringManager) GetChallenges(endpoint url.URL) ([]Challenge, error) {
    +	challenges, err := m.base.GetChallenges(endpoint)
    +	if err != nil {
    +		return nil, err
    +	}
    +
    +	filtered := make([]Challenge, 0, len(challenges))
    +	for _, c := range challenges {
    +		if m.keep(c) {
    +			filtered = append(filtered, c)
    +		}
    +	}
    +
    +	return filtered, nil
    +}
    +
    +func (m FilteringManager) AddResponse(resp *http.Response) error {
    +	return m.base.AddResponse(resp)
    +}
    
  • registry/proxy/proxyauth.go+51 1 modified
    @@ -1,13 +1,15 @@
     package proxy
     
     import (
    +	"net"
     	"net/http"
     	"net/url"
     	"strings"
     
     	"github.com/distribution/distribution/v3/internal/client/auth"
     	"github.com/distribution/distribution/v3/internal/client/auth/challenge"
     	"github.com/distribution/distribution/v3/internal/dcontext"
    +	"golang.org/x/net/publicsuffix"
     )
     
     const challengeHeader = "Docker-Distribution-Api-Version"
    @@ -66,21 +68,69 @@ func configureAuth(username, password, remoteURL string) (auth.CredentialStore,
     func getAuthURLs(remoteURL string) ([]string, error) {
     	authURLs := []string{}
     
    +	remote, err := url.Parse(remoteURL)
    +	if err != nil {
    +		return nil, err
    +	}
    +
     	resp, err := http.Get(remoteURL + "/v2/")
     	if err != nil {
     		return nil, err
     	}
     	defer resp.Body.Close()
     
     	for _, c := range challenge.ResponseChallenges(resp) {
    -		if strings.EqualFold(c.Scheme, "bearer") {
    +		if strings.EqualFold(c.Scheme, "bearer") && realmAllowed(remote, c.Parameters["realm"]) {
     			authURLs = append(authURLs, c.Parameters["realm"])
     		}
     	}
     
     	return authURLs, nil
     }
     
    +func realmAllowed(remote *url.URL, realm string) bool {
    +	realmURL, err := url.Parse(realm)
    +	if err != nil {
    +		return false
    +	}
    +	if realmURL.Host == "" || remote == nil || remote.Host == "" {
    +		return false
    +	}
    +
    +	if strings.EqualFold(remote.Host, realmURL.Host) {
    +		return true
    +	}
    +
    +	remoteHost := strings.ToLower(remote.Hostname())
    +	realmHost := strings.ToLower(realmURL.Hostname())
    +	if remoteHost == "" || realmHost == "" {
    +		return false
    +	}
    +
    +	if isLiteralOrLocal(remoteHost) || isLiteralOrLocal(realmHost) {
    +		return false
    +	}
    +
    +	return strings.EqualFold(registrableDomain(remoteHost), registrableDomain(realmHost))
    +}
    +
    +func isLiteralOrLocal(host string) bool {
    +	if host == "localhost" {
    +		return true
    +	}
    +
    +	return net.ParseIP(host) != nil
    +}
    +
    +func registrableDomain(host string) string {
    +	domain, err := publicsuffix.EffectiveTLDPlusOne(host)
    +	if err != nil {
    +		return ""
    +	}
    +
    +	return domain
    +}
    +
     func ping(manager challenge.Manager, endpoint, versionHeader string) error {
     	resp, err := http.Get(endpoint)
     	if err != nil {
    
  • registry/proxy/proxyauth_test.go+136 0 added
    @@ -0,0 +1,136 @@
    +package proxy
    +
    +import (
    +	"fmt"
    +	"net/http"
    +	"net/http/httptest"
    +	"net/url"
    +	"strings"
    +	"testing"
    +
    +	"github.com/distribution/distribution/v3/internal/client/auth/challenge"
    +)
    +
    +func TestConfigureAuthAllowsSameAuthorityRealm(t *testing.T) {
    +	t.Parallel()
    +
    +	var serverURL string
    +	upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    +		if r.URL.Path != "/v2/" {
    +			http.NotFound(w, r)
    +			return
    +		}
    +
    +		w.Header().Set("WWW-Authenticate", fmt.Sprintf(`Bearer realm="%s/token",service="test-service"`, serverURL))
    +		w.WriteHeader(http.StatusUnauthorized)
    +	}))
    +	t.Cleanup(upstream.Close)
    +	serverURL = upstream.URL
    +
    +	tokenCreds, _, err := configureAuth("user", "pass", upstream.URL)
    +	if err != nil {
    +		t.Fatalf("configureAuth: %v", err)
    +	}
    +
    +	realmURL, err := url.Parse(serverURL + "/token")
    +	if err != nil {
    +		t.Fatalf("parse realm: %v", err)
    +	}
    +
    +	username, password := tokenCreds.Basic(realmURL)
    +	if username != "user" || password != "pass" {
    +		t.Fatalf("unexpected credentials for trusted realm: got (%q, %q)", username, password)
    +	}
    +}
    +
    +func TestConfigureAuthRejectsLoopbackRealmOnDifferentAuthority(t *testing.T) {
    +	t.Parallel()
    +
    +	evil := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    +		http.NotFound(w, r)
    +	}))
    +	t.Cleanup(evil.Close)
    +
    +	upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    +		if r.URL.Path != "/v2/" {
    +			http.NotFound(w, r)
    +			return
    +		}
    +
    +		w.Header().Set("WWW-Authenticate", fmt.Sprintf(`Bearer realm="%s/token",service="test-service"`, evil.URL))
    +		w.WriteHeader(http.StatusUnauthorized)
    +	}))
    +	t.Cleanup(upstream.Close)
    +
    +	tokenCreds, _, err := configureAuth("user", "pass", upstream.URL)
    +	if err != nil {
    +		t.Fatalf("configureAuth: %v", err)
    +	}
    +
    +	realmURL, err := url.Parse(evil.URL + "/token")
    +	if err != nil {
    +		t.Fatalf("parse realm: %v", err)
    +	}
    +
    +	username, password := tokenCreds.Basic(realmURL)
    +	if username != "" || password != "" {
    +		t.Fatalf("unexpected credentials for off-origin realm: got (%q, %q)", username, password)
    +	}
    +}
    +
    +func TestRealmAllowedForDockerHubStyleAuthService(t *testing.T) {
    +	t.Parallel()
    +
    +	remoteURL, err := url.Parse("https://registry-1.docker.io")
    +	if err != nil {
    +		t.Fatalf("parse remote url: %v", err)
    +	}
    +
    +	if !realmAllowed(remoteURL, "https://auth.docker.io/token") {
    +		t.Fatal("expected docker hub auth realm to remain allowed")
    +	}
    +}
    +
    +func TestRealmFilteringChallengeManagerDropsOffOriginBearer(t *testing.T) {
    +	t.Parallel()
    +
    +	remoteURL, err := url.Parse("https://registry.example.com")
    +	if err != nil {
    +		t.Fatalf("parse remote url: %v", err)
    +	}
    +
    +	endpoint, err := url.Parse("https://registry.example.com/v2/")
    +	if err != nil {
    +		t.Fatalf("parse endpoint: %v", err)
    +	}
    +
    +	resp := &http.Response{
    +		StatusCode: http.StatusUnauthorized,
    +		Header:     make(http.Header),
    +		Request:    &http.Request{URL: endpoint},
    +	}
    +	resp.Header.Add("Www-Authenticate", `Bearer realm="https://auth.example.com/token",service="registry.example.com"`)
    +	resp.Header.Add("Www-Authenticate", `Bearer realm="https://evil.example.net/token",service="registry.example.com"`)
    +
    +	manager := challenge.NewFilteringManager(challenge.NewSimpleManager(), func(c challenge.Challenge) bool {
    +		return !strings.EqualFold(c.Scheme, "bearer") || realmAllowed(remoteURL, c.Parameters["realm"])
    +	})
    +	if err := manager.AddResponse(resp); err != nil {
    +		t.Fatalf("add response: %v", err)
    +	}
    +
    +	challenges, err := manager.GetChallenges(*endpoint)
    +	if err != nil {
    +		t.Fatalf("get challenges: %v", err)
    +	}
    +
    +	if len(challenges) != 1 {
    +		t.Fatalf("unexpected challenge count: got %d want 1", len(challenges))
    +	}
    +	if challenges[0].Scheme != "bearer" {
    +		t.Fatalf("unexpected surviving challenge: %+v", challenges[0])
    +	}
    +	if challenges[0].Parameters["realm"] != "https://auth.example.com/token" {
    +		t.Fatalf("unexpected surviving realm: %q", challenges[0].Parameters["realm"])
    +	}
    +}
    
  • registry/proxy/proxyregistry.go+4 1 modified
    @@ -5,6 +5,7 @@ import (
     	"fmt"
     	"net/http"
     	"net/url"
    +	"strings"
     	"sync"
     	"time"
     
    @@ -263,7 +264,9 @@ func (r *remoteAuthChallenger) credentialStore() auth.CredentialStore {
     }
     
     func (r *remoteAuthChallenger) challengeManager() challenge.Manager {
    -	return r.cm
    +	return challenge.NewFilteringManager(r.cm, func(c challenge.Challenge) bool {
    +		return !strings.EqualFold(c.Scheme, "bearer") || realmAllowed(&r.remoteURL, c.Parameters["realm"])
    +	})
     }
     
     // tryEstablishChallenges will attempt to get a challenge type for the upstream if none currently exist
    
  • vendor/golang.org/x/net/publicsuffix/data/children+0 0 added
  • vendor/golang.org/x/net/publicsuffix/data/nodes+0 0 added
  • vendor/golang.org/x/net/publicsuffix/data/text+1 0 added
    @@ -0,0 +1 @@
    +bolzano-altoadigevje-og-hornnes3-website-us-west-2bomlocustomer-ocienciabonavstackarasjoketokuyamashikokuchuobondigitaloceanspacesakurastoragextraspace-to-rentalstomakomaibarabonesakuratanishikatakazakindustriesteinkjerepbodynaliasnesoddeno-staginglobodoes-itcouldbeworfarsundiskussionsbereichateblobanazawarszawashtenawsapprunnerdpoliticaarparliamenthickarasuyamasoybookonlineboomladeskierniewiceboschristmasakilovecollegefantasyleaguedagestangebostik-serveronagasukeyword-oncillahppictetcieszynishikatsuragit-repostre-totendofinternet-dnsakurawebredirectmeiwamizawabostonakijinsekikogentlentapisa-geekaratsuginamikatagamimozaporizhzhegurinfinitigooglecode-builder-stg-buildereporthruhereclaimsakyotanabellunord-odalvdalcest-le-patron-k3salangenishikawazukamishihorobotdashgabadaddjabbotthuathienhuebouncemerckmsdscloudisrechtrafficplexus-4boutiquebecologialaichaugianglogowegroweibolognagasakikugawaltervistaikillondonetskarelianceboutireserve-onlineboyfriendoftheinternetflixn--11b4c3ditchyouriparmabozen-sudtirolondrinaplesknsalatrobeneventoeidsvollorenskogloomy-gatewaybozen-suedtirolovableprojectjeldsundivtasvuodnakamai-stagingloppennebplaceditorxn--12c1fe0bradescotaruinternationalovepoparochernihivgubamblebtimnetzjaworznotebook-fips3-fips-us-gov-east-1brandivttasvuotnakamuratajirintlon-2brasiliadboxoslodingenishimerabravendbarcelonagawakuyabukikiraragusabaerobatickets3-fips-us-gov-west-1bresciaogashimadachicappabianiceobridgestonebrindisiciliabroadwaybroke-itvedestrandixn--12cfi8ixb8lovesickarlsoybrokerevistathellebrothermesserlidlplfinancialpusercontentjmaxxxn--12co0c3b4evalleaostargets-itjomeldalucaniabrumunddaluccampobassociatesalon-1brusselsaloonishinomiyashironobryanskiervadsoccerhcloudyclusterbrynebweirbzhitomirumaintenanceclothingdustdatadetectoyouracngovtoystre-slidrettozawacnpyatigorskjakamaiedge-stagingreatercnsapporocntozsdeliverycodebergrayjayleaguesardegnarutoshimatta-varjjatranatalcodespotenzakopanecoffeedbackanagawatsonrendercommunity-prochowicecomockashiharacompanyantaishinomakimobetsulifestylefrakkestadurumisakindlegnicahcesuolohmusashimurayamaizuruhr-uni-bochuminamiechizenisshingucciminamifuranocomparemarkerryhotelsardiniacomputercomsecretrosnubarclays3-me-south-1condoshiibabymilk3conferenceconstructioniyodogawaconsuladobeio-static-accesscamdvrcampaniaconsultantranbyconsultingretakamoriokakudamatsuecontactivetrail-central-1contagematsubaracontractorstabacgiangiangryconvexecute-apictureshinordkappaviacookingrimstadynathomebuiltwithdarklangevagrarchitectestingripeeweeklylotterycooperativano-frankivskjervoyagecoprofesionalchikugodaddyn-o-saureadymadethis-a-anarchistjordalshalsenl-ams-1corsicafederationfabricable-modemoneycosenzamamidorivnecosidnsdojoburgriwataraindroppdalcouchpotatofriesarlcouncilcouponstackitagawacozoracpservernamegataitogodoesntexisteingeekashiwaracqcxn--1lqs71dyndns-at-homedepotrani-andria-barletta-trani-andriacrankyotobetsulubin-dsldyndns-at-workisboringsakershusrcfdyndns-blogsiteleaf-south-1crdyndns-freeboxosarpsborgroks-theatrentin-sud-tirolcreditcardyndns-homednsarufutsunomiyawakasaikaitakokonoecreditunioncremonasharis-a-bulls-fancrewp2cricketnedalcrimeast-kazakhstanangercrispawnextdirectraniandriabarlettatraniandriacrminamiiseharacrotonecrownipfizercrsasayamacruisesaseboknowsitallcryptonomichiharacuisinellamdongnairflowersassaris-a-candidatecuneocuritibackdropalermobarag-cloud-charitydalp1cutegirlfriendyndns-ipgwangjulvikashiwazakizunokuniminamiashigarafedoraprojectransiphdfcbankasserverrankoshigayakagefeirafembetsukubankasukabeautypedreamhosterscrapper-sitefermodalenferraraferraris-a-celticsfanferreroticallynxn--2scrj9cargoboavistanbulsan-sudtiroluhanskarmoyfetsundyndns-remotewdhlx3fgroundhandlingroznyfhvalerfilegear-sg-1filminamiminowafinalfinancefinnoyfirebaseapphilipscrappingrphonefosscryptedyndns-serverdalfirenetgamerscrysecuritytacticscwestus2firenzeaburfirestonefirmdaleilaocairportranslatedyndns-webhareidsbergroks-thisayamanobearalvahkikonaikawachinaganoharamcoachampionshiphoplixn--1qqw23afishingokasellfyresdalfitjarfitnessettsurugashimamurogawafjalerfkasumigaurayasudaflesbergrueflickragerotikagoshimandalflierneflirflogintohmangoldpoint2thisamitsukefloppymntransportefloraclegovcloudappservehttpbincheonflorencefloripadualstackasuyakumoduminamioguni5floristanohatakaharunservehumourfloromskoguidefinimalopolskanittedalfltransurlflutterflowhitesnowflakeflyfncarrdiyfndyndns-wikinkobayashimofusadojin-the-bandairlinemurorangecloudplatformshakotanpachihayaakasakawaharacingrondarfoolfor-ourfor-somedusajserveircasacampinagrandebulsan-suedtirolukowesleyfor-theaterfordebianforexrotheworkpccwhminamisanrikubetsupersaleksvikaszubytemarketingvollforgotdnserveminecraftrapanikkoelnforli-cesena-forlicesenaforlikescandypopensocialforsalesforceforsandasuoloisirservemp3fortalfosneservep2photographysiofotravelersinsurancefoxn--30rr7yfozfr-1fr-par-1fr-par-2franalytics-gatewayfredrikstadyndns-worksauheradyndns-mailfreedesktopazimuthaibinhphuocprapidyndns1freemyiphostyhostinguitarservepicservequakefreesitefreetlservesarcasmilefreightravinhlonganfrenchkisshikirovogradoyfreseniuservicebuskerudynnsaveincloudyndns-office-on-the-webflowtest-iservebloginlinefriuli-v-giuliarafriuli-ve-giuliafriuli-vegiuliafriuli-venezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giuliafriulive-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagiuliafriulivgiuliafrlfrogansevastopolitiendafrognfrolandynservebbsaves-the-whalessandria-trani-barletta-andriatranibarlettaandriafrom-akamaiorigin-stagingujaratmetacentruminamitanefrom-alfrom-arfrom-azureedgecompute-1from-caltanissettainaircraftraeumtgeradealstahaugesunderfrom-cockpitrdynuniversitysvardofrom-ctrentin-sudtirolfrom-dcasertaipeigersundnparsaltdaluroyfrom-decafjsevenassieradzfrom-flatangerfrom-gap-southeast-3from-higashiagatsumagoianiafrom-iafrom-idynv6from-ilfrom-in-vpncashorokanaiefrom-ksewhoswholidayfrom-kyfrom-langsonyatomigrationfrom-mangyshlakamaized-stagingujohanamakinoharafrom-mdynvpnplusavonarviikamisatokonamerikawauefrom-meetrentin-sued-tirolfrom-mihamadanangoguchilloutsystemscloudscalebookinghosteurodirfrom-mnfrom-modellingulenfrom-msexyfrom-mtnfrom-ncasinordeste-idclkarpaczest-a-la-maisondre-landray-dnsaludrayddns-ipartintuitjxn--1ck2e1barclaycards3-globalatinabelementorayomitanobservableusercontentateyamauth-fipstmninomiyakonojosoyrovnoticeableitungsenirasakibxos3-ca-central-180reggio-emilia-romagnaroyolasitebinordlandeus-canvasitebizenakanojogaszkolamericanfamilyds3-ap-south-12hparallelimodxboxeroxjavald-aostaticsxmitakeharaugustow-corp-staticblitzgorzeleccocotteatonamifunebetsuikirkenes3-ap-northeast-2ixn--0trq7p7nninjambylive-oninohekinanporovigonnakasatsunaibigawaukraanghkembuchikumagayagawakkanaibetsubame-central-123websitebuildersvp4from-ndyroyrvikingrongrossetouchijiwadedyn-berlincolnfrom-nefrom-nhlfanfrom-njsheezyfrom-nminamiuonumatsunofrom-nvalled-aostargithubusercontentrentin-suedtirolfrom-nysagamiharafrom-ohdancefrom-okegawafrom-orfrom-palmasfjordenfrom-pratohnoshookuwanakanotoddenfrom-ris-a-chefashionstorebaseljordyndns-picsbssaudafrom-schmidtre-gauldalfrom-sdfrom-tnfrom-txn--32vp30hachinoheavyfrom-utsiracusagemakerfrom-val-daostavalleyfrom-vtrentino-a-adigefrom-wafrom-wiardwebspaceconfigunmarnardalfrom-wvalledaostarnobrzeguovdageaidnunjargausdalfrom-wyfrosinonefrostalowa-wolawafroyal-commissionfruskydivingushikamifuranorth-kazakhstanfujiiderafujikawaguchikonefujiminokamoenairtelebitbucketrzynh-servebeero-stageiseiroutingthecloudfujinomiyadappnodearthainguyenfujiokazakiryuohkurafujisatoshoeshellfujisawafujishiroishidakabiratoridediboxafujitsuruokakamigaharafujiyoshidatsunanjoetsumidaklakasamatsudogadobeioruntimedicinakaiwanairforcentralus-1fukayabeagleboardfukuchiyamadattorelayfukudomigawafukuis-a-conservativefsnoasakakinokiafukumitsubishigakisarazure-apigeefukuokakegawafukuroishikariwakunigamiharuovatlassian-dev-builderfukusakishiwadattoweberlevagangaviikanonjis-a-cpanelfukuyamagatakahashimamakisofukushimaniwamannordre-landfunabashiriuchinadavvenjargamvikatowicefunagatakahatakaishimokawafunahashikamiamakusatsumasendaisenergyeonggiizefundfunkfeuerfunnelshimonitayanagitapphutholdingsmall-websozais-a-cubicle-slaveroykenfuoiskujukuriyamaoris-a-democratrentino-aadigefuosskodjeezfurubirafurudonordreisa-hockeynutwentertainmentrentino-alto-adigefurukawaiishoppingxn--3bst00minamiyamashirokawanabeepsondriobranconagarahkkeravjunusualpersonfusoctrangyeongnamdinhs-heilbronnoysundfussaikisosakitahatakamatsukawafutabayamaguchinomihachimanagementrentino-altoadigefutboldlygoingnowhere-for-more-og-romsdalfuttsurutashinairtrafficmanagerfuturecmshimonosekikawafuturehosting-clusterfuturemailingzfvghakuis-a-doctoruncontainershimotsukehakusandnessjoenhaldenhalfmoonscaleforcehalsaitamatsukuris-a-financialadvisor-aurdalham-radio-ophuyenhamburghammarfeastasiahamurakamigoris-a-fullstackaufentigerhanamigawahanawahandahandcraftedugit-pages-researchedmarketplacehangglidinghangoutrentino-s-tirolhannannestadhannoshiroomghanoiphxn--3ds443ghanyuzenhappoumuginowaniihamatamakawajimap-southeast-4hasamazoncognitoigawahasaminami-alpshimotsumahashbanghasudahasura-appigboatshinichinanhasvikautokeinotionhatenablogspotrentino-stirolhatenadiaryhatinhachiojiyachiyodazaifudaigojomedio-campidano-mediocampidanomediohatogayachtshinjournalistorfjordhatoyamazakitakatakanezawahatsukaichikawamisatohokkaidontexistmein-iservschulegalleryhattfjelldalhayashimamotobusells-for-lesshinjukuleuvenicehazuminobushibuyahabacninhbinhdinhktrentino-sud-tirolhelpgfoggiahelsinkitakyushunantankazohemneshinkamigotoyokawahemsedalhepforgeblockshinshinotsupplyhetemlbfanheyflowienhigashichichibuzzhigashihiroshimanehigashiizumozakitamihokksundhigashikagawahigashikagurasoedahigashikawakitaaikitamotosumy-routerhigashikurumegurownproviderhigashimatsushimarriottrentino-sudtirolhigashimatsuyamakitaakitadaitomanaustdalhigashimurayamamotorcycleshinshirohigashinarusells-for-uzhhorodhigashinehigashiomitamamurausukitanakagusukumodshintokushimahigashiosakasayamanakakogawahigashishirakawamatakaokalmykiahigashisumiyoshikawaminamiaikitashiobarahigashitsunospamproxyhigashiurawa-mazowszexposeducatorprojectrentino-sued-tirolhigashiyamatokoriyamanashijonawatehigashiyodogawahigashiyoshinogaris-a-geekazunotogawahippythonanywherealminanohiraizumisatokaizukaluganskddiamondshintomikasaharahirakatashinagawahiranais-a-goodyearhirarahiratsukagawahirayahikobeatshinyoshitomiokamisunagawahitachiomiyakehitachiotaketakarazukamaishimodatehitradinghjartdalhjelmelandholyhomegoodshiojirishirifujiedahomeipikehomelinuxn--3e0b707ehomesecuritymacaparecidahomesecuritypcateringebungotakadaptableclerc66116-balsfjordeltaiwanumatajimidsundeportebinatsukigatakahamalvik8s3-ap-northeast-3utilities-12charstadaokagakirunocelotenkawadlugolekadena4ufcfanimsiteasypanelblagrigentobishimafeloansncf-ipfstdlibestadultatarantoyonakagyokutoyonezawapartments3-ap-northeast-123webseiteckidsmynascloudfrontierimo-siemenscaledekaascolipicenoboribetsubsc-paywhirlimitedds3-accesspoint-fips3-ap-east-123miwebaccelastx4432-b-datacenterprisesakihokuizumoarekepnord-aurdalipaynow-dns-dynamic-dnsabruzzombieidskogasawarackmazerbaijan-mayenbaidarmeniajureggio-calabriaknoluoktagajoboji234lima-citychyattorneyagawafflecellclstagehirnayorobninsk123kotisivultrobjectselinogradimo-i-ranamizuhobby-siteaches-yogano-ip-ddnsgeekgalaxyzgierzgorakrehamnfshostrowwlkpnftstorage164-balsan-suedtirolillyokozeastus2000123paginawebadorsiteshikagamiishibechambagricoharugbydgoszczecin-addrammenuorogerscbgdyniaktyubinskaunicommuneustarostwodzislawdev-myqnapcloudflarecn-northwest-123sitewebcamauction-acornikonantotalimanowarudakunexus-2038homesenseeringhomeskleppilottottoris-a-greenhomeunixn--3hcrj9catfoodraydnsalvadorhondahonjyoitakasagonohejis-a-guruzshioyaltakkolobrzegersundongthapmircloudnshome-webservercelliguriahornindalhorsells-itrentino-suedtirolhorteneiheijis-a-hard-workershirahamatonbetsupportrentinoa-adigehospitalhotelwithflightshirakomaganehotmailhoyangerhoylandetakasakitaurahrsnillfjordhungyenhurdalhurumajis-a-hunterhyllestadhyogoris-a-knightpointtokashikitchenhypernodessaitokamachippubetsubetsugaruhyugawarahyundaiwafuneis-uberleetrentinoaltoadigeis-very-badis-very-evillasalleirvikharkovallee-d-aosteis-very-goodis-very-niceis-very-sweetpepperugiais-with-thebandoomdnsiskinkyowariasahikawaisk01isk02jellybeanjenv-arubahcavuotnagahamaroygardenflfanjeonnamsosnowiecaxiaskoyabenoopssejny-1jetztrentinos-tiroljevnakerjewelryjlljls-sto1jls-sto2jls-sto365jmpioneerjnjcloud-ver-jpcatholicurus-3joyentrentinostiroljoyokaichibahccavuotnagaivuotnagaokakyotambabybluebitemasekd1jozis-a-llamashikiwakuratejpmorgangwonjpnjprshoujis-a-musiciankoseis-a-painterhostsolutionshiraokamitsuekosheroykoshimizumakis-a-patsfankoshugheshwiiheyahoooshikamagayaitakashimarshallstatebankhplaystation-cloudsitekosugekotohiradomainsurealtypo3serverkotourakouhokumakogenkounosunnydaykouyamatlabcn-north-1kouzushimatrixn--41akozagawakozakis-a-personaltrainerkozowilliamhillkppspdnsigdalkrasnikahokutokyotangopocznore-og-uvdalkrasnodarkredumbrellapykrelliankristiansandcatsiiitesilklabudhabikinokawabajddarqhachirogatakanabeardubaioiraseekatsushikabedzin-brb-hostingkristiansundkrodsheradkrokstadelvaldaostavangerkropyvnytskyis-a-photographerokuappinkfh-muensterkrymisasaguris-a-playershiftrentinoaadigekumamotoyamatsumaebashimogosenkumanowtvalleedaostekumatorinokumejimatsumotofukekumenanyokkaichirurgiens-dentistes-en-francekundenkunisakis-a-republicanonoichinosekigaharakunitachiaraisaijorpelandkunitomigusukukis-a-rockstarachowicekunneppubtlsimple-urlkuokgroupiwatekurgankurobeebyteappleykurogiminamiawajikis-a-socialistockholmestrandkuroisodegaurakuromatsunais-a-soxfankuronkurotakikawasakis-a-studentalkushirogawakustanais-a-teacherkassyncloudkusupabaseminekutchanelkutnokuzumakis-a-techietis-a-liberalkvafjordkvalsundkvamfamplifyappchizip6kvanangenkvinesdalkvinnheradkviteseidatingkvitsoykwpspectrumisawamjondalenmonza-brianzapposirdalmonza-e-della-brianzaptonsbergmonzabrianzaramonzaebrianzamonzaedellabrianzamordoviamorenapolicemoriyamatsushigemoriyoshiminamibosoftwarendalenugmormonstermoroyamatsuuramortgagemoscowinbarrel-of-knowledgekey-stagingjerstadigickaracolognemrstudio-prodoyonagoyauthgearapps-1and1moseushimoichikuzenmosjoenmoskenesiskomakis-a-therapistoiamosslupskmpspbaremetalpha-myqnapcloudaccess3-sa-east-1mosviknx-serversicherungmotegirlymoviemovimientoolslzmtrainingmuikamiokameokameyamatotakadamukodairamunakatanemuosattemupixolinodeusercontentrentinosud-tirolmurmanskomatsushimasudamurotorcraftrentinosudtirolmusashinodesakatakayamatsuzakis-an-accountantshiratakahagiangmuseumisconfusedmusicanthoboleslawiecommerce-shopitsitevaksdalmutsuzawamutualmy-vigormy-wanggoupilemyactivedirectorymyaddrangedalmyamazeplaymyasustor-elvdalmycloudnasushiobaramydattolocalcertrentinosued-tirolmydbservermyddnskingmydissentrentinosuedtirolmydnsmolaquilarvikomforbargainstitutemp-dnswatches3-us-east-2mydobissmarterthanyoumydrobofageorgeorgiamydsmushcdn77-securecipescaracalculatorskenmyeffectrentinsud-tirolmyfastly-edgemyfirewalledreplittlestargardmyforumishimatsusakahoginozawaonsennanmokurennebuyshousesimplesitemyfritzmyftpaccessojampanasonichernovtsydneymyhome-servermyjinomykolaivencloud66mymailermymediapchiryukyuragifuchungbukharanzanishinoomotegoismailillehammerfeste-ipartsamegawamynetnamegawamyokohamamatsudamypepizzamypetsokananiimilanoticiassurfastly-terrariuminamiizukaminoyamaxunison-servicesaxomyphotoshibalena-devicesokndalmypiemontemypsxn--42c2d9amyrdbxn--45br5cylmysecuritycamerakermyshopblocksolardalmyshopifymyspreadshopselectrentinsudtirolmytabitordermythic-beastsolundbeckommunalforbundmytis-a-bloggermytuleap-partnersomamyvnchitachinakagawassamukawatarittogitsuldalutskartuzymywirebungoonoplurinacionalpmnpodhalepodlasiellakdnepropetrovskanlandpodzonepohlpoivronpokerpokrovskomonotteroypolkowicepoltavalle-aostavernpolyspacepomorzeszowindowsserveftplatter-appkommuneponpesaro-urbino-pesarourbinopesaromasvuotnaritakurashikis-an-actresshishikuis-a-libertarianpordenonepornporsangerporsangugeporsgrunnanpoznanpraxihuanprdprereleaseoullensakerprgmrprimetelprincipenzaprivatelinkyard-cloudletsomnarvikomorotsukaminokawanishiaizubangeprivatizehealthinsuranceprogressivegarsheiyufueliv-dnsoowinepromoliserniapropertysnesopotrentinsued-tirolprotectionprotonetrentinsuedtirolprudentialpruszkowinnersor-odalprvcyprzeworskogpunyukis-an-anarchistoloseyouripinokofuefukihabororoshisogndalpupulawypussycatanzarowiosor-varangerpvhackerpvtrentoyosatoyookaneyamazoepwchitosetogliattipsamnangerpzqotoyohashimotoyakokamimineqponiatowadaqslgbtrevisognequalifioapplatterpl-wawsappspacehostedpicardquangngais-an-artistordalquangninhthuanquangtritonoshonais-an-engineeringquickconnectroandindependent-inquest-a-la-masionquicksytesorfoldquipelementsorocabalestrandabergamochizukijobservablehqldquizzesorreisahayakawakamiichinomiyagithubpreviewskrakowitdkontoguraswinoujscienceswissphinxn--45brj9chonanbunkyonanaoshimaringatlanbibaiduckdnsamparachutinglugsjcbnpparibashkiriasyno-dspjelkavikongsbergsynology-diskstationsynology-dspockongsvingertushungrytuvalle-daostaobaolbia-tempio-olbiatempioolbialowiezaganquangnamasteigenoamishirasatochigiftsrhtrogstadtuxfamilytuyenquangbinhthuantwmailvegasrlvelvetromsohuissier-justiceventurestaurantrustkanieruchomoscientistoripresspydebergvestfoldvestnesrvaomoriguchiharaffleentrycloudflare-ipfsortlandvestre-slidrecreationvestre-totennishiawakuravestvagoyvevelstadvfstreakusercontentroitskoninfernovecorealtorvibo-valentiavibovalentiavideovinhphuchoshichikashukudoyamakeupartysfjordrivelandrobakamaihd-stagingmbhartinnishinoshimattelemarkhangelskaruizawavinnicapitalonevinnytsiavipsinaapplockervirginankokubunjis-byklecznagatorokunohealth-carereformincommbankhakassiavirtual-uservecounterstrikevirtualservervirtualuserveexchangevisakuholeckobierzyceviterboliviajessheimperiavivianvivoryvixn--45q11chowdervlaanderennesoyvladikavkazimierz-dolnyvladimirvlogisticstreamlitapplcube-serversusakis-an-actorvmitourismartlabelingvolvologdanskontumintshowavolyngdalvoorlopervossevangenvotevotingvotoyotap-southeast-5vps-hostreaklinkstrippervusercontentrvaporcloudwiwatsukiyonotairesindevicenzaokinawashirosatochiokinoshimagazinewixsitewixstudio-fipstrynwjgorawkzwloclawekonyvelolipopmcdirwmcloudwmelhustudynamisches-dnsorumisugitomobegetmyipifony-2wmflabstuff-4-salewoodsidell-ogliastrapiapplinzis-certifiedworldworse-thanhphohochiminhadanorthflankatsuyamassa-carrara-massacarraramassabunzenwowithgoogleapiszwpdevcloudwpenginepoweredwphostedmailwpmucdn77-sslingwpmudevelopmentrysiljanewaywpsquaredwritesthisblogoiplumbingotpantheonsitewroclawsglobalacceleratorahimeshimakanegasakievennodebalancernwtcp4wtfastlylbarefootballooningjerdrumemergencyonabarumemorialivornobservereitatsunofficialolitapunkapsienamsskoganeindependent-panelombardiademfakefurniturealestatefarmerseinemrnotebooks-prodeomniwebthings3-object-lambdauthgear-stagingivestbyglandroverhallair-traffic-controllagdenesnaaseinet-freaks3-deprecatedgcagliarissadistgstagempresashibetsukuiitatebayashikaoirmembers3-eu-central-1kapp-ionosegawafaicloudineat-urlive-websitehimejibmdevinapps3-ap-southeast-1337wuozuerichardlillesandefjordwwwithyoutuberspacewzmiuwajimaxn--4it797koobindalxn--4pvxs4allxn--54b7fta0cchromediatechnologyeongbukarumaifmemsetkmaxxn--1ctwolominamatarpitksatmalluxenishiokoppegardrrxn--55qw42gxn--55qx5dxn--5dbhl8dxn--5js045dxn--5rtp49chungnamdalseidfjordtvsangotsukitahiroshimarcherkasykkylvenneslaskerrypropertiesanjotelulublindesnesannanishitosashimizunaminamidaitolgaularavellinodeobjectsannoheliohostrodawaraxn--5rtq34kooris-a-nascarfanxn--5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264churchaselfipirangallupsunappgafanishiwakinuyamashinazawaxn--80aaa0cvacationstufftoread-booksnesoundcastreak-linkomvuxn--3pxu8khmelnitskiyamassivegridxn--80adxhksurnadalxn--80ao21axn--80aqecdr1axn--80asehdbarrell-of-knowledgesuite-stagingjesdalombardyn-vpndns3-us-gov-east-1xn--80aswgxn--80audnedalnxn--8dbq2axn--8ltr62kopervikhmelnytskyivalleeaostexn--8pvr4uxn--8y0a063axn--90a1affinitylotterybnikeisencoreapiacenzachpomorskiengiangxn--90a3academiamibubbleappspotagerxn--90aeroportsinfolkebibleasingrok-freeddnsfreebox-osascoli-picenogatachikawakayamadridvagsoyerxn--90aishobaraoxn--90amckinseyxn--90azhytomyradweblikes-piedmontuckerxn--9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aroport-byameloyxn--asky-iraxn--aurskog-hland-jnbarsycenterprisecloudbeesusercontentattoolforgerockyonagunicloudiscordsays3-us-gov-west-1xn--avery-yuasakuragawaxn--b-5gaxn--b4w605ferdxn--balsan-sdtirol-nsbarsyonlinequipmentaveusercontentawktoyonomurauthordalandroidienbienishiazaiiyamanouchikujolsterehabmereisenishigotembaixadavvesiidaknongivingjemnes3-eu-north-1xn--bck1b9a5dre4ciprianiigatairaumalatvuopmicrosoftbankasaokamikoaniikappudopaaskvollocaltonetlifyinvestmentsanokashibatakatsukiyosembokutamakiyosunndaluxuryxn--bdddj-mrabdxn--bearalvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn--bidr-5nachikatsuuraxn--bievt-0qa2hosted-by-previderxn--bjarky-fyanagawaxn--bjddar-ptarumizusawaxn--blt-elabkhaziamallamaceiobbcircleaningmodelscapetownnews-stagingmxn--1lqs03nissandoyxn--bmlo-grafana-developerauniterois-coolblogdnshisuifuettertdasnetzxn--bod-2naturalxn--bozen-sdtirol-2obihirosakikamijimayfirstorjdevcloudjiffyxn--brnny-wuacademy-firewall-gatewayxn--brnnysund-m8accident-investigation-aptibleadpagespeedmobilizeropslattumbriaxn--brum-voagatulaspeziaxn--btsfjord-9zaxn--bulsan-sdtirol-nsbasicserver-on-webpaaskimitsubatamicrolightingjovikaragandautoscanaryggeemrappui-productions3-eu-west-1xn--c1avgxn--c2br7gxn--c3s14mitoyoakexn--cck2b3basilicataniavocats3-eu-west-2xn--cckwcxetdxn--cesena-forl-mcbremangerxn--cesenaforl-i8axn--cg4bkis-foundationxn--ciqpnxn--clchc0ea0b2g2a9gcdn77-storagencymrulezajskiptveterinaireadthedocs-hostedogawarabikomaezakishimabarakawagoexn--czr694basketballfinanzlgkpmglassessments3-us-west-1xn--czrs0t0xn--czru2dxn--d1acj3batsfjordiscordsezpisdnipropetrovskygearapparasiteu-2xn--d1alfastvps-serverisignxn--d1atunesquaresinstagingxn--d5qv7z876ciscofreakadns-cloudflareglobalashovhachijoinvilleirfjorduponthewifidelitypeformesswithdnsantamariakexn--davvenjrga-y4axn--djrs72d6uyxn--djty4koryokamikawanehonbetsuwanouchikuhokuryugasakis-a-nursellsyourhomeftpinbrowsersafetymarketshiraois-a-landscaperspectakasugais-a-lawyerxn--dnna-graingerxn--drbak-wuaxn--dyry-iraxn--e1a4cistrondheimeteorappassenger-associationissayokoshibahikariyalibabacloudcsantoandrecifedexperts-comptablesanukinzais-a-bruinsfanissedalvivanovoldaxn--eckvdtc9dxn--efvn9surveysowaxn--efvy88hadselbuzentsujiiexn--ehqz56nxn--elqq16haebaruericssongdalenviknakatombetsumitakagildeskaliszxn--eveni-0qa01gaxn--f6qx53axn--fct429kosaigawaxn--fhbeiarnxn--finny-yuaxn--fiq228c5hsbcitadelhichisochimkentmpatriaxn--fiq64bauhauspostman-echofunatoriginstances3-us-west-2xn--fiqs8susonoxn--fiqz9suzakarpattiaaxn--fjord-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-cesena-fcbentleyoriikarasjohkamikitayamatsurindependent-review-credentialless-staticblitzw-staticblitzxn--forlcesena-c8axn--fpcrj9c3dxn--frde-grajewolterskluwerxn--frna-woaxn--frya-hraxn--fzc2c9e2citicaravanylvenetogakushimotoganexn--fzys8d69uvgmailxn--g2xx48civilaviationionjukujitawaravennaharimalborkdalxn--gckr3f0fauskedsmokorsetagayaseralingenovaraxn--gecrj9clancasterxn--ggaviika-8ya47hagakhanhhoabinhduongxn--gildeskl-g0axn--givuotna-8yanaizuxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050is-gonexn--gmqw5axn--gnstigbestellen-zvbentrendhostingleezeu-3xn--gnstigliefern-wobiraxn--h-2failxn--h1ahnxn--h1alizxn--h2breg3evenesuzukanazawaxn--h2brj9c8cldmail-boxfuseljeducationporterxn--h3cuzk1dielddanuorris-into-animein-vigorlicexn--hbmer-xqaxn--hcesuolo-7ya35beppublic-inquiryoshiokanumazuryurihonjouwwebhoptokigawavoues3-eu-west-3xn--hebda8beskidyn-ip24xn--hery-iraxn--hgebostad-g3axn--hkkinen-5waxn--hmmrfeasta-s4accident-prevention-fleeklogesquare7xn--hnefoss-q1axn--hobl-iraxn--holtlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1b6b1a6a2exn--imr513nxn--indery-fyandexcloudxn--io0a7is-into-carshitaramaxn--j1adpdnsupdaterxn--j1aefbsbxn--2m4a15exn--j1ael8bestbuyshoparenagareyamagentositenrikuzentakataharaholtalengerdalwaysdatabaseballangenkainanaejrietiengiangheannakadomarineen-rootaribeiraogakicks-assnasaarlandiscountry-snowplowiczeladzxn--j1amhagebostadxn--j6w193gxn--jlq480n2rgxn--jlster-byaotsurgeryxn--jrpeland-54axn--jvr189mittwaldserverxn--k7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--4dbgdty6choyodobashichinohealthcareersamsclubartowest1-usamsungminakamichikaiseiyoichipsandvikcoromantovalle-d-aostakinouexn--koluokta-7ya57haibarakitakamiizumisanofidonnakaniikawatanaguraxn--kprw13dxn--kpry57dxn--kput3is-into-cartoonshizukuishimojis-a-linux-useranishiaritabashikshacknetlibp2pimientaketomisatourshiranukamitondabayashiogamagoriziaxn--krager-gyasakaiminatoyotomiyazakis-into-gamessinaklodzkochikushinonsenasakuchinotsuchiurakawaxn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--krjohka-hwab49jdfirmalselveruminisitexn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-fyasugitlabbvieeexn--kvnangen-k0axn--l-1fairwindsuzukis-an-entertainerxn--l1accentureklamborghinikolaeventsvalbardunloppadoval-d-aosta-valleyxn--laheadju-7yasuokannamimatakatoris-leetrentinoalto-adigexn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika-52bhzc01xn--lesund-huaxn--lgbbat1ad8jejuxn--lgrd-poacctfcloudflareanycastcgroupowiat-band-campaignoredstonedre-eikerxn--lhppi-xqaxn--linds-pramericanexpresservegame-serverxn--loabt-0qaxn--lrdal-sraxn--lrenskog-54axn--lt-liaclerkstagentsaobernardovre-eikerxn--lten-granexn--lury-iraxn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2ddesvchoseikarugalsacexn--mgb9awbfbx-oschokokekscholarshipschoolbusinessebytomaridagawarmiastapleschoolsztynsetranoyxn--mgba3a3ejtunkonsulatinowruzhgorodxn--mgba3a4f16axn--mgba3a4fra1-dellogliastraderxn--mgba7c0bbn0axn--mgbaam7a8haiduongxn--mgbab2bdxn--mgbah1a3hjkrdxn--mgbai9a5eva00bialystokkeymachineu-4xn--mgbai9azgqp6jelasticbeanstalkhersonlanxesshizuokamogawaxn--mgbayh7gparaglidingxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgbcpq6gpa1axn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn--mgbi4ecexperimentsveioxn--mgbpl2fhskypecoris-localhostcertificationxn--mgbqly7c0a67fbclever-clouderavpagexn--mgbqly7cvafricapooguyxn--mgbt3dhdxn--mgbtf8fldrvareservdxn--mgbtx2bielawalbrzycharternopilawalesundiscourses3-website-ap-northeast-1xn--mgbx4cd0abogadobeaemcloud-ip-dynamica-west-1xn--mix082fbxoschulplattforminamimakis-a-catererxn--mix891fedjeepharmacienschulserverxn--mjndalen-64axn--mk0axindependent-inquiryxn--mk1bu44cleverappsaogoncanva-appsaotomelbournexn--mkru45is-lostrolekamakurazakiwielunnerxn--mlatvuopmi-s4axn--mli-tlavagiskexn--mlselv-iuaxn--moreke-juaxn--mori-qsakurais-not-axn--mosjen-eyatsukanoyaizuwakamatsubushikusakadogawaxn--mot-tlavangenxn--mre-og-romsdal-qqbuservebolturindalxn--msy-ula0haiphongolffanshimosuwalkis-a-designerxn--mtta-vrjjat-k7aflakstadotsurugimbiella-speziaxarnetbankanzakiyosatokorozawaustevollpagest-mon-blogueurovision-ranchernigovernmentdllivingitpagemprendeatnuh-ohtawaramotoineppueblockbusterniizaustrheimdbambinagisobetsucks3-ap-southeast-2xn--muost-0qaxn--mxtq1miuraxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--4dbrk0cexn--nit225kosakaerodromegalloabatobamaceratabusebastopoleangaviikafjordxn--nmesjevuemie-tcbalsan-sudtirolkuszczytnord-fron-riopretodayxn--nnx388axn--nodeloittexn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery-byaeservehalflifeinsurancexn--nvuotna-hwaxn--nyqy26axn--o1achernivtsicilyxn--o3cw4hair-surveillancexn--o3cyx2axn--od0algardxn--od0aq3bielskoczoweddinglitcheap-south-2xn--ogbpf8flekkefjordxn--oppegrd-ixaxn--ostery-fyatsushiroxn--osyro-wuaxn--otu796dxn--p1acfolksvelvikonskowolayangroupippugliaxn--p1ais-not-certifiedxn--pgbs0dhakatanortonkotsumomodenakatsugawaxn--porsgu-sta26fedorainfracloudfunctionschwarzgwesteuropencraftransfer-webappharmacyou2-localplayerxn--pssu33lxn--pssy2uxn--q7ce6axn--q9jyb4clickrisinglesjaguarvodkagaminombrendlyngenebakkeshibukawakeliwebhostingouv0xn--qcka1pmcprequalifymeinforumzxn--qqqt11miyazure-mobilevangerxn--qxa6axn--qxamiyotamanoxn--rady-iraxn--rdal-poaxn--rde-ulazioxn--rdy-0nabaris-savedxn--rennesy-v1axn--rhkkervju-01afedorapeopleikangerxn--rholt-mragowoltlab-democraciaxn--rhqv96gxn--rht27zxn--rht3dxn--rht61exn--risa-5naturbruksgymnxn--risr-iraxn--rland-uuaxn--rlingen-mxaxn--rmskog-byawaraxn--rny31hakodatexn--rovu88bieszczadygeyachimataijinderoyusuharazurefdietateshinanomachintaifun-dnsaliases121xn--rros-granvindafjordxn--rskog-uuaxn--rst-0navigationxn--rsta-framercanvasvn-repospeedpartnerxn--rvc1e0am3exn--ryken-vuaxn--ryrvik-byawatahamaxn--s-1faitheshopwarezzoxn--s9brj9clientoyotsukaidownloadurbanamexnetfylkesbiblackbaudcdn-edgestackhero-networkinggroupperxn--sandnessjen-ogbizxn--sandy-yuaxn--sdtirol-n2axn--seral-lraxn--ses554gxn--sgne-graphicswidnicaobangxn--skierv-utazurecontainerimamateramombetsupplieswidnikitagatamayukuhashimokitayamaxn--skjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5navoizumizakis-slickharkivallee-aosteroyxn--slt-elabievathletajimabaria-vungtaudiopsys3-website-ap-southeast-1xn--smla-hraxn--smna-gratangenxn--snase-nraxn--sndre-land-0cbifukagawalmartaxiijimarugame-hostrowieconomiasagaeroclubmedecin-berlindasdaeguambulancechireadmyblogsytecnologiazurestaticappspaceusercontentproxy9guacuiababia-goraclecloudappschaefflereggiocalabriaurland-4-salernooreggioemiliaromagnarusawaurskog-holandinggff5xn--snes-poaxn--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-ggbigv-infolldalomoldegreeu-central-2xn--srfold-byaxn--srreisa-q1axn--srum-gratis-a-bookkeepermashikexn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-sqbiharvanedgeappengineu-south-1xn--stre-toten-zcbihoronobeokayamagasakikuchikuseihicampinashikiminohostfoldiscoverbaniazurewebsitests3-external-1xn--t60b56axn--tckwebview-assetswiebodzindependent-commissionxn--tiq49xqyjelenia-goraxn--tjme-hraxn--tn0agrocerydxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tirol-rzbikedaejeonbuk0emmafann-arborlandd-dnsfor-better-thanhhoarairkitapps-audiblebesbyencowayokosukanraetnaamesjevuemielnogiehtavuoatnabudejjuniper2-ddnss3-123minsidaarborteamsterdamnserverseating-organicbcg123homepagexl-o-g-i-navyokote123hjemmesidealerdalaheadjuegoshikibichuo0o0g0xn--trentin-sdtirol-7vbiomutazas3-website-ap-southeast-2xn--trentino-sd-tirol-c3birkenesoddtangentapps3-website-eu-west-1xn--trentino-sdtirol-szbittermezproxyusuitatamotors3-website-sa-east-1xn--trentinosd-tirol-rzbjarkoyuullensvanguardisharparisor-fronishiharaxn--trentinosdtirol-7vbjerkreimmobilieniwaizumiotsukumiyamazonaws-cloud9xn--trentinsd-tirol-6vbjugnieznorddalomzaporizhzhiaxn--trentinsdtirol-nsblackfridaynightayninhaccalvinklein-butterepairbusanagochigasakindigenakayamarumorimachidaxn--trgstad-r1axn--trna-woaxn--troms-zuaxn--tysvr-vraxn--uc0atvarggatromsakegawaxn--uc0ay4axn--uist22hakonexn--uisz3gxn--unjrga-rtashkenturystykanmakiyokawaraxn--unup4yxn--uuwu58axn--vads-jraxn--valle-aoste-ebbtuscanyxn--valle-d-aoste-ehboehringerikerxn--valleaoste-e7axn--valledaoste-ebbvaapstempurlxn--vard-jraxn--vegrshei-c0axn--vermgensberater-ctb-hostingxn--vermgensberatung-pwbloombergentingliwiceu-south-2xn--vestvgy-ixa6oxn--vg-yiablushangrilaakesvuemieleccevervaultgoryuzawaxn--vgan-qoaxn--vgsy-qoa0j0xn--vgu402clinicarbonia-iglesias-carboniaiglesiascarboniaxn--vhquvaroyxn--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bmoattachments3-website-us-east-1xn--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wgbh1cliniquenoharaxn--wgbl6axn--xhq521bms3-website-us-gov-west-1xn--xkc2al3hye2axn--xkc2dl3a5ee0hakubaclieu-1xn--y9a3aquarelleborkangerxn--yer-znavuotnarashinoharaxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn--4gbriminiserverxn--ystre-slidre-ujbmwcloudnonproddaemongolianishiizunazukindustriaxn--zbx025dxn--zf0avxn--4it168dxn--zfr164bnrweatherchannelsdvrdns3-website-us-west-1xnbayernxz
    \ No newline at end of file
    
  • vendor/golang.org/x/net/publicsuffix/list.go+210 0 added
    @@ -0,0 +1,210 @@
    +// Copyright 2012 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +//go:generate go run gen.go
    +
    +// Package publicsuffix provides a public suffix list based on data from
    +// https://publicsuffix.org/
    +//
    +// A public suffix is one under which Internet users can directly register
    +// names. It is related to, but different from, a TLD (top level domain).
    +//
    +// "com" is a TLD (top level domain). Top level means it has no dots.
    +//
    +// "com" is also a public suffix. Amazon and Google have registered different
    +// siblings under that domain: "amazon.com" and "google.com".
    +//
    +// "au" is another TLD, again because it has no dots. But it's not "amazon.au".
    +// Instead, it's "amazon.com.au".
    +//
    +// "com.au" isn't an actual TLD, because it's not at the top level (it has
    +// dots). But it is an eTLD (effective TLD), because that's the branching point
    +// for domain name registrars.
    +//
    +// Another name for "an eTLD" is "a public suffix". Often, what's more of
    +// interest is the eTLD+1, or one more label than the public suffix. For
    +// example, browsers partition read/write access to HTTP cookies according to
    +// the eTLD+1. Web pages served from "amazon.com.au" can't read cookies from
    +// "google.com.au", but web pages served from "maps.google.com" can share
    +// cookies from "www.google.com", so you don't have to sign into Google Maps
    +// separately from signing into Google Web Search. Note that all four of those
    +// domains have 3 labels and 2 dots. The first two domains are each an eTLD+1,
    +// the last two are not (but share the same eTLD+1: "google.com").
    +//
    +// All of these domains have the same eTLD+1:
    +//   - "www.books.amazon.co.uk"
    +//   - "books.amazon.co.uk"
    +//   - "amazon.co.uk"
    +//
    +// Specifically, the eTLD+1 is "amazon.co.uk", because the eTLD is "co.uk".
    +//
    +// There is no closed form algorithm to calculate the eTLD of a domain.
    +// Instead, the calculation is data driven. This package provides a
    +// pre-compiled snapshot of Mozilla's PSL (Public Suffix List) data at
    +// https://publicsuffix.org/
    +package publicsuffix // import "golang.org/x/net/publicsuffix"
    +
    +// TODO: specify case sensitivity and leading/trailing dot behavior for
    +// func PublicSuffix and func EffectiveTLDPlusOne.
    +
    +import (
    +	"fmt"
    +	"net/http/cookiejar"
    +	"net/netip"
    +	"strings"
    +)
    +
    +// List implements the cookiejar.PublicSuffixList interface by calling the
    +// PublicSuffix function.
    +var List cookiejar.PublicSuffixList = list{}
    +
    +type list struct{}
    +
    +func (list) PublicSuffix(domain string) string {
    +	ps, _ := PublicSuffix(domain)
    +	return ps
    +}
    +
    +func (list) String() string {
    +	return version
    +}
    +
    +// PublicSuffix returns the public suffix of the domain using a copy of the
    +// publicsuffix.org database compiled into the library.
    +//
    +// icann is whether the public suffix is managed by the Internet Corporation
    +// for Assigned Names and Numbers. If not, the public suffix is either a
    +// privately managed domain (and in practice, not a top level domain) or an
    +// unmanaged top level domain (and not explicitly mentioned in the
    +// publicsuffix.org list). For example, "foo.org" and "foo.co.uk" are ICANN
    +// domains, "foo.dyndns.org" is a private domain and
    +// "cromulent" is an unmanaged top level domain.
    +//
    +// Use cases for distinguishing ICANN domains like "foo.com" from private
    +// domains like "foo.appspot.com" can be found at
    +// https://wiki.mozilla.org/Public_Suffix_List/Use_Cases
    +func PublicSuffix(domain string) (publicSuffix string, icann bool) {
    +	if _, err := netip.ParseAddr(domain); err == nil {
    +		return domain, false
    +	}
    +
    +	lo, hi := uint32(0), uint32(numTLD)
    +	s, suffix, icannNode, wildcard := domain, len(domain), false, false
    +loop:
    +	for {
    +		dot := strings.LastIndexByte(s, '.')
    +		if wildcard {
    +			icann = icannNode
    +			suffix = 1 + dot
    +		}
    +		if lo == hi {
    +			break
    +		}
    +		f := find(s[1+dot:], lo, hi)
    +		if f == notFound {
    +			break
    +		}
    +
    +		u := uint32(nodes.get(f) >> (nodesBitsTextOffset + nodesBitsTextLength))
    +		icannNode = u&(1<<nodesBitsICANN-1) != 0
    +		u >>= nodesBitsICANN
    +		u = children.get(u & (1<<nodesBitsChildren - 1))
    +		lo = u & (1<<childrenBitsLo - 1)
    +		u >>= childrenBitsLo
    +		hi = u & (1<<childrenBitsHi - 1)
    +		u >>= childrenBitsHi
    +		switch u & (1<<childrenBitsNodeType - 1) {
    +		case nodeTypeNormal:
    +			suffix = 1 + dot
    +		case nodeTypeException:
    +			suffix = 1 + len(s)
    +			break loop
    +		}
    +		u >>= childrenBitsNodeType
    +		wildcard = u&(1<<childrenBitsWildcard-1) != 0
    +		if !wildcard {
    +			icann = icannNode
    +		}
    +
    +		if dot == -1 {
    +			break
    +		}
    +		s = s[:dot]
    +	}
    +	if suffix == len(domain) {
    +		// If no rules match, the prevailing rule is "*".
    +		return domain[1+strings.LastIndexByte(domain, '.'):], icann
    +	}
    +	return domain[suffix:], icann
    +}
    +
    +const notFound uint32 = 1<<32 - 1
    +
    +// find returns the index of the node in the range [lo, hi) whose label equals
    +// label, or notFound if there is no such node. The range is assumed to be in
    +// strictly increasing node label order.
    +func find(label string, lo, hi uint32) uint32 {
    +	for lo < hi {
    +		mid := lo + (hi-lo)/2
    +		s := nodeLabel(mid)
    +		if s < label {
    +			lo = mid + 1
    +		} else if s == label {
    +			return mid
    +		} else {
    +			hi = mid
    +		}
    +	}
    +	return notFound
    +}
    +
    +// nodeLabel returns the label for the i'th node.
    +func nodeLabel(i uint32) string {
    +	x := nodes.get(i)
    +	length := x & (1<<nodesBitsTextLength - 1)
    +	x >>= nodesBitsTextLength
    +	offset := x & (1<<nodesBitsTextOffset - 1)
    +	return text[offset : offset+length]
    +}
    +
    +// EffectiveTLDPlusOne returns the effective top level domain plus one more
    +// label. For example, the eTLD+1 for "foo.bar.golang.org" is "golang.org".
    +func EffectiveTLDPlusOne(domain string) (string, error) {
    +	if strings.HasPrefix(domain, ".") || strings.HasSuffix(domain, ".") || strings.Contains(domain, "..") {
    +		return "", fmt.Errorf("publicsuffix: empty label in domain %q", domain)
    +	}
    +
    +	suffix, _ := PublicSuffix(domain)
    +	if len(domain) <= len(suffix) {
    +		return "", fmt.Errorf("publicsuffix: cannot derive eTLD+1 for domain %q", domain)
    +	}
    +	i := len(domain) - len(suffix) - 1
    +	if domain[i] != '.' {
    +		return "", fmt.Errorf("publicsuffix: invalid public suffix %q for domain %q", suffix, domain)
    +	}
    +	return domain[1+strings.LastIndexByte(domain[:i], '.'):], nil
    +}
    +
    +type uint32String string
    +
    +func (u uint32String) get(i uint32) uint32 {
    +	off := i * 4
    +	u = u[off:] // help the compiler reduce bounds checks
    +	return uint32(u[3]) |
    +		uint32(u[2])<<8 |
    +		uint32(u[1])<<16 |
    +		uint32(u[0])<<24
    +}
    +
    +type uint40String string
    +
    +func (u uint40String) get(i uint32) uint64 {
    +	off := uint64(i * (nodesBits / 8))
    +	u = u[off:] // help the compiler reduce bounds checks
    +	return uint64(u[4]) |
    +		uint64(u[3])<<8 |
    +		uint64(u[2])<<16 |
    +		uint64(u[1])<<24 |
    +		uint64(u[0])<<32
    +}
    
  • vendor/golang.org/x/net/publicsuffix/table.go+70 0 added
    @@ -0,0 +1,70 @@
    +// generated by go run gen.go; DO NOT EDIT
    +
    +package publicsuffix
    +
    +import _ "embed"
    +
    +const version = "publicsuffix.org's public_suffix_list.dat, git revision 2c960dac3d39ba521eb5db9da192968f5be0aded (2025-03-18T07:22:13Z)"
    +
    +const (
    +	nodesBits           = 40
    +	nodesBitsChildren   = 10
    +	nodesBitsICANN      = 1
    +	nodesBitsTextOffset = 16
    +	nodesBitsTextLength = 6
    +
    +	childrenBitsWildcard = 1
    +	childrenBitsNodeType = 2
    +	childrenBitsHi       = 14
    +	childrenBitsLo       = 14
    +)
    +
    +const (
    +	nodeTypeNormal     = 0
    +	nodeTypeException  = 1
    +	nodeTypeParentOnly = 2
    +)
    +
    +// numTLD is the number of top level domains.
    +const numTLD = 1454
    +
    +// text is the combined text of all labels.
    +//
    +//go:embed data/text
    +var text string
    +
    +// nodes is the list of nodes. Each node is represented as a 40-bit integer,
    +// which encodes the node's children, wildcard bit and node type (as an index
    +// into the children array), ICANN bit and text.
    +//
    +// The layout within the node, from MSB to LSB, is:
    +//
    +//	[ 7 bits] unused
    +//	[10 bits] children index
    +//	[ 1 bits] ICANN bit
    +//	[16 bits] text index
    +//	[ 6 bits] text length
    +//
    +//go:embed data/nodes
    +var nodes uint40String
    +
    +// children is the list of nodes' children, the parent's wildcard bit and the
    +// parent's node type. If a node has no children then their children index
    +// will be in the range [0, 6), depending on the wildcard bit and node type.
    +//
    +// The layout within the uint32, from MSB to LSB, is:
    +//
    +//	[ 1 bits] unused
    +//	[ 1 bits] wildcard bit
    +//	[ 2 bits] node type
    +//	[14 bits] high nodes index (exclusive) of children
    +//	[14 bits] low nodes index (inclusive) of children
    +//
    +//go:embed data/children
    +var children uint32String
    +
    +// max children 870 (capacity 1023)
    +// max text offset 31785 (capacity 65535)
    +// max text length 31 (capacity 63)
    +// max hi 10100 (capacity 16383)
    +// max lo 10095 (capacity 16383)
    
  • vendor/modules.txt+1 0 modified
    @@ -680,6 +680,7 @@ golang.org/x/net/idna
     golang.org/x/net/internal/httpcommon
     golang.org/x/net/internal/httpsfv
     golang.org/x/net/internal/timeseries
    +golang.org/x/net/publicsuffix
     golang.org/x/net/trace
     # golang.org/x/oauth2 v0.35.0
     ## explicit; go 1.24.0
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

4

News mentions

39