Como o APISIX protege contra as 10 principais ameaças de segurança de API da OWASP

Bobur Umurzokov

Bobur Umurzokov

October 6, 2023

Technology

Com o aumento do uso e da dependência de APIs no cenário digital interconectado de hoje, as ameaças de segurança direcionadas a elas também cresceram ao longo dos anos. Em 2023, o Open Web Application Security Project (OWASP) identificou as novas Top 10 ameaças à segurança de APIs. Neste post do blog, exploraremos cada ameaça e aprenderemos como o APISIX pode proteger contra elas com exemplos.

O OWASP é uma comunidade globalmente reconhecida que publica regularmente pesquisas relacionadas à cibersegurança.

Aqui está a lista de riscos de segurança mencionados pelo OWASP:

  1. Autorização de Nível de Objeto Quebrada
  2. Autenticação Quebrada
  3. Autorização de Nível de Propriedade de Objeto Quebrada
  4. Consumo de Recursos Ilimitado
  5. Autorização de Nível de Função Quebrada
  6. Acesso Ilimitado a Fluxos de Negócios Sensíveis
  7. Falsificação de Solicitação do Lado do Servidor (SSRF)
  8. Configuração de Segurança Incorreta
  9. Gerenciamento de Inventário Improprio
  10. Consumo Inseguro de APIs

1. Autorização de Nível de Objeto Quebrada

Ameaça: As APIs frequentemente expõem endpoints que lidam com identificadores de objetos, o que pode levar a problemas de Controle de Acesso em Nível de Objeto. Ataques podem explorar essas vulnerabilidades para obter acesso não autorizado a dados.

Autorização de Nível de Objeto Quebrada

Exemplo: Uma instituição de saúde oferece um portal online para pacientes. Devido a uma falha no design do portal, uma vez que um paciente é autenticado, ele pode modificar a URL ou os parâmetros da solicitação para acessar registros médicos associados a um ID de paciente diferente. Por exemplo, um paciente chamado Steve faz login no portal do paciente para visualizar seus registros médicos. Seus registros são acessíveis via URL https://healthportal.com/patient/123. Curioso, Steve muda a URL para https://healthportal.com/patient/124 e descobre que agora pode visualizar os registros médicos de outro paciente. Isso expõe uma violação significativa de privacidade e viola regulamentações como a Lei de Portabilidade e Responsabilidade de Seguros de Saúde (HIPAA).

Recomendação: Implemente um mecanismo de autorização adequado que dependa das políticas e hierarquias do usuário. O gateway APISIX suporta fluxos de autorização baseados em OAuth2 ou JWT com a ajuda de plugins. Você pode usar a política OAuth2 para verificar o token em cada solicitação.

Use controle de acesso refinado através do sistema de Controle de Acesso Baseado em Funções (RBAC) do APISIX, integrando com o Open Policy Agent (OPA). Ao configurar funções e permissões específicas no APISIX e associar essas funções a usuários ou tokens específicos, você pode garantir que as solicitações a endpoints sensíveis sejam devidamente autorizadas.

2. Autenticação Quebrada

Ameaça: Mecanismos de autenticação implementados incorretamente podem permitir que atacantes comprometam tokens de autenticação ou simplesmente forcem endpoints de login, pois não há limitação de taxa.

Autenticação Quebrada

Exemplo: O sistema bancário implementou um mecanismo de autenticação personalizado. No entanto, devido à falta de revisão e teste de segurança adequados, havia uma vulnerabilidade no fluxo de autenticação. Especificamente, após um usuário inserir seu nome de usuário e senha, o sistema gerava um token de sessão previsível, como uma combinação do nome de usuário e um carimbo de data/hora. Um atacante, ciente desse defeito, poderia facilmente prever o token de sessão de outro usuário.

Recomendação: Primeiro, entenda todos os fluxos de autenticação possíveis para a API e não reinvente a roda na autenticação! O APISIX suporta o fluxo de autorização padrão OpenID Connect (OIDC). Em vez de tokens de sessão previsíveis, o APISIX pode se integrar a provedores de identidade externos como Keycloak ou sistemas de gerenciamento de sessão usando plugins para garantir que os tokens de sessão sejam aleatórios, criptografados e tenham um tempo de vida limitado.

Para prevenir ataques de força bruta em contas de usuários, o plugin de limitação de taxa do APISIX pode ser usado. Isso garante que, se houver várias tentativas de login malsucedidas em um curto período, o IP ou usuário seja temporariamente bloqueado. Para garantir a privacidade e integridade dos dados, o APISIX suporta criptografia SSL/TLS. Isso garante que as credenciais do usuário e outros dados sensíveis sejam criptografados durante a transmissão.

