Post banner | OWASP API Security Top 10
    securitycybersecurityowaspapi

OWASP API Security Top 10

Os 10 tipos de vulnerabilidades mais comuns em APIs de acordo com a OWASP!



Uma breve introdução APIs

As APIs (Application Programming Interface) são blocos fundamentais que sustentam a integração de sistemas e aplicativos, e desempenham um importante papel no funcionamento harmonioso do ecossistema digital e permite que diferentes plataformas, serviços e dispositivos se comuniquem e compartilhem informações entre si.

Tais interfaces ganharam destaque significativo na década de 1960, quando os primeiros sistemas operacionais começaram a oferecer interfaces de programação para que os desenvolvedores pudessem interagir com o hardware e o software subjacentes. À medida que a indústria da tecnologia crescia, as APIs foram ganhando complexidade e se popularizaram.

No entanto, foi com o surgimento da internet que as APIs assumiram um papel central na arquitetura da informação. Com o avanço da web, as APIs possibilitaram a comunicação entre diferentes servidores e aplicativos, abrindo caminho para o compartilhamento de dados e recursos de forma mais eficiente e segura, o que permitiu uma revolução na forma como os serviços digitais eram entregues e impulsionou a popularidade das APIs para além do universo tecnológico.

Diversas implementações de APIs têm moldado o cenário tecnológico, tornando-se pilares da conectividade moderna. Entre as mais populares, destacam-se REST APIs (Representational State Transfer), que têm se tornado uma escolha comum para criar interfaces simples, escaláveis e flexíveis, o GraphQL, introduzida pelo Facebook e que oferece maior controle ao cliente, permitindo que ele defina a estrutura dos dados necessários a SOAP (Simple Object Access Protocol), amplamente utilizada no passado para a troca de informações em formato XML.

Na atualidade, as APIs são responsáveis pela integração de sistemas complexos e pela criação de novas soluções inovadoras, sendo os mercados de e-commerce, serviços bancários, redes sociais e Internet das Coisas (IoT) os mais dependentes das APIs para viabilizar interações fluidas e experiências personalizadas aos usuários.

Riscos de segurança em APIs

Conforme mencionado, a crescente conectividade do mundo digital impulsionou o uso generalizado de APIs, no entanto, esse crescimento trouxe à tona uma série de desafios relacionados à segurança, o que tornou a proteção das APIs uma questão crítica e indispensável.

Por padrão, as APIs expõem a lógica da aplicação e dados sensíveis, como Informações de Identificação Pessoal (PII), e é por isso que as APIs se tornaram cada vez mais um alvo para ataques. Sem APIs seguras, as vantagens da inovação proporcionada são custosas.

Embora o tradicional OWASP Top 10 ainda faça sentido, é necessário listar os riscos de segurança relacionados a APIs. A segurança de APIs concentra-se em estratégias e soluções para entender e mitigar as vulnerabilidades únicas e os riscos de segurança associados à elas.

Exemplos como o vazamento de dados do Facebook em 2018, no qual uma API mal configurada expôs informações pessoais de milhões de usuários, ilustram a gravidade dos riscos associados à falta de segurança de APIs. Tais incidentes ressaltam a importância de implementar medidas sólidas de segurança, como a autenticação robusta, a criptografia de dados, o controle de acesso adequado e a validação rigorosa de entradas.

API Security Top 10 2023

O OWASP API Security Top 10 é um guia essencial e abrangente que identifica e destaca os dez principais riscos de segurança associados às APIs. Esse referencial oferece uma visão detalhada dos desafios exclusivos enfrentados pelas APIs e fornece orientações valiosas para proteger essas interfaces vitais no ecossistema digital. A seguir apresentaremos todos os itens que estão nessa cartilha.

Broken Object Level Authorization (API1:2023)

As vulnerabilidades mais comuns e prejudiciais estão relacionadas à manipulação de identificação (Id) para se passar por outros usuários e acessar dados.

Essas falhas podem levar à perda de dados, divulgação e manipulação de informações. Assim, para evitar tais problemas, é fundamental definir políticas de acesso aos dados e implementar controles associados.

