Daniel Varanda fala sobre Segurança de APIs.
Vulnerabilidades
- Uso não autorizado
- Espionagem de dados
- Manipulação de parâmetros
- Repetição de chamadas
- Negação de Serviço (DDoS)
Contra medidas
- oAuth
- OpenID
- JWT
- Multi-Factor Authentication
- Criptografia (AES, RSA)
- Assinatura Digital
- Unique Request ID
- WAF
Dicas e boas práticas
- API Gateway / Platform
- OWASP
- SDK
3. É possível hackear um marcapasso e matar o paciente
https://canaltech.com.br/hacker/perigos-da-tecnologia-e-possivel-hackear-um-marcapasso-e-matar-o-paciente-82795
EUA fazem recall de 465 mil marcapassos vulneráveis a hackers
https://oglobo.globo.com/sociedade/tecnologia/eua-fazem-recall-de-465-mil-marcapassos-vulneraveis-hackers-21774337
4. Brecha em app fitness revela dados de militares e funcionários de
inteligência
https://canaltech.com.br/seguranca/brecha-em-app-fitness-revela-dados-de-militares-e-funcionarios-de-inteligenci-117680
5. Polícia flagra 'furto hacker' de carro sem as chaves
https://g1.globo.com/carros/noticia/video-veja-como-e-o-furto-hacker-de-carro-sem-as-chaves.ghtml
6. McDonalds India is leaking 2.2 million users data
https://hackernoon.com/mcdonalds-india-is-leaking-2-2-million-users-data-d5758b2eb3f8
7. Falha de segurança no Tinder provoca vazamento de milhares de fotos
https://canaltech.com.br/seguranca/falha-de-seguranca-no-tinder-provoca-vazamento-de-milhares-de-fotos-93038
8. Dados pessoais de famosos foram roubados do Instagram
https://www.noticiasaominuto.com/tech/856103/dados-pessoais-de-famosos-foram-roubados-do-instagram
11. API (em português: Interface de Programação de Aplicação), é um conjunto de
rotinas e padrões estabelecidos por um software para utilização de suas
funcionalidades por aplicativos que não pretendem envolver-se em detalhes
de implementação do software, mas apenas utilizar suas funcionalidades.
Exemplos: RMI, JMS, trocas de arquivo
Web API é uma das formas possíveis para construção de APIs, onde as trocas
de informações entre as aplicações são feitas através da Internet (mais
especificamente através do protocolo de transporte HTTP).
Exemplos: RESTful, GraphQL, WebService SOAP
16. oAuth
Esses tokens são emitidos durante a criação do aplicativo
ou a partir de um dos fluxos do oAuth
Client Credentials
Resource Owner Password Credentials
Authorization code
Implicit
Refresh token
17. oAuth
Client Credentials
Fluxo utilizado por aplicativos próprios ou aplicativos de terceiros, onde é
necessário que seja feita a autenticação apenas do aplicativo, ou seja, não é
necessário autenticar o usuário do aplicativo.
Dados para Autenticação:
CLIENT_ID
CLIENT_SECRET
Aplicativo
Próprio
Usuário
✗✓ Aplicativo
de terceiro
✓
18. oAuth
Resource Owner Password Credentials
Fluxo utilizado por aplicativos próprios, onde é necessário que seja feita a
autenticação do aplicativo e do usuário do aplicativo.
Nesse fluxo, o login e senha do usuário são digitados no próprio aplicativo.
Aplicativo
Próprio
Usuário
✓✓ Aplicativo
de terceiro
✗
Dados para Autenticação:
CLIENT_ID
CLIENT_SECRET
Login
Senha
19. oAuth
Authorization code
Fluxo utilizado por aplicativos de terceiros (ou aplicativos próprios), onde é
necessário que seja feita a autenticação do aplicativo e do usuário do
aplicativo.
Nesse fluxo, o login e senha do usuário é digitado em uma tela de
autenticação, normalmente exibida através de uma janela popup.
Aplicativo
Próprio
Usuário
✓✓ Aplicativo
de terceiro
✓
Dados para Autenticação:
CLIENT_ID
CLIENT_SECRET
Login
Senha
20.
21. oAuth
Implicit
Fluxo utilizado por aplicativos próprios ou aplicativos de terceiros que não
são capazes de armazenar um CLIENT_SECRET.
Nesse fluxo, o login e senha do usuário é digitado em uma tela de
autenticação. O ACCESS_TOKEN é retornado para o aplicativo através da
REDIRECT_URI do aplicativo, previamente cadastrada no portal do
desenvolvedor.
Aplicativo
Próprio
Usuário
✓✗✓ Aplicativo
de terceiro
✓
Dados para Autenticação:
CLIENT_ID
Login
Senha
22.
23. oAuth
Fluxo
Aplicativo Próprio Aplicativo de Terceiro
Autenticação do
Aplicativo
Autenticação do
Usuário
Autenticação do
Aplicativo
Autenticação do
Usuário
Client Credentials ✓ ✗ ✓ ✗
Resource Owner Password
Credentials ✓ ✓ Não utilizar Não utilizar
Authorization Code
Avalie utilizar o fluxo:
Resource Owner Password
Credentials
Avalie utilizar o fluxo:
Resource Owner Password
Credentials
✓ ✓
Implicit ✓ ✓ ou ✗ ✓ ✓ ou ✗
25. OpenID
Padrão aberto que permite que usuários
sejam autenticados por sites
cooperantes, facilitando a transferência
de atributos do usuário, como: nome,
email, gênero...
35. Criptografia Simétrica
Algoritmos de criptografía simétrica são
algoritmos que utilizam a mesma chave para
criptografar e descriptografar a informação
38. Criptografia Assimétrica
Algoritmos de criptografia assimétrica
requer um par de chaves, uma delas privada
(secreta) e a outra pública
Apesar de diferentes, as chaves são
matematicamente ligadas. Quando a
criptografia é feita com uma das chaves a
descriptografia só poderá ser feita com a
outra chave do par
Chave Privada Chave Pública
42. 2. Obter chave pública
3.1 Gerar uma chave simétrica randômica
3.2. Criptografar chave simétrica com a chave pública
3.3. Enviar a chave criptografada
4. Descriptografar a chave simétrica
com a chave privada
APP Software
1. Gerar par de chave assimétrica
44. Função Hash
Função hash é um algoritmo que mapeia
dados de comprimento variável para dados
de comprimento fixo. O dado resultante é
chamado de hash code
Diferente dos algoritmos de criptografia, o
hash code não pode ser revertido para o
dado original
49. Assinatura Digital
A assinatura digital garante:
● Autenticidade: o receptor pode confirmar que a assinatura foi feita
pelo emissor
● Integridade: qualquer alteração da mensagem faz com que a
assinatura não corresponda mais ao documento
● Não-repúdio: o emissor não pode negar a autenticidade da
mensagem
52. 1.1 Obter timestamp
1.2. Assinar digitalmente o timestamp
1.3. Enviar timestamp, assinatura digital e payload da requisição
2. Validar assinatura digital
APP Software
3. Validar se o timestamp é único
para esse client
54. ❖ WAF (Web Application Firewall)
❖ API Management Platform
❖ Monitorar o tráfego nas APIs
(preferencialmente com alertas)
❖ Identificar comportamento malicioso
❖ Limitar o uso dos Apps
❖ Plugar detecção de Fraude de negócio
60. Níveis de Criticidade
Crítico
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As APIs alteram dados
importantes?
Somente Apps desenvolvidos pela
própria empresa
Informações acessórias não
relacionadas a usuários
Básico
Intermediário
Crítico
61. Níveis de Criticidade
❖ 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
API totalmente pública,
potencialmente centenas de Apps
externos
Alguns Apps externos de parceiros
bem conhecidos
Crítico
Uso interno, apenas
62. Níveis de Criticidade
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
Registros médicos, transações
financeiras ou dados vitais ao
negócio
Informações sociais,
Internet das coisas
Crítico
Informações públicas, cotação de
preços
63. Níveis de Criticidade
Somente Apps desenvolvidos pela
própria empresa
Informações acessórias não
relacionadas a usuários
❖ 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
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
Crítico
65. Dicas e Boas Práticas
Lembre-se dos mecanismos de segurança:
❖ oAuth (use o fluxo correto)
❖ OpenID
❖ JWT
❖ Two or Three factor authentication
❖ Criptografia (simétrica e assimétrica)
❖ Assinatura Digital
❖ Unique Request ID
Tap to Pay
66. Dicas e Boas Práticas
Crie SDKs para operações comuns
❖ Obter chave pública
❖ Gerar chave AES
❖ Criptografar e enviar chave AES
❖ Criptografar payloads
❖ Gerar Unique Request ID
❖ Assinatura Digital
67. Dicas e Boas Práticas
APP SoftwareAPIAPI API Gateway
Implementação do CoreRequisitos não funcionais
Separation of Concerns