3. Autorização de Nível de Propriedade de Objeto Quebrada

Ameaça: Essa ameaça surge da falta ou validação inadequada de autorização no nível de propriedade do objeto, levando à exposição ou manipulação não autorizada de informações.

Autorização de Nível de Propriedade de Objeto Quebrada

Exemplo: A API de uma plataforma de compras online permite que usuários registrados atualizem detalhes de seu perfil, como nome, e-mail, endereço de entrega e detalhes de pagamento. Além disso, cada perfil de usuário tem uma propriedade chamada userType, que pode ser regular ou admin. Devido a um problema no design da API, os usuários também podem modificar a propriedade userType em suas solicitações de atualização de perfil. Suponha que Alice, uma usuária regular, descubra essa falha ao inspecionar as solicitações da API usando as ferramentas de desenvolvedor do navegador. Ela percebe que, ao atualizar seu perfil, um payload JSON é enviado ao servidor. Alice modifica o valor de userType para admin e envia a solicitação. Para sua surpresa, seu perfil é atualizado, e ela agora tem privilégios administrativos na plataforma, permitindo que ela acesse dados sensíveis, modifique listagens de produtos e até visualize históricos de pedidos de outros usuários.

Recomendação: Certifique-se de que as propriedades de objeto expostas sejam acessíveis ao usuário e mantenha as estruturas de dados retornadas mínimas, com base nos requisitos de negócios. Para isso, você pode usar o plugin de validação de solicitação do APISIX, que pode validar solicitações recebidas em relação a um esquema predefinido. Ou use o sistema RBAC do APISIX para configurar funções para usuários regulares e administradores. Para remover dados desnecessários expostos ao cliente, o APISIX fornece um plugin de reescrita de resposta que pode modificar a resposta da API em tempo real.

4. Consumo de Recursos Ilimitado

Ameaça: Ataques podem explorar APIs para consumir recursos excessivos, levando a ataques de Negação de Serviço ou aumento dos custos operacionais.

Consumo de Recursos Ilimitado

Exemplo: Um serviço de armazenamento de arquivos em nuvem permite que os usuários façam upload e armazenem arquivos, compartilhem-nos com outros e acessem-nos de qualquer lugar. O serviço não tem restrições sobre o número de arquivos que um usuário pode fazer upload simultaneamente ou o tamanho de cada arquivo. Como resultado, um usuário malicioso ou um bot pode fazer upload de um número enorme de arquivos extremamente grandes em rápida sucessão, consumindo uma quantidade significativa de recursos do servidor. Isso pode levar a tempos de resposta mais lentos para outros usuários, possíveis falhas do servidor e aumento dos custos de infraestrutura para o provedor de serviços.

Recomendação:

  • Defina e imponha tamanhos máximos de dados para todos os parâmetros e payloads recebidos. Use o plugin de controle de cliente para definir o tamanho máximo do corpo da solicitação, de modo que os usuários não possam fazer upload de arquivos excessivamente grandes. Ou use o plugin de validação de solicitação para validar strings de consulta, especialmente aquelas que controlam o número de registros retornados. Para bloquear um bot, script ou agente de usuário que envie dados indesejados, você pode aproveitar o plugin de restrição de agente de usuário.
  • Implemente limitação de taxa com base nas necessidades de negócios. O APISIX fornece plugins de limitação de solicitação, limitação de conexão e limitação de contagem que podem restringir a taxa na qual um usuário individual ou endereço IP pode fazer solicitações. Isso garante que os usuários não possam inundar o sistema com um grande número de solicitações rápidas.

5. Autorização de Nível de Função Quebrada

Ameaça: As políticas de controle de acesso às vezes são muito complexas, com vários níveis, grupos e funções, e uma distinção confusa entre funções administrativas e padrão, muitas vezes resultando em vulnerabilidades de permissão. Ataques podem aproveitar essas fraquezas para acessar recursos de outros usuários ou funcionalidades administrativas.

Autorização de Nível de Função Quebrada

Exemplo: Uma plataforma de aprendizado online oferece vários cursos para estudantes. Com problemas no design da plataforma, os estudantes podem acessar funcionalidades exclusivas de instrutores manipulando URLs ou endpoints de API. Por exemplo, um estudante pode descobrir que, ao mudar a URL de /student/dashboard para /instructor/dashboard, ele pode acessar o painel do instrutor, permitindo que ele modifique o conteúdo do curso, avalie tarefas ou até adicione/remova cursos.

