Tank · Code Alliance Developers
Termux Arsenalby Tank · Code Alliance

Leitura técnica · use o conhecimento de forma ética e autorizada

← estudos
Pagamentos15 min · avançado · atualizado 2026-06-29

3-D Secure 2.x: Protocolo, Fluxos e Mitigação de Fraude

Como o 3DS 2.x troca mais de 100 atributos para decidir entre atrito zero ou desafio, e onde estão os limites reais do protocolo.

🎧 audiobook · nível 1

3-D Secure 2.x: Protocolo, Fluxos e Mitigação de Fraude

1/3
nível 1 · introdução acessívelnível 2 · em brevenível 3 · em breve

Por que dominar o 3DS?

O 3-D Secure é o único protocolo de autenticação que transfere a responsabilidade financeira da fraude (Liability Shift) do lojista para o banco emissor. Compreender sua mecânica permite desenhar estratégias de antifraude eficientes, reduzindo o atrito na conversão de vendas sem anular a análise que o emissor já realiza.

Os 5 atores do ecossistema

  • Cardholder — o portador do cartão (quem está comprando).
  • Merchant / PSP — a loja virtual ou o gateway de pagamento que inicia o processo.
  • 3DS Server (3DSS) — servidor técnico (geralmente fornecido pelo PSP/adquirente) que orquestra a mensagem do lado do lojista.
  • Directory Server (DS) — ecossistema da bandeira (Visa, Mastercard, Elo) que valida as chaves e roteia a transação.
  • Access Control Server (ACS) — o cérebro do banco emissor (ex: Itaú, Nubank) que autentica o portador.

O fluxo de autenticação (3DS 2.2)

diagrama do fluxo

[Browser/App] ─► (3DS Method / Device Data) ─► [3DSS]
   └─► (AReq: ~150 campos) ─► [DS Bandeira] ─► [ACS Emissor]
                                                   │
              ┌────────────────────────────────────┴────────────────────────────────────┐
              ▼                                                                          ▼
      [ Frictionless ]                                                          [ Challenge ]
      Aprovação instantânea                                                     Validação ativa do portador
      sem que o cliente perceba.                                                CReq/CRes via iframe/WebView:
                                                                                OTP, biometria ou push no app.
  1. Coleta silenciosa (3DS Method): o navegador ou app do cliente coleta dados do dispositivo e os envia ao 3DSS.
  2. A Requisição (AReq): o 3DSS monta a Authentication Request com cerca de 150 campos (BIN, valor, moeda, IP, histórico da conta) e envia ao Directory Server.
  3. Roteamento: o DS direciona essa carga de dados para o ACS do banco emissor.
  4. Tomada de decisão: o ACS analisa os dados e escolhe entre Frictionless (risco baixo, aprovação invisível) ou Challenge (risco suspeito, abre canal seguro CReq/CRes para OTP, biometria ou push notification).
  5. Token de sucesso: as mensagens de resultado (RReq/RRes) finalizam o fluxo e geram o criptograma CAVV/ECI, que deve ser enviado junto com a requisição de autorização financeira para garantir o Liability Shift.

Dados que movem o ponteiro para o Frictionless

O banco emissor precisa de contexto para confiar na transação sem desafiar o cliente. Os campos mais críticos são:

  • Consistência digital — browserUserAgent, browserAcceptHeader, browserLanguage, e combinação de resolução de tela com timezone.
  • Intenção de compra (merchantRiskIndicator) — recompra, histórico de entrega no mesmo e-mail, vale-presente ou pré-venda.
  • Maturidade da conta (acctInfo) — idade do cadastro na loja, modificações recentes de senha e histórico de tentativas falhas de pagamento.
  • Relação comercial — histórico prévio de transações bem-sucedidas entre aquele portador específico e a sua loja.
  • Isenções regulatórias — TRA Exemption (Transaction Risk Analysis) quando a taxa de fraude global do adquirente é extremamente baixa (comum sob PSD2 europeia).

Os limites reais do 3DS — o que ele NÃO resolve