Um exemplo de ataque desse tipo ocorreu no United States Postal Service (USPS). Nesse caso, foi constatada a falta da implementação adequada dos mecanismos de autenticação e autorização, o que permitiu que qualquer usuário pudesse acessar dados dos demais, ocasionando o vazamento de informações de aproximadamente 60 milhões de contas.

Broken Authentication (API2:2023)

Os mecanismos de autenticação frequentemente são implementados incorretamente, permitindo que invasores comprometam tokens de autenticação ou explorem falhas de implementação para assumir identidades de outros usuários. Para evitar esse problema é essencial bloquear tentativas de força bruta, implementar limites de requisições, validar a expiração dos tokens e garantir que métodos mais sensíveis como a troca de senhas tenham controles de verificação sólidos. Além disso, é fundamental seguir as melhores práticas para políticas de autenticação.

Um exemplo desse tipo de ataque ocorreu com o ocorreu com o Instagram, no qual o sistema de redefinição de contas exigia um código de seis dígitos. Assim, o invasor encontrou uma API para enviar suposições de códigos de redefinição, sendo que as tentativas eram limitadas a 200 requisições por IP. No entanto, o invasor demonstrou a capacidade de alternar entre 6.000 IPs em questão de segundos, o que resultou na apropriação de contas de usuários legítimos.

Broken Object PROPERTY Level Authorization (API3:2023)

A falta de validação de autorização adequada no nível das propriedades do objeto é um problema sério que pode levar à exposição ou manipulação de informações por partes não autorizadas. Isso pode causar alguns eventos, como a exploração dos endpoints da API para ler e/ou modificar valores do objeto, e mass alignment, possibilitando a atualização de elementos do objeto ao alterar com êxito argumentos da solicitação e exposição excessiva de dados, revelando informações sensíveis indesejadas.

Para prevenir tais problemas, é fundamental garantir que os usuários só possam acessar campos legítimos e previamente definidos, e retornar apenas a quantidade mínima de dados necessária para o caso de uso.

Um exemplo desse tipo de ataque ocorreu com a Experian, em que um site parceiro oferecia uma funcionalidade de elegibilidade para empréstimos usando a API da Experian para automatizar a consulta do score de crédito. O invasor interceptou chamadas da API, que estava acessível sem autorização, e os resultados retornavam informações pessoais (PII) usando apenas o nome e o endereço na solicitação.

Unrestricted Resource Consumption (API4:2023)

Atender às solicitações de API requer recursos, como largura de banda de rede, CPU, memória e armazenamento. Outros recursos, como e-mails, SMS, chamadas telefônicas ou validação biométrica, são disponibilizados por provedores de serviços por meio de integrações de API, sendo cobrados por solicitação. Ataques bem-sucedidos podem resultar Denial of service (DoS) ou aumento nos custos operacionais devido à falta de recursos e à falta de limitação de taxa e controle inadequado de tráfego, resultando em recuperação em massa de dados e interrupção das operações.

Um exemplo desse tipo de ataque ocorreu com o Venmo, na sua página inicial que apresentava um feed de transações em tempo real. O invasor interceptou o tráfego e identificou chamadas de API, conseguindo recuperar 115 mil transações por dia, mesmo com limites de taxa estabelecidos. A API retornava todos os detalhes das transações, o que resultou na obtenção não autorizada de dados sensíveis.

Broken Function Level Authorization (API5:2023)

Políticas de controle de acesso complexas com diferentes hierarquias, grupos e funções, além de uma separação pouco clara entre funções administrativas e regulares, podem resultar em vulnerabilidades de autorização. Os invasores podem explorar essas fragilidades abusando da funcionalidade da API para modificar (Create, Read, Update & Delete) objetos de forma imprópria. Frequentemente, eles substituem métodos passivos (GET) por métodos ativos (PUT, DELETE) para alcançar esse objetivo, e ao explorar essas questões, os atacantes podem obter acesso não autorizado a recursos de outros usuários e/ou funções administrativas.