Recomendação:

  • Negue todo o acesso por padrão e exija concessões explícitas para funções específicas. Com o APISIX, você pode criar um consumidor ou um grupo de consumidores para fornecer diferentes controles de acesso para usuários. Em seguida, o plugin de autenticação JWT pode ser configurado para incluir informações de função no token JWT. Quando um usuário faz login, o token JWT que ele recebe conterá sua função (estudante ou instrutor). O APISIX pode então verificar a função do usuário a partir do token JWT antes de conceder acesso a funções específicas.
  • Certifique-se de que os controladores administrativos herdem de um controlador que implementa verificações de autorização com base nas funções do usuário. Se você usar o API7 Enterprise, ele permite que os administradores limitem o acesso à API a usuários/grupos específicos e configurem o acesso com base em solicitações e usuários individuais.

6. Acesso Ilimitado a Fluxos de Negócios Sensíveis

Ameaça: Fluxos de negócios sensíveis são expostos sem avaliação de risco sobre como a funcionalidade pode prejudicar o negócio se usada de forma automatizada e excessiva.

Acesso Ilimitado a Fluxos de Negócios Sensíveis

Exemplo: Usando uma combinação de proxies e scripts automatizados (bots), o atacante simula vários usuários reais fazendo compras. O script adiciona rapidamente o produto ao carrinho e conclui o processo de checkout, esgotando o estoque antes que os clientes reais tenham a chance de fazer uma compra. O atacante então revende esses produtos a um preço mais alto em outras plataformas. A plataforma do vendedor perde receita potencial, pois não pode vender os produtos aos clientes reais pelo preço pretendido.

Recomendação:

  • Implemente impressão digital de dispositivos para negar serviço a dispositivos de clientes inesperados. O APISIX pode ser integrado a plataformas de gerenciamento de identidade e acesso como Auth0, Authgear e assim por diante para habilitar diferentes mecanismos de autenticação, incluindo recursos de login biométrico em dispositivos.
  • Use mecanismos de detecção humana como captchas ou soluções biométricas avançadas. O mesmo que acima.
  • Analise o fluxo do usuário para detectar padrões não humanos. Você pode usar o API7 Enterprise para impor fatores extras de autenticação quando uma solicitação está associada a padrões não humanos, como altas velocidades entre diferentes locais de login ou detecção de bots.
  • Bloqueie endereços IP de fontes maliciosas conhecidas. O APISIX tem um plugin de restrição de IP para bloquear o acesso de um ou vários endereços IP.

7. Falsificação de Solicitação do Lado do Servidor (SSRF)

Ameaça: Ataques SSRF permitem que um atacante faça solicitações a recursos internos do servidor, potencialmente ganhando acesso a redes internas, sistemas de arquivos ou até mesmo executando comandos. Isso acontece quando um endpoint de API aceita uma URL ou parte dela como entrada e a busca sem validação adequada.

Falsificação de Solicitação do Lado do Servidor (SSRF)

Exemplo: Um endpoint de API aceita uma URL para buscar uma imagem da internet. Um usuário malicioso envia uma URL como http://169.254.169.254/latest/meta-data/ (um endpoint típico de metadados em ambientes de nuvem). O serviço busca a URL, pensando que é uma imagem, mas, em vez disso, recupera dados sensíveis como funções IAM, chaves secretas ou outros detalhes de configuração interna. O atacante então usa essas informações para ataques adicionais, como escalonamento de privilégios ou violações de dados.

Recomendação:

  • Validação de Entrada - Sempre valide e saneie as entradas. Evite aceitar URLs completas de fontes não confiáveis. Com o APISIX, você pode configurar um plugin de bloqueio de URI para aplicar regras de bloqueio a recursos internos.
  • Lista Branca - Permita apenas conexões a domínios ou IPs conhecidos e confiáveis. O mesmo pode ser feito com o plugin de restrição de IP do APISIX ou habilitar a restrição de referência para uma lista branca de domínios ou padrões de URL aceitáveis. Qualquer URL que não corresponda à lista branca é rejeitada.
  • Segmentação de Rede - Certifique-se de que seus servidores estejam segmentados e que recursos internos sensíveis não sejam diretamente acessíveis.

8. Configuração de Segurança Incorreta

Ameaça: Isso ocorre quando uma API não está configurada de forma segura, potencialmente expondo informações sensíveis ou concedendo permissões desnecessárias. Exemplos incluem mensagens de erro de log que revelam detalhes do servidor, métodos HTTP desnecessários habilitados ou credenciais padrão deixadas inalteradas.

Configuração de Segurança Incorreta

