Al het onderzoek

Hoe Certificate Transparency-logs interne subdomeinen lekken

65.5% van 702 onderzochte topdomeinen lekt minstens één intern ogende hostname naar Certificate Transparency: 38.9% logt een dev.-subdomein, 12.8% logt een vpn.-subdomein.

Lekt Certificate Transparency interne hostnames? Ja, routinematig. We hebben de openbare CT-logs voor 702 topdomeinen via crt.sh geanalyseerd, dezelfde gratis zoekopdracht die iedereen kan uitvoeren, en ontdekten dat 65.5% minstens één intern ogende hostname heeft gelogd: a dev., staging., vpn., admin., jira., of vault.-achtige naam die vrijwel zeker bedoeld was voor medewerkers, niet voor het openbare internet. Er is geen enkele host gescand, geresolved of benaderd om dit cijfer te verkrijgen. CT is een openbaar, append-only log van elk certificaat dat een publieke CA ooit heeft uitgegeven, en een naam hoeft slechts één publiek vertrouwd certificaat te ontvangen om een permanent, doorzoekbaar gegeven te worden. Dit is de eerste stap van een aanvaller voordat er ook maar gescand wordt, en de meeste organisaties geven hun interne naamgevingsconventie gratis weg.

De ongezouten versie Als een naam ooit een certificaat heeft gekregen van een publieke CA, staat deze voor altijd in Certificate Transparency, ongeacht of de server erachter vandaag de dag bereikbaar is. Het uitlezen van dat log is geen hacken. Het is het raadplegen van openbare registers, en het is meestal het eerste wat een bekwame aanvaller doet.

Waarom een openbaar log privé ogende namen lekt

Certificate Transparency bestaat met een goede reden: het voorkomt dat een CA stilletjes een onterecht certificaat uitgeeft voor een domein waar het niet voor bedoeld is, omdat elk uitgegeven certificaat zichtbaar wordt voor de domeineigenaar en het publiek. Chrome en andere browsers vereisen sinds 2018 CT-logging van publiek vertrouwde CA's onder RFC 6962. Dat is een echte beveiligingswinst voor het ecosysteem. Het neveneffect is dat CT ook de hostname zelf logt, en de hostname is vaak het meest onthullende deel van het record.

Interne systemen krijgen publieke certificaten om een alledaagse, banale reden: niemand wil een browserwaarschuwing wanneer medewerkers het VPN-portaal of de interne Jira-omgeving openen, zelfs als DNS voor die naam alleen resolvet op het bedrijfsnetwerk of via een VPN-tunnel. Dus krijgt de naam een echt certificaat van Let's Encrypt, DigiCert of een andere publieke CA, net zoals een publiek toegankelijke site dat zou krijgen. Het certificaat doet stilletjes zijn werk. Het neveneffect is dat vpn.example.com of staging-admin.example.com nu permanent leesbaar is voor iedereen die CT raadpleegt voor example.com, via een gratis tool zoals crt.sh, zonder enige interactie met de eigen infrastructuur van example.com.

De data: wat 702 topdomeinen loggen

We hebben crt.sh geraadpleegd voor een steekproef uit de Tranco top-sites-lijst (lijst 94Y82), domein voor domein met caching en backoff om de dienst niet te overbelasten, en classificeerden het eerste DNS-label van elke gelogde naam op basis van negen categorieën van conventionele interne naamgeving: remote access, auth/identity, niet-productie, devops/CI, interne samenwerking, observability, admin/management, secrets/infrastructure en expliciet interne namen. 702 van de 1.000 opgevraagde domeinen werden succesvol verwerkt; 660 hadden überhaupt een CT-geschiedenis. Resultaten per domein werden tijdens de run alleen in het geheugen bewaard en nooit opgeslagen, dus niets hier noemt een specifieke organisatie. Dit zijn populatiepercentages, geen lijst.

Share of 702 sampled domains logging each category of internal-looking hostname Horizontal bar chart. Non-production 58.8 percent. Explicitly internal 29.3 percent. Admin and management 28.2 percent. Auth and identity 27.8 percent. DevOps and CI 25.2 percent. Remote access 21.8 percent. Secrets and infrastructure 20.4 percent. Internal collaboration 18.1 percent. Observability 16.5 percent. Sample of 702 domains, July 2026. 0% 25% 50% 75% 100% Internal-looking hostname categories, 702 domains Share of sample logging at least one name in each category. Passive CT read, July 2026. Non-production 58.8% Explicitly internal 29.3% Admin/management 28.2% Auth/identity 27.8% DevOps/CI 25.2% Remote access 21.8% Secrets/infra 20.4% Internal collab 18.1% Observability 16.5%
Bron: passieve uitlezing van crt.sh voor 702 domeinen uit de Tranco top-sites-lijst (94Y82), 24 juli 2026. Een domein telt één keer per categorie, ongeacht hoeveel overeenkomende namen het heeft gelogd. Categorieën sluiten elkaar niet uit, dus de rijen tellen niet op tot 100%.

Niet-productienamen domineren: 58.8% van de domeinen heeft een dev., staging., test. of vergelijkbare naam gelogd. Dat is de minst verrassende bevinding en op zichzelf de minst gevaarlijke, het noemen van een staging-omgeving is geen kwetsbaarheid. Interessanter is hoe ver in de lijst de gevaarlijke categorieën voorkomen. 20.4% heeft een naam gelogd gerelateerd aan secrets of infrastructuur zoals vault., consul. of k8s., en 21.8% heeft een remote-access-naam gelogd zoals vpn. of citrix. Dat zijn de categorieën waarin de naam zelf een aanvaller precies vertelt naar welk product gezocht moet worden voor een bekende CVE.