A Bumble sofreu um ataque nesses moldes, no qual a API permitia o acesso detalhado de 95 milhões de contas de usuários, com ou sem autenticação. Os IDs incrementais facilitaram a extração de toda a base de dados pelos invasores, possibilitando o cálculo da localização exata dos usuários por meio de triangulação e, adicionalmente, a API permitia a ativação de certos recursos pagos sem exigir as devidas permissões.

Unrestricted Access to Sensitive Business Flows (API6)

Esse tipo de vulnerabilidade está muito mais associada a lógica de negócios e às decisões de produtos que podem representar riscos para as empresas. APIs vulneráveis a tal risco expõem um fluxo de negócios, como por exemplo comprar um ingresso ou publicar um comentário sem delimitar como a funcionalidade poderia prejudicar a empresa se usada excessivamente de maneira automatizada.

Ao criar uma funcionalidade na API, é importante entender qual fluxo de negócios ela expõe. A OWASP descreve claramente que a prevenção deve ser feita em colaboração entre o produto/negócio e a engenharia.

O planejamento de mitigação deve ser feito em duas camadas:

  • Produto/Negócio: identificar os fluxos de negócios que podem prejudicar a empresa se forem usados excessivamente;
  • Engenharia: escolher os mecanismos de proteção adequados para mitigar o risco comercial. Alguns dos mecanismos de proteção são mais simples, enquanto outros são mais difíceis de implementar.

Os métodos a seguir são usados para retardar ameaças automatizadas:

  • Identificação de dispositivo: negar serviço a dispositivos de cliente inesperados (como navegadores sem interface gráfica) tende a fazer com que os atores de ameaças usem soluções mais sofisticadas, portanto, mais custosas para eles.
  • Detecção de seres humanos: usar captcha ou soluções biométricas mais avançadas (como padrões de digitação).
  • Padrões não humanos: analisar o fluxo do usuário para detectar padrões não humanos (por exemplo, o usuário acessou as funções "adicionar ao carrinho" e "completar compra" em menos de um segundo).
  • Considere bloquear endereços IP de nós de saída do Tor e proxies conhecidos.
  • Acesse APIs diretamente consumidas por máquinas (como APIs de desenvolvedores e B2B) de forma segura e com restrição. Elas tendem a ser um alvo fácil para atacantes, pois frequentemente não implementam todos os mecanismos de proteção necessários.

Ao aplicar essas medidas, é possível reduzir consideravelmente os riscos associados à exploração automatizada de fluxos de negócios, protegendo a integridade de operações comerciais e prevenindo possíveis prejuízos causados por uso indevido de APIs.

SSRF - Server-Side Request Forgery (API7:2023)

Já bastante conhecida e presente no OWASP Top 10, a SSRF cria um canal para solicitações maliciosas, acesso a dados ou outras atividades fraudulentas, o que pode levar a vazamentos de dados. As falhas ocorrem quando uma API está buscando um recurso remoto sem validar a URL fornecida pelo usuário, permitindo que um invasor force a aplicação a enviar uma solicitação manipulada para um destino inesperado, mesmo quando protegido por um firewall ou uma VPN.

Os conceitos modernos no desenvolvimento de aplicações e serviços tornam o SSRF mais comum e perigoso. De fato, tecnologias modernas, como provedores de nuvem, Kubernetes e Docker, expõem canais de gerenciamento e controle por meio de HTTP em caminhos previsíveis e bem conhecidos. Esses canais são um alvo fácil para um ataque SSRF.

Também é mais desafiador limitar o tráfego de saída de sua aplicação, devido à arquitetura interconectada das aplicações.

Tal vulnerabilidade pode ser evitada com o isolamento do mecanismo de busca e consumo de recursos em sua rede. Geralmente esses mecanismos utilizam outros recursos remotos e não internos, daí porque é importante garantir um alto controle das origens remotas permitidas, tipos de mídia aceitos, desativar redirecionamentos HTTP, testar URLs e dados de entrada e não enviar respostas sem tratamento aos clientes.

Para dimensionar o tamanho do problema, de acordo com um artigo divulgado pela ComputerWeekly.com, no mínimo 100.000 empresas tiveram esse tipo de vulnerabilidade explorada desde novembro de 2022.

Security Misconfiguration (API8:2023)

