- Durante testes no ambiente de desenvolvimento da EA, chamado "integration", foi obtido um token de acesso com privilégios por meio de credenciais hardcoded no executável de um jogo específico.
Documentação de autenticação
- Vários endpoints foram escaneados para verificar se a documentação da API estava exposta.
- Em
/connect/api-docs/index.json, foi encontrado um arquivo Swagger JSON, permitindo visualizar toda a implementação Swagger da Nexus Connect API.
- O arquivo Swagger foi atualizado para a especificação OpenAPI 3.0 e executado em um servidor local do Swagger UI.
Procurando por mais coisas
- O EA Desktop usa uma API GraphQL chamada "Service Aggregation Layer", que integra vários serviços de backend.
- Mais de 80 endpoints de serviço foram encontrados em
gateway.int.ea.com.
Encontrando a mina de ouro
- Todos os endpoints foram requisitados e convertidos para a especificação OpenAPI, permitindo verificar vários tipos de dados.
- Foram encontradas informações interessantes, como dados sobre uma equipe de um jogo específico.
Hora da produção
- Foram explorados endpoints acessíveis com um cliente OAuth de produção.
- Pelos endpoints
/identity/pids/me e /identity/pids/me/personas, foi possível verificar informações da conta e a lista de "personas".
Grande descoberta
- Foi descoberto que o endpoint
/identity/pids/{pidId}/personas/{personaId} permitia atualizar personas.
- Era possível fazer ações como alterar o nome de usuário, mudar o status da persona e mover a persona para outra conta.
Outra percepção
- O endpoint
/identity/namespaces/{namespace}/personas também permitia pesquisar contas ocultas.
- Era possível mover a persona de outra conta para a própria conta e controlar os dados dessa conta.
Terceira tentativa
- Foi descoberto que era possível contornar o 2FA usando tokens de Xbox/PSN e fazer login na conta.
- Ao entrar no jogo pelo Xbox, foi possível acessar a conta da vítima.
Impacto
- Um invasor podia mover dados de persona para roubar nomes de usuário e dados de jogo.
- Também podia entrar na conta pela integração com Xbox e acessar a conta da vítima.
- Era possível banir personas ou alterar nomes de usuário.
Algumas reflexões
- Foi decepcionante que a EA tenha demorado para corrigir o problema e não tenha um programa de bug bounty.
- A colaboração com a EA foi positiva.
Linha do tempo
- 16 de junho de 2024 - Vulnerabilidade reportada à EA
- 8 de julho de 2024 - Patch 1 implantado (verificação de propriedade da persona)
- 10 de setembro de 2024 - Patch 4 implantado (remoção da documentação)
1 comentários
Comentários do Hacker News
A EA gosta de usar um sistema comum para todos os jogos. Encontraram um backend compartilhado chamado blaze em Madden, com endpoints web e TCP. Criaram uma ferramenta para chamar os endpoints, mas derrubavam os servidores um por um. Depois tentaram construir uma API para impedir a exploração
Instalaram Battlefield 2042 pelo Xbox e conseguiram se conectar com sucesso. Gostam de hackers
Seria interessante ver anotações mostrando quanto tempo e esforço foram necessários para executar o ataque
Quem gostou deste texto pode ler mais em plataformas de bug bounty como o "Hacktivity" da HackerOne
Por causa deste texto, verificaram os servidores de API de desenvolvimento e operação para confirmar que os caminhos de descritor OpenAPI UI/JSON não estavam expostos
Jogos da EA podem ou não funcionar. Algo parecido pode acontecer até em grandes nuvens. No mundo da infraestrutura seria um cenário impossível, mas no mundo de consumo da EA isso é rotina
A EA alegou que mudar a conta do Xbox para uma conta nova era "tecnicamente impossível", mas na prática é possível. Como não dá para vincular uma conta antiga do Xbox, não é possível jogar jogos da EA no Xbox
Seria divertido bloquear todas as contas e torcer para que não houvesse backup do banco de dados
Fico imaginando como deve ser trabalhar como engenheiro em uma grande empresa. Várias equipes possuem partes diferentes, então a chance de existirem vulnerabilidades parece alta
É decepcionante que a EA ainda não tenha iniciado um programa de bug bounty. Como não há incentivo para reportar, algumas pessoas escondem vulnerabilidades. Espero que a EA siga a tendência do setor. Fico curioso se não houve recompensa pelo relato