Jump to content

astrounder

Membros
  • Content Count

    1
  • Joined

  • Last visited

  • Country

    Brazil

Community Reputation

0 Neutral

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. A Microsoft possui um programa extenso de bug bounty (programa de pagamento de recompensas a pesquisadores que encontram e reportam falhas de segurança dos produtos da empresa). Já participei algumas vezes e recebi alguns reconhecimentos no portal do MSRC (Microsoft Security Response Center), mas meu primeiro bounty no MSRC derivou de uma falha que identifiquei no método de pagamento da Microsoft. Tal falha permitiu que eu realizasse compra de produtos da loja e não pagasse nada por isso. Quando reportei a falha ao MSRC, ela não foi aceita de primeira. O time de triagem desacreditou, mesmo com as PoCs (Proof Of Concept - Provas de Conceito) de alguém que dizia: "Ei Microsoft, eu consigo assinar o Xbox Live de graça". 🤷‍♂️ Tive o meu ticket no MSRC encerrado, porém continuei pesquisando e aprimorando a exploração da vulnerabilidade e depois de um tempo abri um novo ticket dizendo: “Ei Microsoft, além de assinar seus serviços, agora eu consigo comprar seus produtos sem pagar nada”. Prova de conceito da compra dos jogos sem pagar Depois de muita descrença por parte do MSRC e de muitas compras (cerca de R$ 15.000,00 em produtos) eles responderam: “Ei, fique conosco, pois daremos continuidade à reprodução de seu bug”. Entendendo a falha O fluxo de compra da Microsoft é o seguinte: O cliente, estando logado no Xbox ou na Microsoft Store, procura e seleciona os produtos nos quais tem interesse e ao final da compra solicita o fechamento do carrinho, iniciando processo de pagamento. Microsoft recebe a solicitação da compra dos itens selecionados e os dados para pagamento. O Host de pagamento da Microsoft faz uma requisição para o Gateway de pagamento responsável. O Gateway de pagamento consulta o Adquirente para que ele faça a liquidação da transação. O Adquirente consulta a instituição financeira para saber se o cliente possui crédito suficiente para a transação. O Banco submete a transação às suas regras de validação que, dentre outras coisas, verifica se o cliente possui crédito para concluir a transação e devolve a resposta para o Adquirente. O processo inverso acontece para que a aprovação da compra seja concluída. Entendendo o fluxo de compra, também precisamos saber que a Microsoft possui duas categorias de produtos: Produtos em release (jogos que já foram lançados) Produtos em pre-order (jogos que serão lançados) A lógica da cobrança dos produtos é a seguinte: Para produtos já lançados, a validação (checkout realizado pelo gateway) ocorre no momento do cadastro do cartão de crédito e no momento da compra. Para produtos em pre-order, a validação também ocorre no momento do cadastro e da compra, porém há uma pequena diferença: A cobrança de um produto em pre-order ocorre no momento da compra, mas caso não haja limite disponível, haverá nova tentativa em outro momento. No caso, se a primeira cobrança falhar, a segunda cobrança acontece 10 dias antes do produto ser lançado. Sendo assim os passos 2 ao 7 do fluxograma mostrado anteriormente serão executados exatamente 10 dias antes do produto mudar de categoria, de pre-order para release. Nesse caso temos a seguinte linha do tempo: Cadastro do cartão de crédito - Uma consulta ao gateway de pagamento é realizada para confirmação de que os dados inseridos se tratam de um cartão de crédito válido. Compra do produto - A segunda consulta é realizada ao gateway de pagamento, porém como se trata de um produto em pre-order, não existe a obrigatoriedade de pagarmos no ato da compra e temos uma opção implícita de sermos "cobrados" 10 dias antes do release. Entrega do produto - O produto é enviado para o comprador. Nesse caso, a tentativa da quebra da lógica do pagamento é conseguir acesso ao produto e não pagar antes dos 10 dias do seu lançamento. Para contornar o pagamento temos que fazer com que nosso cartão de crédito seja um cartão válido no momento do cadastro do método de pagamento e que seja um cartão inválido no momento do débito do valor do produto. Reproduzindo a falha Registramos um cartão válido na nossa conta do Xbox Live (primeira consulta ao gateway de pagamento é realizada). Cancelamos e bloqueamos o cartão de crédito no banco emissor. Agora com cartão inválido, podemos comprar os produtos em pré-venda.A segunda consulta ao gateway é realizada, porém como a cobrança pode ser realizada 10 dias antes do lançamento, conseguimos acesso aos produtos sem sermos debitados. A tentativa de débito do cartão registrado será feita 10 dias antes do lançamento do produto e você poderá receber várias notificações informando sobre a falha no pagamento Keep calm. :). Nesse momento é que encontramos a falha e ela está no estorno da compra, pois a licença do produto não é revogada! Quando o produto for lançado você continuará com a licença normalmente e poderá usufruir dos jogos sem problemas. O vídeo abaixo mostra os jogos que obtive reproduzindo o esquema acima: Depois de um tempo eu percebi que em alguns casos não é necessário nem mesmo cancelar o cartão de crédito válido. Outra opção é utilizar um um cartão de crédito pré-pago ou conta do PayPal sem fundos suficientes. Interessante é que quando comecei a escrever este artigo, não existia nenhum programa de bug bounty ativo para o Xbox One. No entanto, após a aceitação da falha por parte do MSRC, criaram um programa privado para o qual eu fui convidado e, mais recentemente, lançaram um programa público. Essa falha já foi corrigida, porém existem outras plataformas de e-Commerce e de jogos que podem estar vulneráveis a ataques similares. Após contactar a Microsoft, eles corrigiram a vulnerabilidade me deram uma ótima recompensa. 🙂💰
×
×
  • Create New...