O 3DS protege a camada de autenticação da transação no momento da compra, mas não é uma bala de prata. Ele deixa brechas para: (1) Scams / engenharia social — cliente legítimo induzido a aprovar a compra sob coação ou engano; (2) Fraude amigável — portador real faz a compra, passa pelo challenge, recebe o produto e depois alega desconhecer a cobrança; (3) Account Takeover bancário — se o fraudador clonou o dispositivo da vítima e tem acesso ao app do banco, ele mesmo aprova o challenge. O 3DS deve ser tratado como camada robusta de segurança, não como solução única.

Boas práticas de integração (lado merchant)

  • Não invente a roda — colete os dados de dispositivo utilizando estritamente o SDK oficial do seu PSP. Coletas customizadas quebram as regras do EMVCo.
  • Enriqueça o payload — preencha o objeto merchantRiskIndicator com o máximo de detalhes possível. Mais contexto para o emissor = maior taxa de frictionless.
  • Antecipe o processo — execute o 3DS Method de forma invisível em um iframe assim que o cliente insere o número do cartão, antes mesmo do clique em Finalizar Compra.
  • Amarre a autorização — garanta que os códigos ECI e CAVV retornados na autenticação sejam repassados integralmente na etapa de autorização. Sem eles, você perde o direito ao liability shift.
  • Monitore por BIN — acompanhe taxas de conversão e challenge divididas por emissores. Se um banco específico força challenge em 100% das transações, acione seu adquirente para calibrar as regras junto à bandeira.

Checklist de produção

Antes de subir para live: (a) validar CAVV/ECI no log de autorização; (b) montar dashboard com frictionless rate, challenge rate e chargeback rate por BIN; (c) testar fallback quando ACS está fora do ar (3DS 2.x permite degradação controlada); (d) revisar consentimento e LGPD para a coleta de device fingerprint.

Template OffSec · aplicar antes de rodar

Objetivo → Preparação → Execução → Evidência → Ética

→ guia do lab

Objetivo

Compreender protocolos (3DS, tokenização, PIX) e falhas comuns no checkout para reforçar antifraude — sem tocar em cartão real de terceiros.

Pré-requisitos

  • Ambiente sandbox do PSP com credenciais de teste
  • Coleção Postman/Insomnia com fluxos parametrizados
  • Cartões de teste oficiais (Visa 4111..., Mastercard 5555..., etc.)
  • Log estruturado (JSON) para cada request/response

Passos

  1. Mapear o fluxo (auth → 3DS challenge → capture → refund)
  2. Testar cada estado de erro documentado pelo PSP
  3. Injetar variações no device fingerprint e observar o desafio 3DS
  4. Medir latência e códigos de resposta para cada persona-teste
  5. Consolidar findings em playbook com decision tree para o time de risco

Evidências a coletar

  • Coleção Postman versionada
  • Log request/response com sanitização de PAN (só BIN + últimos 4)
  • Screenshots do painel do PSP mostrando a transação

Regra prática: se você não guardou evidência reprodutível, o achado não existe.

Guia prático (lab autorizado)

alvo · Sandbox oficial do PSP (Stripe test, Adyen test, PagSeguro sandbox)

curl https://api.stripe.com/v1/payment_intents -u sk_test_...: -d amount=1000 -d currency=brl -d 'payment_method_types[]=card'

verificar · O painel do PSP em modo teste é a fonte da verdade — compare com o response do seu backend. Divergência = bug no seu lado.

Checklist interativo

Checklist ético (marcar antes do primeiro comando)

Autorização, escopo, lab e proteção de dados. Sem 100%, não roda fora do lab.

0/5

Prática segura · Pagamentos

→ guia do lab

Monte um ambiente isolado antes de qualquer teste — use Docker (DVWA/juice-shop), uma VM host-only ou um alvo autorizado (HTB, TryHackMe, PortSwigger Academy).

Nunca aponte para alvo em produção. Se estiver no celular, use proot-distro + Debian para não sujar o Termux principal.