1 pontos por GN⁺ 2 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • O PCI DSS limita o armazenamento e a exibição de dados do cartão, mas mesmo apenas com informações permitidas como o BIN, os 4 últimos dígitos e a data de validade, ainda é possível continuar tentando cobranças adicionais em outros comerciantes
  • Em uma conta comprometida, o atacante obteve, por meio da página de 3D Secure do banco, a informação de que o cartão ainda podia ser usado, o nome do banco, o número do cartão mascarado e a data de validade completa, e cerca de 6 horas depois iniciou tentativas de autenticação em vários comerciantes
  • O número do cartão de pagamento (PAN) tem uma estrutura com IIN, identificador da conta e dígito verificador Luhn; se a resposta do gateway de pagamento indicar qual valor está errado, fica fácil adivinhar PAN, validade e CVV
  • A velocidade observada no teste real foi de 6 tentativas por segundo, cerca de 2 por segundo por API, e como o IP mudava via proxy e o número do cartão também mudava constantemente, é difícil para o comerciante detectar brute force
  • O atacante usou comerciantes com exceção de 3D Secure para transferir para uma carteira eletrônica todo o limite que havia sido reduzido; o dinheiro foi devolvido via chargeback, mas o rate limit de CVC2 do banco ainda se limitava a bloqueios de alguns minutos

O que o PCI DSS bloqueia e o que deixa passar

  • O PCI DSS é um padrão do setor que define as medidas mínimas de segurança exigidas ao lidar com dados bancários sensíveis, como os de cartão de crédito, e limita o armazenamento e a exibição para evitar que todas as informações sejam expostas mesmo se a conta for comprometida ou os dados do cartão forem parar nas mãos de terceiros
  • Segundo o PCI DSS 4, as informações que podem ser exibidas na tela ou no recibo são o PAN mascarado, o nome do titular do cartão, o código de serviço e a data de validade; no caso do PAN, podem ser mostrados o BIN e os 4 últimos dígitos
  • As informações que não podem ser exibidas se limitam aos dados completos de trilha, ao código de verificação do cartão e ao PIN/bloco de PIN
  • Tanto sites de e-commerce quanto recibos físicos podem ser afetados pelo mesmo problema, e parte das informações do cartão pode vazar não só por comprometimento de conta, mas também por recibos que não foram descartados

Fluxo do incidente

  • A vítima usava um cartão de crédito virtual com limite restrito, havia ativado o 3D Secure como autenticação em duas etapas e armazenava o cartão apenas em comerciantes conhecidos
  • Depois que uma conta criada há muito tempo foi comprometida, chegou um SMS sobre uma tentativa de compra em um site onde o cartão estava salvo; a vítima entrou imediatamente, trocou a senha, confirmou a tentativa de compra e reduziu bastante o limite do cartão virtual
  • O motivo para não desativar totalmente o cartão foi a avaliação de que os dados completos do cartão não haviam sido comprometidos
  • Cerca de 6 horas após a invasão inicial, ocorreram 3 ou 4 tentativas de SMS de 3D Secure em vários comerciantes nunca usados; todas falharam, mas depois se tornaram uma pista importante para entender o método do ataque
  • Alguns minutos depois, enquanto a vítima ligava para o banco para desativar totalmente o cartão, o atacante usou outros comerciantes sem 3D Secure para drenar, em várias cobranças, todo o limite reduzido
  • O dinheiro foi movido para a carteira eletrônica de um marketplace que permite saque em dinheiro, e a vítima recebeu o valor de volta do banco após solicitar chargeback

Informações obtidas pelo atacante

  • O atacante tentou fazer um pagamento na conta comprometida, visualizou a página de 3D Secure do banco, cancelou o pedido e saiu
  • Nesse processo, obteve a informação de que o cartão ainda estava ativo, o nome do banco, o número do cartão mascarado e a data de validade completa
  • Em geral, para concluir normalmente um pagamento com cartão, considera-se necessário ter os 16 dígitos completos do PAN, a data de validade, o número CVC2 e informações como o celular usado no 3D Secure
  • No ataque real, foi possível continuar as tentativas em outros comerciantes apenas com parte dessas informações

Estrutura do PAN e possibilidade de adivinhação

  • O número do cartão de pagamento (PAN) é o identificador usado em cartões de crédito, débito, valor armazenado e gift cards
  • O PAN segue um esquema numérico comum conforme a ISO/IEC 7812, com a seguinte estrutura interna
    • Issuer Identification Number (IIN) de 6 ou 8 dígitos
    • Um identificador de conta individual de até 12 dígitos
    • Um dígito verificador calculado pelo algoritmo de Luhn
  • O banco da vítima não autorizava pagamentos apenas com o número do cartão, exigindo PAN, validade e CVV em conjunto
  • Alguns bancos e gateways de pagamento conseguem processar cobranças apenas com o número do cartão, o que foi a parte mais difícil de acreditar para a vítima