Exemplo: Um exemplo simples pode ser uma API expondo inadvertidamente um diretório .git, revelando código-fonte e histórico de commits. Outro exemplo, um usuário malicioso, ao usar sua plataforma, encontra uma mensagem de erro. Em vez de uma mensagem de erro genérica, ele vê um rastreamento de pilha detalhado revelando a estrutura do banco de dados, versões de software e caminhos de arquivos. Usando essas informações, ele identifica vulnerabilidades potenciais na plataforma. Além disso, ao pesquisar configurações incorretas comuns para tais plataformas, ele tenta fazer login com a conta de teste e consegue, concedendo-lhe acesso administrativo.

Recomendação:

  • Auditorias Regulares - Revise e atualize regularmente as configurações. Use ferramentas automatizadas para verificar configurações incorretas comuns. Com os plugins de log do APISIX, todas as atividades de acesso e sistema são registradas. Qualquer atividade incomum, como falhas repetidas de login ou acesso a endpoints restritos, pode ser sinalizada para revisão.
  • Princípio do Menor Privilégio - Conceda apenas as permissões necessárias e evite usar configurações excessivamente permissivas.
  • Cabeçalhos de Segurança Padrão - O APISIX impõe padrões seguros com cabeçalhos de segurança essenciais, como Política de Segurança de Conteúdo (CSP) e Segurança de Transporte Estrito HTTP (HSTS), que são configurados. Isso reduz o risco de certos ataques baseados na web.
  • Mascaramento de Erros - Certifique-se de que as mensagens de erro sejam genéricas e não vazem informações sensíveis. O APISIX pode ser configurado para mascarar mensagens de erro detalhadas usando o plugin de reescrita de resposta ou um plugin de mascaramento de dados personalizado.

9. Gerenciamento de Inventário Improprio

Ameaça: À medida que as organizações crescem, elas frequentemente perdem o controle de todas as suas APIs, especialmente se não houver um gerenciamento centralizado. Isso pode levar a APIs esquecidas, desatualizadas ou desprotegidas que podem ser exploradas.

Gerenciamento de Inventário Improprio

Exemplo: É comum que várias versões de APIs sejam deixadas sem monitoramento. Ataques podem direcionar versões desatualizadas de APIs ou pontos de acesso não corrigidos. Eles também podem obter acesso não autorizado através de vulnerabilidades em conexões de terceiros.

Recomendação: Use a API Admin do APISIX para revisar e desativar regularmente rotas que não são mais necessárias e para manter o controle de todas as versões de API sem interromper aplicativos clientes. O Portal API7 fornece um painel de gerenciamento centralizado onde todas as APIs podem ser monitoradas e gerenciadas. Uma versão antiga de uma API pode ainda estar em execução e não ser mais usada. Através do painel, essa API pode ser identificada e desativada sem qualquer alteração de código no serviço de backend em si.

10. Consumo Inseguro de APIs

Ameaça: Ao integrar APIs de terceiros ou mesmo consumir APIs internas, se não for feito de forma segura, a ação pode expor o aplicativo a vulnerabilidades presentes nas APIs upstream.

Consumo Inseguro de APIs

Exemplo: Vamos pensar em um aplicativo móvel que permite que os usuários monitorem suas métricas de saúde, como frequência cardíaca, padrões de sono e atividade física. O aplicativo não tem validações e verificações de segurança rigorosas ao consumir essas APIs de terceiros. Um atacante identifica que uma das APIs integradas de rastreamento de nutrição é vulnerável e pode retornar dados maliciosos. Quando o aplicativo busca sugestões de planos de refeições dessa API, ele inadvertidamente recupera e processa payloads maliciosos, levando a possíveis violações de dados ou mau funcionamento do aplicativo.

Recomendação: Antes de integrar uma API de terceiros, verifique se ela é de uma fonte confiável e passou por avaliações de segurança.

  • Tratamento de Erros - Lide com respostas ou comportamentos inesperados de APIs consumidas sem expor vulnerabilidades.
  • Validação de Dados - Sempre valide e saneie os dados recebidos de APIs de terceiros. O APISIX pode ser integrado a Firewalls de Aplicação Web (WAF) para inspecionar e filtrar dados recebidos de APIs de terceiros. Isso pode detectar e bloquear padrões ou payloads maliciosos conhecidos. Também é possível ativar TLS/mTLS para serviços upstream para garantir a segurança do tráfego enquanto ele viaja pela rede interna.

Resumo

Aplicar as diretrizes de segurança sugeridas pelo OWASP API 2023 fornece um ponto de partida fundamental para proteger APIs. Usar os recursos do Gateway APISIX simplifica esse processo e reduz significativamente o custo de implementar mecanismos de prevenção recomendados pelo OWASP.

Recursos Relacionados

Tags: