O que é segurança de APIs?

Grande parte da internet moderna depende de APIs para funcionar. A segurança de APIs é o processo de proteção das APIs contra ataques e violações de dados.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Entenda as ameaças comuns de segurança de APIs
  • Explicar a autenticação e autorização de APIs
  • Descrever técnicas para manter as APIs seguras

Conteúdo relacionado


Quer saber mais?

Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.

Consulte a política de privacidade da Cloudflare para saber como coletamos e processamos seus dados pessoais.

Copiar o link do artigo

O que é segurança de APIs?

Uma interface de programação de aplicativos (API) é uma forma de um software interagir com outro software. Se um programa ou aplicativo possui uma API, clientes externos podem solicitar serviços dela.

A segurança da APIs é o processo de proteção das APIs contra ataques. Assim como aplicativos, redes e servidores podem estar sujeitos a ataques, as APIs podem ser vítimas de várias ameaças diferentes.

A segurança de APIs é um componente essencial da segurança de aplicativos web. A maioria dos aplicativos web modernos depende de APIs para funcionar e as APIs apresentam riscos adicionais a um aplicativo, permitindo que terceiros o acessem. Uma comparação é uma empresa que abre seu escritório ao público: ter mais pessoas nas instalações, algumas das quais podem ser desconhecidas dos funcionários da empresa, apresenta maior risco. Da mesma forma, uma API permite que pessoas de fora usem um programa, introduzindo mais riscos à infraestrutura do serviço de API.

Quais são alguns riscos comuns de segurança de APIs?

  • Explorações de vulnerabilidade: uma exploração de vulnerabilidade ocorre quando um invasor envia dados especialmente criados para um alvo, que se aproveitam de uma falha na construção do alvo. Essas falhas, conhecidas como "vulnerabilidades", podem facultar ao invasor várias formas de acesso não intencional a uma API ou seu aplicativo correspondente. O Open Web Application Security Project (OWASP) mantém uma lista das 10 principais vulnerabilidades de API, como injeção de SQL, configuração incorreta de segurança e outras. Se estiver visando uma vulnerabilidade anteriormente desconhecida, a exploração é chamada de ameaça de dia zero. São ameaças extremamente difíceis de deter.
  • Ataques baseados em autenticação: os clientes precisam se autenticar antes de fazer solicitações de API para que o servidor de API não aceite solicitações de fontes desconhecidas ou ilegítimas. Existem várias maneiras de fazer isso, mas cada maneira está sujeita a comprometimento. Por exemplo, um invasor pode obter as credenciais de um cliente legítimo, roubar uma chave de API ou interceptar e usar um token de autenticação.
  • Erros de autorização: a autorização determina o nível de acesso que cada usuário tem. Se a autorização não for gerenciada com cuidado, um cliente de API pode ter acesso a dados que não deveriam estar disponíveis para ele, aumentando a chance de violação de dados.
  • Ataques DoS e DDoS: muitas solicitações direcionadas a uma API podem retardar ou interromper o serviço para outros clientes. Alguns invasores direcionarão um excesso de solicitações para uma API de propósito em um ataque de negação de serviço (DoS) ou de negação de serviço distribuída (DDoS).

As estratégias de segurança de APIs podem ajudar a mitigar esses e outros riscos.

Medidas de autenticação e autorização fortes ajudam a garantir que os dados não vazem e apenas clientes autorizados façam solicitações de API. A proteção contra DDoS e a limitação de taxa podem encerrar ataques DDoS. A validação de esquema e o uso de um firewall de aplicativos web (WAF) podem bloquear explorações de vulnerabilidades.

Como a limitação de taxa e a mitigação de DDoS ajudam a proteger as APIs?

A Limitação de taxa limita a frequência com que alguém pode repetir uma ação dentro de um determinado período de tempo. Se um cliente de API exceder o número de solicitações permitidas, a limitação de taxa descartará ou bloqueará outras solicitações por um período de tempo.

A mitigação de DDoS ajuda a parar ataques DoS e DDoS. Em um ataque DDoS, um invasor tenta sobrecarregar uma API com muitas solicitações em um curto período de tempo. Muitas vezes, essas solicitações vêm de várias fontes diferentes.

A limitação de taxa e a mitigação de DDoS são fundamentais para as APIs por alguns motivos:

  1. parar ataques DoS e DDoS. Ao bloquear ou descartar as solicitações extras, a limitação de taxa e a mitigação de DDoS protegem a API de ficar sobrecarregada. A limitação de taxa por si só pode não interromper os ataques DDoS baixos e lentos, mas a mitigação de DDoS pode absorver o tráfego extra independentemente.
  2. Fora dos ataques intencionais, alguns clientes podem simplesmente usar API em excesso. Isso custa o serviço de API em termos de poder de computação e pode diminuir o serviço para outros clientes. A limitação de taxa ajuda a evitar que o servidor de API fique sobrecarregado.

Como as explorações de vulnerabilidade são bloqueadas?

Para que uma exploração de vulnerabilidade funcione, as solicitações de API maliciosas devem ser estruturadas de forma que façam com que a API responda de uma maneira que seus arquitetos não pretendiam. Existem várias maneiras pelas quais os desenvolvedores de API podem bloquear essas solicitações maliciosas. Duas das mais importantes a saber são:

  1. Validação de esquema
  2. Regras de WAF

Validação de esquema