Essa categoria pode parecer genérica, mas é basicamente essa a sua proposta. Agrupar todas as vulnerabilidades já conhecidas que são causadas por más configurações.

As APIs e os sistemas que as suportam geralmente contêm configurações complexas, destinadas a tornar as APIs mais personalizáveis, de modo que engenheiros de software e DevOps podem não perceber essas configurações ou não seguir as melhores práticas de segurança em relação às configurações, abrindo portas para diferentes tipos de ataques.

Uma API pode estar vulnerável se o servidor não tiver uma configuração de segurança adequada (o que se aplica a todos os componentes); se as atualizações básicas de segurança do produto não forem aplicadas; se a configuração CORS não estiver feita corretamente; se a configuração TLS não estiver definida corretamente; se os logs e mensagens de erro não forem tratados adequadamente e, por fim, se recursos desnecessários ou recursos experimentais estiverem habilitados em ambiente de produção.

Improper Inventory Management (API9:2023)

Muitas APIs tendem a expor mais endpoints do que as aplicações web tradicionais, tornando a documentação adequada e atualizada de extrema importância. Um inventário adequado de hosts e versões de APIs implantadas também é importante para mitigar problemas, como versões de API obsoletas e endpoints de depuração expostos.

É essencial que as organizações não apenas compreendam e tenham visibilidade de suas próprias APIs e endpoints de API, mas também compreendam como as APIs armazenam ou compartilham dados com terceiros externos.

Manusear várias versões da mesma API requer recursos de gerenciamento adicionais por parte do provedor de API e aumenta a superfície de ataque.

Para gerenciar efetivamente esses desafios, é fundamental manter uma documentação precisa e atualizada, além de realizar um acompanhamento rigoroso dos endpoints e das versões de API implantadas. Tais condutas evitarão problemas decorrentes de versões desatualizadas e minimizarão a exposição de pontos de depuração que podem ser explorados por invasores. Além disso, é crucial ter um controle detalhado das conexões entre APIs internas e terceiros externos, um inventário atualizado e reforço dos mecanismos de proteção para todas as versões ativas, garantindo a segurança e a privacidade dos dados compartilhados.

Unsafe Consumption of APIs (API10:2023)

Alguns engenheiros tendem a confiar na segurança de terceiros ao utilizar seus serviços, negligenciando os padrões de segurança que deveriam ser aplicados. Às vezes, devido a essa confiança, adotam padrões fracos em entradas do usuário ou negligenciam as validações dos mesmos.

Uma API pode estar vulnerável quando interage com outras APIs por meio de um canal não criptografado, sem validação dos dados obtidos de terceiros antes de processá-los ou passá-los adiante, quando não limita o número de recursos disponíveis para processar respostas de serviços de terceiros e não implementa limite de tempo de resposta.

No lado positivo, essa é uma das categorias mais fáceis de lidar e pode ser tratada por meio da avaliação do serviço contratado, principalmente, pela análise da sua postura de segurança de suas APIs e garantindo que todas as interações de API ocorram por meio de um canal de comunicação seguro (TLS). Sempre valide e higienize corretamente os dados recebidos de APIs integradas antes de utilizá-los. Mantenha uma lista de locais conhecidos para onde API integradas podem redirecionar, não confie cegamente nos redirecionamentos.

Adotando essas medidas, é possível mitigar efetivamente os riscos associados à integração de serviços de terceiros, garantindo que as interações com APIs externas ocorram de maneira segura e confiável, protegendo os dados e a integridade das operações.

Conclusão

Conforme observado, existe uma quantidade significativa de protocolos que nos auxiliam a criar APIs mais seguras. Além disso, atualmente há uma variedade de ferramentas que permitem orquestrar e automatizar verificações de segurança direcionadas aos tópicos abordados pelo guia OWASP API Security TOP 10. Há também cursos gratuitos e muita documentação técnica que tratam da segurança utilizando tecnologias especificas para o desenvolvimento de APIs.

Portanto, tudo isso reforça como a segurança de APIs está se tornando uma grande preocupação na atualidade e deve ser tratada tão a sério quanto a segurança de Aplicações Web que são direcionadas aos usuários finais.