Subdomain takeover: come un record DNS dimenticato diventa una vulnerabilità

Un subdomain takeover non richiede di violare nulla — sfrutta un record DNS che nessuno si è ricordato di eliminare, che punta a una risorsa che ormai non appartiene più a nessuno.

Cos'è

Un subdomain takeover avviene quando un record DNS — di solito un CNAME — punta ancora a una risorsa di terze parti (un bucket di storage cloud, un'app su una piattaforma PaaS, un servizio di hosting statico) che nel frattempo è stata eliminata, mentre il record stesso non è mai stato rimosso. Chiunque possa rivendicare quello stesso nome di risorsa sulla piattaforma controlla ora ciò che viene servito sotto il tuo sottodominio.

Come succede

  1. Un team punta promo.example.it verso un servizio di terze parti — un bucket di object storage, un'app PaaS, un host per siti statici — tramite CNAME
  2. In seguito quella risorsa viene eliminata o l'abbonamento scade, ma il record CNAME nel DNS resta al suo posto
  3. Il nome della risorsa torna disponibile su quella piattaforma, perché la piattaforma non ha modo di sapere che il DNS di qualcun altro fa ancora riferimento ad esso
  4. Un attaccante rivendica esattamente lo stesso nome di risorsa sulla piattaforma
  5. Il traffico verso promo.example.it raggiunge ora la risorsa dell'attaccante, perché il CNAME non ha mai puntato all'infrastruttura del tuo dominio — ha sempre puntato a un nome sulla piattaforma di qualcun altro

Perché è efficace

Il contenuto servito in questo modo gira sotto il dominio della vittima, il che gli permette di aggirare le whitelist basate sul dominio, apparire legittimo nei link di phishing poiché il dominio visibile è davvero quello vero, e in alcuni casi persino ottenere un certificato TLS valido per quel sottodominio — perché l'attaccante controlla davvero la risorsa a cui punta il record DNS.

Come gli attaccanti trovano candidati

L'enumerazione dei sottodomini fa emergere ogni CNAME che punta a piattaforme di terze parti; controllare quali di questi obiettivi restituiscono un errore caratteristico tipo "non trovato" o "no such bucket" — la firma di una risorsa non rivendicata — restringe l'elenco a quelli sfruttabili.

Prevenzione

Rimuovi il record DNS nello stesso momento in cui dismetti una risorsa — è l'unica correzione completa, perché un record senza nulla di legittimo dietro è già tutta la vulnerabilità. Controllare periodicamente i sottodomini, specialmente dopo ogni migrazione da un servizio di terze parti, intercetta ciò che le checklist di dismissione si lasciano sfuggire.

Controlla i tuoi sottodomini

Provalo sul tuo dominio

Vedi la teoria in pratica: esegui Ricerca di sottodomini sul tuo dominio.