O que é subdomain takeover?

Para explicar o subdomain takeover, vou utilizar o problema encontrado no Nubank para facilitar o entendimento.

Como pode ser visto na imagem a seguir, o Nubank possui um subdomain chamado trainee.nubank.com.br que apontava para um S3 bucket do Amazon.

Ao acessar o subdomínio em questão é possível ver a mensagem contendo “Code: NoSuchBucket”. Isso significa que o bucket foi removido, mas o subdomínio contínua apontado para o tal bucket.

Ao executar o comando host trainee.nubank.com.br é possível ver a configuração do dns, mostrada na imagem a seguir.

Como pode ser visto na imagem acima, o subdomínio trainee.nubank.com.br está apontando para “trainee.nubank.com.br.s3-website-sa-east-1.amazonaws.com”. Nesse caso o nome do bucket que foi removido é “trainee.nubank.com.br”, ou seja, a informação que aparece antes de “.s3-website-sa-east-1.amazonaws.com” é o nome do bucket. Também é possível notar que esse bucket foi criado na região “sa-east-1”, ou seja, South America(São Paulo).

Para aqueles que não têm familiaridade com esse tipo de serviço oferecido pela Amazon, qualquer um pode registrar um bucket com qualquer nome. Nesse caso do Nubank, mesmo com o domínio nubank.com.br fazendo parte do nome do bucket, o Amazon não exige que você comprove autoridade sobre o domínio.

Com essas informações em mãos, agora só falta criar um novo bucket cujo nome será “trainee.nubank.com.br” e a região será “South America(São Paulo)”

Caso nenhum erro ocorra, a imagem a seguir mostra que o bucket foi criado com sucesso.

Apartir de agora eu tenho total controle do subdomínio trainee.nubank.com.br. Qualquer usuário que acessar o subdomínio em questão, irá visualizar o conteúdo que estiver no bucket que eu criei. Para facilicar o entendimento, eu enviei apenas uma imagem para o bucket.

Em um cenário real, um usuário malicioso pode redirecionar usuários legítimos do Nubank para um site no qual o atacante tem total controle, dentre outros.

Vale lembrar que o problema não ocorre pelo fato de que o Nubank estava usando o S3 Bucket. O problema ocorre porque o bucket foi removido por eles e a configuração do dns não foi alterada.

Esse tipo de problema ocorre quando um subdomínio aponta para um serviço de terceiros e tal serviço expira ou é removido, mas o dns do subdomínio não é alterado.

O problema foi reportado para o Nubank no dia 30 de setembro de 2017 e resolvido imediatamente. Como nenhum dado sensível foi exposto, resolvi fazer esse post para alertar outras empresas sobre a gravidade desse problema.