Como as respostas do gateway de pagamento criaram as condições para brute force

  • O banco da vítima recusava pagamentos com valores ausentes ou incorretos, mas informava pelo código de resposta qual parte estava errada
  • Exemplos de resposta
    • “Não é um cartão de crédito válido”
    • “O cartão expirou”
    • “Todas as outras informações estão corretas, mas o CVV está errado”
  • Essas respostas podem ser usadas pelo atacante para distinguir quais valores de número do cartão, validade e CVV estão corretos ou incorretos
  • No ataque real, o atacante testou a uma velocidade de 6 tentativas por segundo, cerca de 2 por segundo por API
  • Essa velocidade é difícil de detectar do ponto de vista do comerciante, porque o IP de origem muda via proxy, os números de cartão também não são iguais por causa da própria natureza do brute force, e a frequência das requisições é muito baixa

O papel dos comerciantes com exceção de 3D Secure

  • O banco mantém uma lista de comerciantes com exceção de 3D Secure, considerados confiáveis o suficiente para receber pagamentos e assinaturas sem 3D Secure
  • Esses comerciantes assumem a responsabilidade caso haja chargeback
  • O atacante usou comerciantes sem 3D Secure para mover para uma carteira eletrônica valores dentro do limite do cartão

Resposta posterior e problemas restantes

  • O dinheiro foi devolvido rapidamente via chargeback
  • Foi informado ao comerciante que o sistema que convertia pagamentos com cartão em dinheiro estava sendo usado para saques não autorizados, mas o comerciante respondeu que a questão deveria ser tratada com o banco
  • Também foi informado ao site de e-commerce que exibir 10 dígitos do número do cartão junto com a data de validade facilita o ataque, mas o site respondeu que não considerava isso uma vulnerabilidade e que o sistema havia sido projetado intencionalmente de acordo com os padrões PCI DSS 3 e 4
  • Pessoas que criam APIs de pagamento ou trabalham no setor de pagamentos não se mostraram surpresas, e alguns comerciantes responderam que conseguem processar transações até sem a data de validade
  • Depois do incidente, a empresa que convertia pagamentos por cartão em dinheiro deixou de processar isso sem 3D Secure
  • O banco da vítima ainda mantém um rate limit relativamente tolerante contra brute force de CVC2; quando o limite é atingido, o cartão é apenas bloqueado temporariamente por alguns minutos

1 comentários

 
GN⁺ 2 시간 전
Comentários do Hacker News
  • Vendo casos relacionados, talvez o autor original estivesse atrás da causa errada. Recentemente apareceram cobranças pequenas não autorizadas ligadas a FB/Meta no meu cartão de crédito, e parecia que alguém estava testando se o cartão seria detectado
    Liguei para a administradora, cancelei a cobrança, encerrei o cartão e recebi outro com novo número, nova validade e novo CVV, mas as cobranças fraudulentas de FB/Meta começaram de novo até nesse cartão novo que eu nunca tinha usado. A causa era a carteira digital, e mesmo cancelando o cartão, dados como o número podiam ser transferidos pela carteira digital
    Liguei de novo para a administradora e pedi para cancelarem todas as carteiras digitais; eram 99 ao todo, e isso não podia ser resolvido online, então precisei falar com um atendente do call center. Mesmo depois de ouvir a explicação de que todas as cobranças recorrentes seriam resetadas, tive de pedir o cancelamento do cartão e de todas as carteiras digitais, e ainda esperei 20 minutos. Cancelar um cartão pode não ser o que a gente imagina, e como cobranças recorrentes são muito lucrativas para as operadoras, cancelar isso parece representar uma grande perda de receita

    • Não sei se era exatamente uma “carteira digital”, mas esse conceito de atualização dos dados do cartão depois da emissão de um novo cartão existe de fato e é um serviço oferecido pelas operadoras
      Blog da Stripe: https://stripe.com/resources/more/what-is-a-card-account-upd...
    • Também apareceu uma cobrança de 200 euros da Meta/FB no meu caso, e ainda estou esperando o novo cartão
    • No privacy.com dá para criar cartões manualmente e, se quiser, usar um cartão diferente para cada serviço
    • Essa parte de “não há como cancelar todas as carteiras digitais online” varia muito de banco para banco. Por exemplo, o Bank of America permite ver e remover no site os cartões adicionados a carteiras digitais
    • No meu caso, era quase certo. Aconteceu em um único dia, e o cartão em uso era um cartão virtual usado só em alguns grandes sites de e-commerce e poucos outros lugares
      Se tivesse vazado de outro lugar, provavelmente ninguém tentaria fazer login em contas de e-commerce não relacionadas
  • Este texto não aborda a parte mais importante. A liquidação, que é o consentimento do banco para mover dinheiro da minha conta para o comerciante, é algo completamente separado da autorização
    Autorização é EMV moderno, ou seja, autenticação por “chip e PIN”, CVV online e vários mecanismos que o banco usa para se proteger contra fraude e, secundariamente, proteger o comerciante também
    A rede pode aceitar quando a Amazon diz “aqui está o número do cartão, e esta pessoa afirma que está nos pagando 400 dólares”. Isso é só liquidação e vai para a fatura. Sem criptografia sofisticada, sem nem algo no nível de um PIN de 4 dígitos, sem sequer uma checagem no nível de lembrar o nome de solteira da mãe: é basicamente um “ok, acredito”. Por isso o consumidor precisa ler a fatura do cartão e contestar cobranças desconhecidas, senão simplesmente paga
    A rede quase não tem incentivo para se preocupar com consumidores sendo lesados. Se ninguém contestar, todo mundo fica feliz; se contestarem, o valor pode ser recuperado do comerciante, então não é problema deles

    • Esse “se contestar, é só recuperar do comerciante e acabou” vale para pagamentos online sem 3DS, mas não para pagamentos presenciais ou pagamentos online com 3DS. Nesses casos, normalmente a responsabilidade fica com o emissor
  • Os processadores de pagamento não permitem enumeração de cartões nem testes de cartão por força bruta com o número completo, e as bandeiras também aplicam penalidades severas a comerciantes e processadores que não impedem isso

    1. https://stripe.com/newsroom/news/card-testing-surge
    2. https://stripe.com/blog/the-ml-flywheel-how-we-continually-i...
    3. https://docs.stripe.com/disputes/monitoring-programs#enumera...
    • Se você usar várias APIs de validação de cartão, a frequência das tentativas cai bastante. Se forem números PAN diferentes, IPs de origem diferentes etc., não vejo muito bem como correlacionar isso
      Enumerar CVC2 para um único PAN é outra história
    • Até uns 6 anos atrás, a Stripe não mascarava em nada os números de cartão nos logs da API
  • Isso é prova de que a infraestrutura antifraude realmente protegeu. O banco absorveu a perda com fraude e o dinheiro foi devolvido
    No fim, os sistemas bancários se importam com perdas por fraude e também são muito bons em detectá-las. O sistema de pagamentos com cartão é tão grande que é extremamente difícil mudá-lo, então, sem evidência forte de que uma alteração específica realmente reduziria a taxa de fraude, os bancos tendem a não mexer

    • Infelizmente, em muitos casos quem absorve a perda com fraude não é o banco, e sim o comerciante, o que cria um problema de agente-principal
      O banco emissor ganha taxa de intercâmbio em todas as transações, então, se não tiver responsabilidade pela fraude, o incentivo padrão é aprovar o máximo possível e depois resolver com chargeback. Mas o 3DS muda bastante essa conta, e transações presenciais normalmente também ficam sob responsabilidade do banco emissor
    • Não é que o banco realmente absorva a perda; ele já embute margem suficiente para cobrir o custo da fraude em todos os serviços
      No fim, todos os consumidores acabam arcando coletivamente com esse custo. Só não aparece como linha separada na fatura; estamos pagando um pouco a mais em tudo o que compramos
    • Você só fica protegido se perceber a cobrança fraudulenta
    • Já vi banco desistir quando enfrenta alguém muito motivado a contestar chargeback
      Passei por isso com um caso no eBay ligado a cartão de crédito roubado; no começo parecia ir bem, mas quando o eBay enviou uma pilha de documentos ao banco, o chargeback foi revertido, e pouco depois até minha conta bancária foi encerrada
      Não termina quando o dinheiro volta por chargeback. No começo, parece que o valor é apenas provisório enquanto se dá prazo para a outra parte responder, e levou uns 30 dias até eu conseguir reabrir a contestação depois que o eBay me soterróu com papelada. A explicação deles foi tão eficaz que meu próprio banco acabou me tratando como fraudador
      Também não sei se é 100% correto dizer que o banco absorve essas perdas. Se a estrutura fosse mesmo essa, o eBay não teria motivo para empregar gente especializada para investigar e responder ao meu chargeback; alguém entre quem sofreu o chargeback e quem o abriu acaba arcando com a perda
  • Seria muito mais útil se o 3D Secure fosse obrigatório em todo lugar, mas entendo que quase não se usa isso nos EUA. Como o mercado americano é enorme, as emissoras acabam tendo de aceitar solicitações sem 3D Secure, senão o cliente não conseguiria usar o cartão em muitos lugares
    Isso limita bastante um mecanismo antifraude muito poderoso, o que é frustrante para praticamente todo o resto do mundo
    Não entendo por que o consumidor americano parece preferir sofrer fraude a aceitar um pouco mais de atrito. Mesmo quem nunca foi vítima acaba pagando, porque o comerciante repassa o custo da fraude e do seguro para o preço dos produtos

    • Em geral, a análise é algo como: se a queda na conversão causada por um mecanismo de segurança for maior que a taxa média de fraude, não há motivo financeiro para adotá-lo
      Mas, olhando o setor inteiro, isso é um problema clássico de coordenação. A conversão cai porque continua existindo uma alternativa mais fácil; se todos os comerciantes e bancos passassem a exigir 3DS ao mesmo tempo, não haveria mais uma opção mais conveniente para onde migrar. Gostando ou não, os usuários se acostumariam ao novo modelo mais seguro e a conversão subiria de novo
      A UE tornou o 3DS obrigatório em muitos pagamentos justamente dessa forma, embora lá também os reguladores tenham reconhecido que aplicar isso em 100% dos casos seria contraproducente, e existe um ponto de equilíbrio em algum lugar no meio
      Outro exemplo da mesma lógica: cartões de crédito nos EUA não têm PIN. Se um banco individual resolvesse adotar PIN, os clientes migrariam para cartões concorrentes sem PIN e o uso cairia muito. Em outros mercados, por intervenção regulatória ou incentivos das bandeiras, todos os cartões têm PIN, e as pessoas simplesmente se acostumaram
    • Os EUA têm leis diferentes e mais favoráveis ao consumidor, então o comportamento do consumidor também é diferente
      Quando os cartões de crédito estavam surgindo, nos EUA, o Congresso aprovou o Fair Credit Billing Act de 1974, limitando a responsabilidade do consumidor a 50 dólares se um cartão perdido fosse reportado em até 60 dias após o fechamento do ciclo de cobrança fraudulento. Na época, os pagamentos eram totalmente offline, em papel, com aquelas máquinas que faziam o barulho de “kachunk” ao tirar cópia carbono do cartão
      Essa lei não mudou e, na prática, a maioria dos bancos nem cobra esses 50 dólares, porque irritar o cliente por esse valor não vale a pena para o banco
      Com a internet, os cartões ficaram subitamente muito mais fáceis de roubar e abusar, mas os bancos ainda precisam absorver todas as perdas reportadas em até 60 dias após o fim do ciclo de cobrança. Por isso os bancos americanos investiram pesadamente em monitoramento em tempo real de transações com cartão de crédito e levam isso muito a sério, porque no fim a responsabilidade é deles. Já os consumidores se preocupam menos. Do ponto de vista do consumidor, os cartões nos EUA parecem muito mais frouxos do que os europeus porque, ao contrário da Europa, o consumidor fica isento e o banco investe muito mais nos bastidores
      Separadamente, a UE regulou a taxa de intercâmbio que as operadoras podem cobrar, mas os EUA não impuseram teto. Como resultado, portadores de cartão nos EUA podem receber recompensas bem significativas pelo uso, especialmente entre os 10% mais ricos, algo praticamente impossível com cartões emitidos na UE, onde a taxa é limitada
      Neste momento há um grande processo tentando permitir que comerciantes aceitem apenas cartões de taxa baixa. Os contratos padrão de VISA/MC/AMEX exigem tratamento igual para todos os cartões, e isso dá às operadoras incentivo para empurrar as pessoas para cartões com intercâmbio mais alto. Ainda é preciso ver o resultado desse caso, mas até lá consumidores americanos de alta renda podem ter recompensas muito maiores, o que também incentiva o uso do cartão e reduz o atrito em comparação com cartões no estilo europeu
    • Você acha que estamos pedindo um meio de pagamento menos seguro?
      Não é que as pessoas prefiram sofrer fraude; isso é uma questão de negociação entre emissor e comerciante
    • Só para constar, se você está nos EUA e quiser, o HSBC USA Mastercard usa 3D Secure
    • Quanto da perda com fraude o 3D Secure consegue evitar, 0,1% talvez?
  • Uma vez, uma pessoa contratada pela nossa empresa começou a se gabar de que tinha descoberto como adicionar valor armazenado a gift cards. Mais tarde descobrimos que ela estava sendo investigada pelo FBI
    Era até uma empresa contratada pelo governo, e no fim apareceu o maior agente de segurança que eu já vi para levar a pessoa embora

    • O que significa exatamente “adicionar valor armazenado a gift cards”?
  • Cartões de crédito virtuais existem há muito tempo. Lembro de Bank of America ou Citi oferecendo isso há mais de 15 anos, talvez em um app Java ou um executável. Surpreende que isso não tenha se espalhado mais
    O Robinhood implementa isso muito bem. É o melhor sistema de cartão de crédito virtual que já usei, muito fluido. Dá para autorizar o cartão para uso único, por 24 horas ou indefinidamente até cancelar, e o UI/UX é excelente

    • Isso não se espalhou porque foi mais fácil absorver o custo da fraude do que manter o sistema. Simplesmente não pegou porque era um recurso favorável ao consumidor
    • A MBNA tinha, no começo dos anos 2000, antes de ser adquirida pela Chase, um app de cartão virtual em Flash, e eu usei bastante
      No mundo atual, em que tudo é assinatura, não entendo por que isso não se popularizou. Era ótimo poder definir validade e limite de gasto para não ter de entrar em negociação suja na hora de cancelar uma assinatura
  • Recentemente recebi um SMS do banco dizendo que havia uma transação suspeita no cartão da minha esposa no exterior, e o valor era literalmente 0 dólar, além de ter ocorrido num horário em que ela não estava usando celular nem computador
    No início achei que a própria mensagem fosse phishing, mas conferi online, vi que o formato da mensagem batia e que a página do banco garantia que não pedia nenhuma informação no processo de feedback, então confirmei que não tínhamos feito a transação
    O banco cancelou imediatamente o cartão e enviou um novo
    No começo achei que o sistema de segurança do banco estava reagindo exageradamente, mas parece que alguém estava realmente fazendo o que este texto descreve, e o banco detectou antes

  • Vale a pena manter um cartão separado para pagamentos online e colocar nele só o dinheiro necessário para pagar
    Sei que é uma ideia ingênua
    Voltando ao texto, a vulnerabilidade era a senha, e isso levou a outros comerciantes que não usam 3D Secure
    Pelo texto, parece que os atacantes têm um sistema totalmente automatizado, então grandes comerciantes precisam lidar com tentativas automáticas de login na mesma faixa de IP usando contas diferentes. Mesmo olhando nossos logs do Wordfence, a rotação de IP não é tão rápida assim, então talvez dê para conter parte disso com bloqueio permanente de IP

    • Se o comerciante não é responsável pela fraude que acontece no modelo atual, por que ele faria isso?
    • Sinceramente, eu normalmente nem me preocupo muito com fraude em cartão de crédito porque o banco reembolsa. Só verifico se há algo estranho na fatura
    • O Mercury agora oferece contas bancárias pessoais. Dá para criar cartões de débito virtuais como nos serviços corporativos tipo Brex/Mercury/Ramp
    • Concordo com usar cartão separado. O meu também era separado, e por isso ainda bem que o valor não foi muito alto
      Um vazamento de senha não deveria levar a um vazamento de todos os dados do cartão de crédito. Os mesmos dados aparecem até em recibos de papel impressos em loja, às vezes com 4 dígitos, às vezes com 10. Mesmo recibos de papel largados na loja ainda permitem força bruta
    • Não sou envolvido com isso, mas o cartão virtual Capital One Eno serve bem para esse uso
  • Complementando, o comerciante não pode escolher o nível de segurança que quiser no processador de cartão de crédito. Por exemplo, no authorize.net dá para receber pagamento mesmo se o endereço não bater
    A verdadeira pergunta é: como o dinheiro foi sacado? Compraram gift cards em algum comerciante com segurança frouxa?
    Acertar o número e tirar o dinheiro do sistema são coisas completamente diferentes

    • Esse ponto de que “o comerciante não pode escolher o nível de segurança que quiser no processador” depende do processador. Muitos permitem que o comerciante configure regras de autorização com bastante profundidade
      Existe uma certa divisão no mercado de processadores. De um lado estão os que oferecem simplicidade ao cliente e reduzem a carga; do outro, os que expõem toda a complexidade e dão controle granular. O primeiro tipo normalmente não deixa definir requisitos de segurança, enquanto o segundo oferece centenas de opções. Claro, há processadores no meio do caminho, e esses dois eixos costumam mirar clientes diferentes