Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Security First: APIS seguras desde a concepção

Security First: APIS seguras desde a concepção

Nessa apresentação, falamos sobre os conceitos de segurança de APIs, mostrando as praticas mais comuns no mercado, e alguns exemplos de quando a segurança não é feita corretamente. Vamos passar também olhando para projeções para o futuro.

Avatar for PaulaSimiqueli

PaulaSimiqueli

April 13, 2021
Tweet

More Decks by PaulaSimiqueli

Other Decks in Technology

Transcript

  1. 26 anos Sobre mim Sistemas de Informação - UFES Tech

    Lead, Beerstorm.lab - Ambev Palestrante (APIX, API Days Paris) /PaulaSimiqueli Ana Borges Louca dos gatos
  2. APIs The Digital Glue Backend Ecossistema de Parceiros Digitais Integrações

    com Aplicações SaaS Aplicações Móveis e Internet of Things
  3. Aplicativo Móvel Software API RESTf ul JSON JSON HTTP Espionagem

    de dados Tratamento de parâmetros Repetição de chamada Negação de serviço (DDoS) Uso não autorizado Vulnerabilidades
  4. SSL One Way Esta é a abordagem mais amplamente usada

    em aplicativos da Internet. • Garante a comunicação segura entre cliente e servidor; • Garante que o servidor seja um site conhecido e seguro;
  5. VANTAGENS • Segurança garantida na comunicação entre cliente e servidor;

    • Garantia de autenticidade do servidor/site; • Tecnologia de segurança padrão da indústria. DESVANTAGENS SSL One Way • Maior esforço de configuração em comparação com o uso de HTTP; • Você precisa obter um certificado válido de uma autoridade de certificação ou gerar um certificado auto assinado (apenas para segurança de comunicação); • Maior custo computacional para processamento de transações.
  6. • Segurança garantida na comunicação entre cliente e servidor; •

    Autenticidade garantida do servidor / site e do cliente; SSL Two Way • Maior esforço de configuração; • Além da necessidade de obter um certificado também é necessário gerar um certificado para fornecer ao cliente; • Maior complexidade do fluxo de operação; • Maior custo computacional para processamento de transações. VANTAGENS DESVANTAGENS
  7. Aplicativo Móvel Software API RESTf ul JSON JSON HTTPS Espionagem

    de dados Tratamento de parâmetros Repetição de chamada Negação de serviço (DDoS) Uso não autorizado Vulnerabilidades
  8. Criptografia simétrica Algoritmos de criptografia simétricos são algoritmos que usam

    a mesma chave para criptografar e descriptografar informações. AES
  9. Algoritmos de criptografia assimétrica requerem um par de chaves, uma

    privada (secreta) e uma pública Embora diferentes, as chaves estão matematicamente ligadas. Quando a criptografia é feita com uma das chaves, a descriptografia só pode ser feita com a outra chave do par. Chave privada Chave pública Criptografia assimétrica RSA
  10. Introdução - Cenários de uso ❖ Transações Bancárias e Financeiras.

    ❖ Compras Online. ❖ Armazenamento de dados sensíveis (senhas, cartões de crédito…). ❖ Proteção de dados pessoais. ❖ Qualquer mensagem que não pode ser lida exceto pelo destinatário. ❖ Entre diversos outros. Exemplos de momentos de uso Criptografia
  11. Aplicativo Móvel Software API RESTf ul JSON JSON HTTPS Espionagem

    de dados Tratamento de parâmetros Repetição de chamada Negação de serviço (DDoS) Uso não autorizado Vulnerabilidades
  12. A função hash é um algoritmo que mapeia dados de

    comprimento variável para dados de comprimento fixo. Os dados resultantes são chamados de códigos hash. Ao contrário dos algoritmos de criptografia, o código Hash não pode ser revertido para os dados originais Função Hash
  13. Método usado para autenticar informações. A assinatura digital garante: •

    Autenticidade: o destinatário pode confirmar que a assinatura foi feita pelo emissor. • Integridade: qualquer alteração na mensagem faz com que a assinatura não corresponda mais ao documento. • Não repúdio: o remetente não pode negar a autenticidade da mensagem Assinatura Digital
  14. Aplicativo Móvel Software API RESTf ul JSON JSON HTTPS Espionagem

    de dados Tratamento de parâmetros Repetição de chamada Negação de serviço (DDoS) Uso não autorizado Vulnerabilidades
  15. 1.1 Obtém o timestamp 1.2. assina digitalmente o timestamp 1.3.

    Enviar timestamp, firma digital e payload da solicitação 2. Valida a assinatura digital APP Software 3. Valida se o cliente já não enviou o timestamp Unique Request ID
  16. Aplicativo Móvel Software API RESTf ul JSON JSON HTTPS Espionagem

    de dados Tratamento de parâmetros Repetição de chamada Negação de serviço (DDoS) Uso não autorizado Vulnerabilidades
  17. Padrão aberto para identificação e autenticação usado para fazer login

    em aplicativos que desejam usar API. O oAuth usa essencialmente tokens: • ID DO CLIENTE • CLIENT_SECRET • GRANT_CODE • ACCESS_TOKEN • REFRESH_TOKEN oAuth
  18. Fluxo utilizado para aplicativos próprios ou de terceiros, onde apenas

    a autenticação do aplicativo deve ser feita, ou seja, não é necessário autenticar o usuário do aplicativo. Dados de Autenticação: CLIENT_ID CLIENT_SECRET Aplicações Próprias Usuario ✗ ✓ Aplicações de Terceiros ✓ oAuth Client Credentials
  19. POST /recuperarVeiculos Site Cotação Auto POST /oauth/access-token access-token GET /veiculos

    Lista de Veiculos Empresa de Seguros oAuth Client Credentials API Gateway
  20. Fluxo usado por aplicativos proprietários, onde a autenticação do aplicativo

    e do usuário é necessária. Neste fluxo, o nome de usuário e a senha são inseridos no aplicativo. Dados de Autenticação: CLIENT_ID CLIENT_SECRET username password Aplicações Próprias Usuario ✗ ✓ Aplicações de Terceiros ✓ oAuth Password
  21. GET /users/{id} APP Próprio POST /oauth/access-token access-token GET /users/{id} Dados

    do usuário POST /autenticarUsuario Empresa oAuth Password API Gateway
  22. Fluxo usado por aplicativos de terceiros (ou seus próprios aplicativos)

    em que o aplicativo e a autenticação do usuário do aplicativo devem ser feitos. Nesse fluxo, o nome de usuário e a senha são inseridos em uma tela de autenticação, que geralmente é exibida por meio de uma janela pop-up. Dados de Autenticação: CLIENT_ID CLIENT_SECRET username password Aplicações próprias Usuario ✓ Aplicações de terceiros ✓ ✓ oAuth Authorization Code
  23. GET users?document=123 Callback com o grant-code Autenticação de Usuário POP-UP

    POST /oauth/grant-code POST /oauth/access-token access-token GET /users?document=12 Clientes com o documento solicitado Empresa dona dos dados do Cliente Empresa Parceira oAuth Authorization Code API Gateway
  24. Fluxo usado para aplicativos proprietários ou aplicativos de terceiros que

    não são capazes de armazenar um client_secret. Neste fluxo, o nome de usuário e a senha são inseridos em uma tela de autenticação. ACCESS_TOKEN é devolvido ao aplicativo por meio de REDIRECT_URI, previamente cadastrado no portal do desenvolvedor. Datos de autenticación: CLIENT_ID username password Aplicaciones Proprias Usuario ✓ Aplicaciones de terceros ✓ ✓ oAuth Implicit
  25. Fluxo Aplicações Próprias Aplicações de Terceiros Autenticação de Aplicação Autenticação

    de usuário Autenticação de Aplicação Autenticação de usuário Client Credentials ✓ ✗ ✓ ✗ Resource Owner Password Credentials ✓ ✓ Não utilizar Não utilizar Authorization Code Considere usar o fluxo: Resource Owner Password Credentials Considere usar o fluxo: Resource Owner Password Credentials ✓ ✓ Implicit ✓ ✓ ✓ ✓ oAuth
  26. Algo que você SABE Algo que você TEM Algo que

    você É + + Two or Three factor authentication
  27. Autenticação X Autorização AUTENTICAÇÃO AUTORIZAÇÃO • Valida a identidade do

    usuário! • O usuário possui credenciais válidas? • Qual o nível de autorização do usuário? Ele pode criar e deletar objetos? Ele pode apenas recuperar? • Pode verificar apenas dados que pertencem a ele?
  28. Aplicativo Móvel Software API RESTf ul JSON JSON HTTPS Espionagem

    de dados Tratamento de parâmetros Repetição de chamada Negação de serviço (DDoS) Uso não autorizado Vulnerabilidades
  29. • Firewall de aplicativo da Web (WAF) • Plataforma de

    gerenciamento de API • Monitore o tráfego da API (de preferência com alertas) • Identifique o comportamento malicioso • Limite o uso de aplicativos • Conecte a detecção de fraude empresarial Negação de Serviço
  30. ENABLED BY AMBEV Básico Intermediário Crítico ❑ Quanto você conhece

    dos Client Apps? ❑ As APIs dão acesso a informações sensíveis? ❑ As APIs alteram dados importantes? Níveis de Criticidade
  31. ENABLED BY AMBEV Crítico ❑ Quanto você conhece dos Client

    Apps? ❑ As APIs dão acesso a informações sensíveis? ❑ As APIs alteram dados importantes? Básico Intermediário Crítico API totalmente pública, potencialmente centenas de Apps externos Alguns Apps externos de parceiros bem conhecidos Somente Apps desenvolvidos pela própria empresa Níveis de Criticidade
  32. ENABLED BY AMBEV ❑ Quanto você conhece dos Client Apps?

    ❑ As APIs dão acesso a informações sensíveis? ❑ As APIs alteram dados importantes? Básico Intermediário Crítico Registros médicos, transações financeiras ou dados vitais ao negócio Informações sociais, Internet das coisas Informações acessórias não relacionadas a usuários Níveis de Criticidade
  33. ENABLED BY AMBEV ❑ Quanto você conhece dos Client Apps?

    ❑ As APIs dão acesso a informações sensíveis? ❑ As APIs alteram dados importantes? Básico Intermediário Crítico Todas as operações (inclusive DELETEs) em elementos e coleções de recursos GETs e alguns POSTs e PUTs em recursos não vitais Somente GETs Níveis de Criticidade
  34. • Avanço da Segurança de APIs + Inteligência Artificial; •

    A Criptografia dos dados estará mais presente; • O momento de design da API terá uma parte especial para a segurança. O Futuro da Segurança de APIs
  35. • Conheça o publico da sua API! • Antes de

    expor sua API, avalie a criticidade da mesma, até em nível de métodos. • Além de gerenciar bem a autenticação, não se esqueça de trabalhar com autorização! • Nunca retorne o stack trace no body de uma requisição! • Acompanhe o OWASP API Security • Use rate limit e controle seus APPs consumidores. Resumindo