Individuele voorvoegsels vertellen hetzelfde verhaal op een gedetailleerder niveau. Hier zijn de twaalf meest voorkomende labels die we vonden, naar aandeel binnen de steekproef van 702 domeinen:

Meest voorkomende intern ogende voorvoegsels gelogd in CT, steekproef van 702 domeinen, juli 2026
PrefixDomeinenAandeel van steekproef
dev27338.9%
test26037.0%
staging19227.4%
admin14520.7%
stage13118.7%
auth12517.8%
qa11416.2%
demo9413.4%
internal9012.8%
vpn9012.8%
sandbox8412.0%
stg7811.1%

De vpn. prefix staat alleen al op 12.8% van de gehele steekproef, wat betekent dat ongeveer een op de acht van de drukste domeinen op internet de wereld, via een openbaar log dat ze zelf nooit hebben hoeven aanraken, heeft laten weten dat ze een specifiek remote-access-product op een specifieke naam draaien. Combineer dat met de version-fingerprinting die mogelijk is zodra een hostname resolvet, en een aanvaller is van nul kennis naar een geprioriteerde doelwittenlijst gegaan zonder ook maar één pakket naar het doelwit te sturen.

Het blijft zelden bij één naam

Het lekken is niet gelijkmatig verdeeld over één naam per domein. Van de 460 domeinen die iets lekten, lekten 113 een naam uit precies één categorie, maar de rest lekte tegelijkertijd over meerdere categorieën: 65 domeinen raakten drie categorieën, 42 raakten er zes en 22 domeinen lekten een naam in alle negen categorieën die we bijhielden. Zodra een organisatie de gewoonte heeft om interne tools echte publieke certificaten te geven, blijkt die gewoonte vaak consistent te gelden voor elke interne tool die ze draaien, niet slechts één. Voor een aanvaller is een domein dat breed lekt waardevoller dan een domein dat één enkele naam lekt, omdat het ontwikkel-, authenticatie- en beheerinfrastructuur in één query in kaart brengt.

Hoe je je eigen domein controleert

Dit kost minder dan een minuut en vereist geen andere tool dan een browser of curl, omdat je hetzelfde openbare register leest als wij.

Wat dit niet bewijst

Eerlijke kanttekeningen, want een cijfer zonder nuances is marketing.

Veelgestelde vragen

Kunnen aanvallers Certificate Transparency-logs gebruiken om subdomeinen te vinden?

Ja. Elk certificaat dat een publieke CA uitgeeft, wordt gelogd onder RFC 6962, en iedereen kan die logs gratis doorzoeken via crt.sh. In onze steekproef van 702 domeinen had 65.5% van de organisaties op deze manier minstens één intern ogende hostname gelogd, zonder enige interactie met hun infrastructuur.

Kunnen CT-logs interne hostnames onthullen die nooit bedoeld waren om openbaar te zijn?

Ja. Een naam heeft slechts één publiek vertrouwd certificaat nodig, vaak uitgegeven zodat medewerkers geen browserwaarschuwing te zien krijgen, om een permanent openbaar gegeven te worden. De server erachter hoeft niet via internet bereikbaar te zijn om de naam zelf te laten lekken.

Welke informatie wordt blootgesteld in het Subject Alternative Name-veld van een certificaat?

Het SAN-veld bevat elke hostname die een certificaat dekt. Eén enkel multi-domeincertificaat kan tientallen namen tegelijk blootstellen, die allemaal doorzoekbaar zijn in CT zodra het certificaat wordt uitgegeven.

Hoe ontdek ik subdomeinen met behulp van crt.sh?

Zoek op https://crt.sh/?q=%25.yourdomain.com&output=json. Dit retourneert elk gelogd certificaat voor je domein en subdomeinen, inclusief certificaten die zijn uitgegeven voor servers die mogelijk niet meer bestaan. Het is een passieve, read-only lookup in een openbaar log, dezelfde methode die we hier hebben gebruikt.

Voorkomt een wildcard-certificaat dat subdomeinen in CT-logs verschijnen?

Een wildcard-certificaat voor *.example.com logt alleen de wildcard-string en verbergt het specifieke subdomeinlabel. Maar zodra één service een eigen, uniek benoemd certificaat krijgt, wordt die naam gelogd, zelfs als al het andere achter een wildcard zit.

Hoe kan ik voorkomen dat interne hostnames lekken naar Certificate Transparency?

Gebruik een private, interne CA voor namen die nooit openbaar mogen worden, aangezien alleen publieke CA's moeten loggen naar CT. Geef de voorkeur aan wildcard-certificaten boven uniek benoemde leaf-certificaten waar je architectuur dit toestaat, en beschouw alles wat al in CT staat als permanent bekend.

Zijn private of interne certificaatautoriteiten vrijgesteld van Certificate Transparency-logging?

Ja. CT-logging is verplicht voor publiek vertrouwde CA's, niet voor certificaten in het algemeen. Een certificaat van je eigen interne CA, dat alleen wordt vertrouwd door je beheerde apparaten, hoeft nooit in een openbaar CT-log terecht te komen.

Gerelateerde artikelen