O esquema de uma API descreve o comportamento esperado de uma API: o tipo de solicitações que deve receber e o tipo de respostas que deve fornecer. Solicitações inválidas que não estão em conformidade com esse esquema podem fazer com que uma API se comporte de maneira inesperada, resultando potencialmente em vazamento de dados. A validação do esquema identifica solicitações e respostas inválidas. Ao bloquear respostas inválidas, os desenvolvedores de API podem evitar alguns tipos de ataques e ajudar a evitar vazamentos de dados.

Regras de firewall de aplicativos web (WAF)

Um WAF funciona como um firewall tradicional, pois bloqueia algumas solicitações e respostas de rede e permite a passagem de outras. Ele faz isso com base em um conjunto de regras: se uma solicitação ou resposta viola uma regra ou está em conformidade com uma regra, ela é bloqueada. Um WAF é implantado na frente de uma API ou de um aplicativo web e monitora o tráfego HTTP.

É possível configurar regras WAF que bloqueiam padrões de solicitações e respostas, que visam uma vulnerabilidade. As regras WAF também podem bloquear solicitações de determinados endereços de IP, o que ajuda a parar ataques de bots e outros invasores.

Por que a autenticação e a autorização são tão importantes para a segurança de APIs?

A autenticação garante que as solicitações de API estão vindo de uma fonte legítima. A autorização permite que o servidor de API saiba se o cliente ou endpoint solicitantes estão autorizados a obter os dados solicitados.

Suponha que a Alice construa uma API e o Bob construa um aplicativo web que use a API da Alice. Quando o aplicativo do Bob envia uma solicitação de API para a API da Alice, ele anexa um rótulo que diz "isto veio do Bob" à solicitação. Isso autentica a solicitação do Bob para que o servidor da API da Alice saiba tratar a solicitação como legítima.

O servidor de API da Alice também verifica quais privilégios o Bob tem. Se a solicitação do Bob for para dados que a API da Alice rotulou como "Bob pode ver isso", o servidor atende à solicitação. No entanto, a API da Alice pode ter uma seção de dados rotulada "não é para o Bob" e o servidor não deve atender a uma solicitação desses dados quando Bob for o solicitante. É por isso que a autorização é importante.

(Na realidade, Bob anexaria uma chave ou alguma outra forma de autenticação às solicitações de API, não apenas um rótulo que diz "isto veio do Bob").

Há vários métodos de autenticação para APIs. Os mais comuns são:

1. Chave de API

O cliente recebe uma chave — uma sequência de caracteres exclusiva que somente ele e o serviço de API conhecem. A chave é anexada a cada solicitação de API. O servidor de API verifica a chave quando recebe uma solicitação de API para garantir que seja de um cliente autenticado.

A desvantagem desse método de autenticação é que, se a chave for roubada, um invasor poderá usá-la para se passar por um cliente legítimo e realizar vários ataques. É importante criptografar solicitações e respostas de e para uma API usando um protocolo de criptografia como Transport Layer Security (TLS) — dessa forma, a chave não é exposta em texto não criptografado ao cruzar a internet.

2. Nome de usuário e senha

As solicitações de API podem usar credenciais típicas de nome de usuário e senha para autenticação por meio de um método chamado autenticação HTTP. Na autenticação HTTP, um nome de usuário e uma senha são codificados e adicionados ao cabeçalho HTTP para todas as solicitações de API. O servidor pode verificar essas credenciais em relação às credenciais de clientes permitidos para autenticar as solicitações.

Essa abordagem vem com todos os desafios normalmente associados às senhas: as senhas podem ser perdidas, vazadas, roubadas, adivinhadas ou compartilhadas com partes não confiáveis. As senhas também estão sujeitas a ataques de preenchimento de credenciais e de força bruta, entre outros.

3. Token de OAuth

Em vez de exigir autenticação diretamente do cliente, um servidor de API pode obter um token de autenticação de um servidor de autenticação confiável usando o protocolo OAuth. Para usar a API, um usuário faz login em um serviço de terceiros em vez de fazer login diretamente na API. Assim como a abordagem de nome de usuário e senha, esse método de autenticação é vulnerável a ataques preenchimento de credenciais e outros.

4. TLS mútuo (mTLS)

TLS é o protocolo de criptografia que cria uma conexão criptografada e autenticada entre o cliente e o servidor ao carregar páginas da web. O TLS também pode verificar e autenticar ambas as extremidades de uma conexão de API.

No TLS mútuo (mTLS), tanto o cliente quanto o servidor têm um certificado TLS e se autenticam mutuamente usando esses certificados, garantindo que ambos sejam quem alegam ser, sem precisar depender de senhas ou de outros métodos de autenticação.

No entanto, a implementação do mTLS pode ser um desafio: todos os clientes e endpoints de API precisam ter certificados TLS legítimos, o que pode ser difícil de aplicar e manter.

O que é API Shield?

O Gateway de API da Cloudflare permite vários recursos de segurança de APIs a partir de um único painel para proteger contra riscos comuns de segurança de APIs. O Gateway de API inclui:

  • mTLS para autenticação de endpoints de API
  • validação de esquema, que usa um modelo de segurança positivo para permitir apenas solicitações que estejam em conformidade com o esquema da API
  • prevenção de perda de dados (DLP), que escaneia o tráfego que sai de uma API para verificar se há dados sensíveis
  • taxa de limitação e mitigação de DDoS para garantir que as APIs não fiquem sobrecarregadas

Saiba mais sobre o Gateway de API.