- 1. Explicação sobre a segurança da API
- 2. Definição de uma API
- 3. Por que a segurança da API é importante
- 4. Abordagem tradicional da segurança de aplicativos da Web
- 5. Anatomia de um ataque à API
- 6. Riscos de segurança da API
- 7. Segurança de API para SOAP, REST e GraphQL
- 8. Práticas recomendadas de segurança de API
- 9. Solução de segurança de API da Prisma Cloud
- 10. Perguntas frequentes sobre segurança da API
- Explicação sobre a segurança da API
- Definição de uma API
- Por que a segurança da API é importante
- Abordagem tradicional da segurança de aplicativos da Web
- Anatomia de um ataque à API
- Riscos de segurança da API
- Segurança de API para SOAP, REST e GraphQL
- Práticas recomendadas de segurança de API
- Solução de segurança de API da Prisma Cloud
- Perguntas frequentes sobre segurança da API
O que é segurança de API?
- Explicação sobre a segurança da API
- Definição de uma API
- Por que a segurança da API é importante
- Abordagem tradicional da segurança de aplicativos da Web
- Anatomia de um ataque à API
- Riscos de segurança da API
- Segurança de API para SOAP, REST e GraphQL
- Práticas recomendadas de segurança de API
- Solução de segurança de API da Prisma Cloud
- Perguntas frequentes sobre segurança da API
A segurança da API é a prática de proteger a interface de programação de aplicativos (API) contra ataques que usariam ou tentariam explorar maliciosamente uma API para roubar dados confidenciais ou interromper serviços. A segurança da API emprega estratégias, técnicas e soluções para garantir que somente usuários autorizados possam acessar e usar uma API e que os dados transmitidos por meio da API sejam protegidos contra acesso ou manipulação não autorizados.
Explicação sobre a segurança da API
Como as APIs funcionam como estrutura de back-end para sistemas e serviços, é fundamental protegê-las para proteger os dados confidenciais que elas transferem, inclusive informações de acesso, como autenticação, autorização, validação de entrada e criptografia. A segurança da API refere-se aos métodos e ferramentas projetados para proteger essas estruturas de back-end e atenuar ataques de violações de acesso, ataques de bots e abuso.
Tipos comuns de ataques à API
- Ataques de negação de serviço (DoS)
- Ataque de negação de serviço distribuído (DDoS)
- Ataque man-in-the-middle (MITM)
- Ataque de controle de acesso quebrado
- Injeção
Um ataque bem-sucedido à API pode resultar em perdas de dados em massa, roubo de informações privadas ou pessoais e interrupção de serviços.
Definição de uma API
API significa interface de programação de aplicativos, que consiste em um conjunto de definições e protocolos que permite que os componentes de software se comuniquem. Servindo como intermediária entre os sistemas de software, a API permite que os aplicativos ou serviços de software compartilhem dados e funcionalidades. Mas a API faz mais do que fornecer infraestrutura de conectividade. Ele também determina como os aplicativos de software podem se comunicar e interagir. A API controla os tipos de solicitações trocadas entre programas, como as solicitações são feitas e quais formatos de dados são permitidos.
As APIs permitem que as organizações compartilhem dados com clientes e outros usuários externos. Os tipos de APIs incluem aquelas usadas para processamento de pagamentos, videoconferência, mídia social, mensagens de texto, monitoramento médico ou de condicionamento físico e casas inteligentes. As APIs podem ser abertas ou fechadas, públicas ou privadas, e normalmente estão em conformidade com padrões arquitetônicos, como REST, SOAP ou GraphQL.
As APIs também beneficiam os desenvolvedores ao dar-lhes acesso à funcionalidade de outros aplicativos, aliviando a necessidade de criar repetidamente uma nova infraestrutura de conectividade ou mesmo de entender seu código ou arquitetura subjacente.
Figura 1: Estrutura moderna de aplicativos
Por que a segurança da API é importante
Os aplicativos são onipresentes, parte integrante dos negócios e da sociedade. E por trás de quase todos os aplicativos há uma API, o que eleva a segurança da API a um nível crítico.
As APIs servem como estrutura de backend para a maioria dos aplicativos nativos da nuvem, incluindo aplicativos móveis, aplicativos da Web e SaaS, bem como aplicativos internos, voltados para parceiros e para clientes. Para colocar o uso da API em perspectiva, a Postman, a plataforma de gerenciamento de API, viu 1,13 bilhão de chamadas de API em 2022. Com o aumento da API, é claro, surge uma superfície de ataque potencialmente lucrativa que atrai agentes mal-intencionados.
Como as APIs expõem a lógica do aplicativo, os recursos e os dados confidenciais, inclusive informações de identificação pessoal (PII), elas se tornaram um alvo para os invasores. Se os invasores conseguirem acessar APIs desprotegidas, eles poderão interromper os negócios, acessar ou destruir dados confidenciais e roubar propriedades.
Figura 2: Aplicativo moderno de microsserviços que utiliza APIs
Abordagem tradicional da segurança de aplicativos da Web
A segurança de aplicativos Web na era dos aplicativos monolíticos consistia em implantar um web application firewall (WAF) no perímetro para interceptar e inspecionar o tráfego HTTP enviado pelos clientes Web. Os WAFs forneceram, e continuam fornecendo, segurança eficaz para os aplicativos quando o risco potencial para o aplicativo envolve, principalmente, entradas mal-intencionadas do usuário incorporadas em envios de formulários da Web HTTP padrão ou solicitações do navegador.
Mas a natureza dos aplicativos da Web mudou de aplicativos monolíticos hospedados por servidores da Web individuais para aplicativos nativos da nuvem em contêineres distribuídos em um cluster de servidores host.
Os desenvolvedores e as equipes de segurança de hoje, que lidam com uma arquitetura de microsserviços altamente distribuída e nativa da nuvem, precisam lidar com redes sem perímetro. Os aplicativos modernos consomem informações de uma ampla variedade de fontes: solicitações padrão da Web, chamadas de API de dispositivos móveis, eventos na nuvem, comunicação de telemetria de dispositivos IoT, armazenamento na nuvem etc.
As solicitações HTTP de entrada do cliente (ou seja, o tráfego norte-sul) geralmente são as primeiras em uma sequência de fluxos de comunicação. Em muitos casos, uma única solicitação de entrada gera dezenas de chamadas internas de API (ou seja, tráfego leste-oeste). Se essas chamadas internas de API não forem devidamente inspecionadas e validadas, os endpoints da API ficarão desprotegidos.
Inspecionar a entrada no perímetro não é suficiente para capturar cargas perigosas. Os endpoints da API interna podem ser configurados incorretamente e permitir o acesso não autorizado a microsserviços individuais, expondo a lógica do aplicativo a ações mal-intencionadas. É fundamental que todos os endpoints de API, externos e internos, sejam continuamente monitorados e protegidos.
Vídeo: Visão geral da segurança da API e dicas para aprimorar a segurança da API
Anatomia de um ataque à API
Como as organizações dependem de APIs para impulsionar os negócios, os invasores estão à espreita de falhas de API para explorar. Este exemplo de um ataque de API direcionado a um aplicativo de comércio eletrônico com um aplicativo móvel como front-end ilustra como é fácil para os atores de ameaças encontrarem incursões em dados valiosos.
Figura 3: A anatomia de um ataque baseado em API
Etapa 1: Por meio da engenharia reversa do aplicativo móvel, um invasor descobre um URL de endpoint de API obsoleto usado para recuperar dados de um microsserviço de back-end.
Etapa 2: O invasor percebe que nem a autenticação nem a autorização são necessárias para enviar chamadas de API para esse endpoint.
Etapa 3: O invasor abusa da vulnerabilidade SQLi. O URL do endpoint da API fornece um identificador de produto exclusivo na forma de um valor numérico, e o invasor executa uma série de verificações automatizadas para descobrir que o campo de entrada pode ser aproveitado para realizar um ataque SQLi bem-sucedido.
Etapa 4: Em vez de abusar desse SQLi para adulterar dados, o invasor opta por abusar da vulnerabilidade do SQLi e executa um comando shell no microsserviço que executa o banco de dados SQL. O comando shell faz o download de um executável malicioso e o executa. O executável é um software de mineração de bitcoin.
Riscos de segurança da API
Configurações incorretas de API, falhas lógicas e vulnerabilidades deixam os aplicativos e os dados expostos aos invasores. Embora um gateway de API só possa ver o tráfego de API roteado por ele e não ofereça visibilidade do tráfego interno, algumas organizações relegam a segurança da API a um gateway de API, acreditando que ele oferece proteção total à API.
As equipes de segurança precisam de visibilidade em toda a superfície da API. Não é possível proteger o que não se pode ver, e o que não se pode ver acaba se tornando a atividade não detectada de agentes mal-intencionados que descobrem uma API invisível.
Embora os gateways de API monitorem efetivamente as APIs e o uso da API, eles não conseguem detectar e bloquear ataques. A segurança da API requer proteção em tempo real contra ataques maliciosos, além de visibilidade e gerenciamento de riscos.
Os 10 principais da OWASP
O Open Web Application Security Project (OWASP) publicou uma lista em 2019 dos 10 principais riscos de segurança de API para conscientizar sobre os riscos de segurança de API que afetam os aplicativos da Web modernos. Esta lista descreve os ataques mais comuns contra APIs da Web e inclui dicas para proteger suas APIs contra essas ameaças.
Autorização de nível de objeto quebrada
Os endpoints que lidam com identificadores de objetos são frequentemente expostos por APIs, resultando em um problema de controle de acesso de nível que amplia a superfície de ataque. Se as verificações de autorização adequadas não forem implementadas, por exemplo, os invasores poderão substituir o ID de um recurso que pertence a outro usuário durante uma chamada de API. Conhecido como ataque inseguro de referência direta a objeto (IDOR), isso permite que o invasor acesse um recurso que não foi autorizado a acessar.
Autenticação de usuário quebrada
Os mecanismos de autenticação de API são alvos fáceis porque estão expostos a todos. Um mecanismo de autenticação mal implementado, conhecido como uma vulnerabilidade de autenticação de API quebrada, permite a entrada de invasores que podem explorar falhas de implementação para assumir a identidade de usuários autorizados.
Configurações incorretas de autenticação de API podem ocorrer quando as práticas recomendadas do setor são ignoradas, como deixar de implementar a validação do token de acesso ou armazenar credenciais e chaves em URLs de endpoints de API.
Exposição excessiva de dados
Quanto mais dados forem expostos, maior será o risco. Durante a implementação da API, os desenvolvedores às vezes expõem propriedades de objetos sem restrições de itens e contam com o cliente para filtrar dados desnecessários antes de serem exibidos na interface do usuário. Mas, mesmo que o cliente da API filtre os dados confidenciais, os invasores ainda podem explorar a chamada inicial da API e, talvez, obter acesso a números de cartão de crédito, credenciais de login e números de previdência social.
Falta de recursos e limitação de taxa
As APIs que não restringem o número de recursos que um cliente pode chamar são vulneráveis ao abuso da API por meio de sobrecarga de tráfego. Esse tipo de sobrecarga degrada o desempenho do servidor de API, bloqueando usuários legítimos e talvez resultando em um DoS. A sobrecarga do servidor de API também expõe a API a falhas de autenticação, como a força bruta.
Autorização de nível de função quebrada
Um dos desafios que os desenvolvedores de API enfrentam é a complexidade da implementação de políticas de controle de acesso para diferentes hierarquias de grupos de usuários e funções. A distinção pouco clara entre funções administrativas e regulares cria falhas de autorização que os invasores podem explorar para obter acesso aos recursos de um usuário ou executar funções administrativas não autorizadas.
Atribuição de massa
Uma vulnerabilidade de atribuição em massa surge quando os dados fornecidos pelo cliente são vinculados a modelos de dados sem serem filtrados em uma lista de permissões que impediria que os usuários atribuíssem dados a campos protegidos. Com essa vulnerabilidade, os invasores podem obter acesso a dados confidenciais interceptando consultas de API e alterando as propriedades dos objetos de back-end armazenados, adivinhando as propriedades do objeto, lendo a documentação e vasculhando os endpoints da API em busca de dicas sobre como comprometer os atributos de dados de uma API privada.
Configurações incorretas de segurança
As configurações incorretas de segurança podem expor informações confidenciais do usuário e detalhes do sistema, o que pode resultar em um servidor comprometido. As causas comuns incluem compartilhamento permissivo de recursos entre origens (CORS), configurações incompletas ou ad hoc, cabeçalhos HTTP ou métodos HTTP incorretos, configurações padrão inseguras, configurações incompletas ou incorretas e mensagens de erro detalhadas que expõem informações confidenciais.
Injeção
As APIs estão sujeitas a vulnerabilidades de injeção - injeção de SQL, injeção de NoSQL e injeção de comando - que podem ocorrer quando dados não confiáveis são enviados a um intérprete como parte de um comando ou consulta. Um invasor pode induzir um intérprete a executar comandos perigosos, expondo dados não autorizados para manipulação e roubo.
Gerenciamento inadequado de ativos
As APIs expõem mais endpoints do que os aplicativos da Web tradicionais, e um forte gerenciamento de API que rastreie esses endpoints é essencial para evitar o abuso de endpoints de APIs sensíveis ou vulneráveis expostos. Endpoints de API obsoletos ou endpoints de depuração, por exemplo, podem ser usados por invasores para comprometer o aplicativo.
Registro e monitoramento insuficientes
O registro e o monitoramento inadequados, embora não sejam uma ameaça direta, atrasam a detecção de ameaças. Os agentes mal-intencionados trabalham sob o manto da escuridão, com tempo suficiente para avançar os ataques e progredir para diferentes sistemas para alterar, extrair e destruir dados. A detecção de ameaças persistentes pode levar mais de 200 dias, de acordo com estudos de violação. E, após uma violação de dados, sem o registro e o monitoramento adequados, as organizações não têm as informações forenses para avaliar os danos.
Vídeo: Saiba mais sobre a OWASP, a AppSec e os 10 principais riscos de segurança de aplicativos da OWASP
Segurança de API para SOAP, REST e GraphQL
SOAP, REST e GraphQL são três padrões comuns de arquitetura de API, e cada estilo de arquitetura de API apresenta considerações de segurança distintas.
Segurança da API SOAP
SOAP (simple object access protocol) é um protocolo para troca de dados estruturados na implementação de serviços da Web em redes de computadores. O SOAP usa XML como seu formato de mensagem e pode ser transportado por uma variedade de protocolos de nível inferior, incluindo HTTP e SMTP. As APIs SOAP normalmente são protegidas usando uma combinação de segurança da camada de transporte (como HTTPS) e segurança no nível da mensagem (como assinaturas digitais e criptografia XML).
A segurança da API SOAP envolve extensões de protocolo para lidar com problemas de segurança. O SOAP segue as especificações de serviços da Web (WS), que garantem a segurança de nível empresarial para todos os serviços da Web por meio de recursos como o WS-ReliableMessaging, que amplia o suporte integrado ao tratamento de erros.
Segurança da API Rest
A arquitetura das APIs de transferência de estado representacional, ou APIs REST, baseia-se na transferência de dados JSON e no protocolo de transferência HTTP/S, que simplificam o desenvolvimento da API REST em comparação com outras arquiteturas de API. As API Rest usam solicitações HTTP para POST (criar), PUT (atualizar), GET (ler) e DELETE (excluir) dados.
Sem provisionamentos de segurança incorporados, a segurança da API Rest depende do design da API. Os serviços de transmissão de dados, implantação e interação com o cliente devem incorporar considerações de segurança. A maioria das APIs Rest dependerá da segurança da camada de transporte (como HTTPS) e da autenticação baseada em token.
Uma opção comum de arquitetura para abordar a segurança da API REST é implantar APIs REST por trás de um gateway de API e, em seguida, fornecer essa opção de conectividade aos clientes. Um gateway de API, no entanto, não está equipado para se defender contra toda a gama de ameaças à segurança.
REST vs. SOAP
As APIs SOAP e RESTful suportam solicitações e respostas HTTP, bem como a camada de soquetes seguros (SSL), mas a semelhança termina aí. As APIs SOAP, com recursos de segurança incorporados, são inerentemente seguras. As APIs Rest, por outro lado, devem ser protegidas por meio de implementação e escolhas arquitetônicas.
Segurança da API GraphQL
O GraphQL é uma linguagem de API de código aberto que descreve como os clientes solicitam informações e atua como um tempo de execução para atender a consultas com dados existentes. A sintaxe GraphQL é usada pelos desenvolvedores para fazer solicitações de dados específicas de uma ou várias fontes. Com o GraphQL, os clientes podem definir a estrutura de dados para uma solicitação, e o servidor garantirá que a estrutura exata seja retornada.
A aplicação da segurança da API GraphQL apresenta desafios relacionados a solicitações personalizáveis e flexíveis. O servidor pode não ser capaz de lidar com consultas complexas e pode, inadvertidamente, executar consultas maliciosas no processo.
Os métodos para atenuar os riscos de segurança da API GraphQL incluem a limitação e a definição de uma profundidade máxima de consulta, bem como um tempo limite de consulta para se defender contra consultas grandes.
Práticas recomendadas de segurança de API
Com as APIs cada vez mais disponibilizadas publicamente, é importante lidar com os riscos de exposição de dados por meio da implementação de práticas recomendadas para minimizar a superfície de ataque, corrigir vulnerabilidades e apreender atividades mal-intencionadas quase em tempo real.
Use métodos seguros de autenticação e autorização
Certifique-se de que somente usuários autorizados possam acessar a API com métodos de autenticação seguros, como OAuth2 ou JSON web tokens (JWTs).
Implementação do Rate Limiting
Implementar a limitação de taxa em suas APIs para evitar ataques de força bruta e outros comportamentos mal-intencionados. A limitação de taxa restringe o número de solicitações que podem ser feitas a uma API em um período específico.
Usar HTTPS
As solicitações e respostas da API devem ser feitas usando HTTPS para garantir que sejam criptografadas e seguras. Isso é particularmente importante quando se trata de dados confidenciais.
Realizar avaliações regulares de segurança
Avalie regularmente a segurança de suas APIs para identificar possíveis vulnerabilidades. Analise as alterações no inventário de APIs para detectar APIs recém-expostas e seus perfis de risco, incluindo exposição a dados confidenciais, exposição à Internet, vulnerabilidades de carga de trabalho e nível de autenticação.
Usar uma chave de API
Uma chave de API é um identificador exclusivo usado para identificar o aplicativo que chama uma API e verificar a autorização de acesso. As chaves de API diferem dos tokens de autenticação porque identificam o aplicativo (ou site) que está fazendo a chamada de API, e não a pessoa que está usando o aplicativo (ou site). Ambas são medidas de segurança importantes.
Siga as práticas recomendadas de armazenamento de chaves de API para evitar chamadas indesejadas, acesso não autorizado e possível violação de dados com perda de informações pessoais.
Monitore suas APIs
Gerencie e monitore as especificações, a documentação, os casos de teste, o tráfego e as métricas da API. Bloqueie atividades indesejadas, como tráfego de API mal-intencionado e bots mal-intencionados, para ajudar a proteger o aplicativo e reduzir custos desnecessários.
Instrua as equipes de segurança sobre as práticas recomendadas de segurança
Incorpore a segurança no início do pipelines de CI/CD e forneça treinamento para melhorar o conhecimento dos desenvolvedores sobre os riscos de segurança, como autenticação fraca e vulnerabilidades lógicas. Implementar os princípios do DevSecOps , incluindo a colaboração entre as equipes de segurança e desenvolvimento.
Conheça suas vulnerabilidades
Identifique os pontos fracos em seu ciclo de vida de API procurando rotineiramente os 10 principais riscos de segurança de API da OWASP. Use ferramentas e técnicas de varredura de API para identificar cada vulnerabilidade de API e resolvê-la imediatamente para evitar a exploração.
Exigir um token de segurança para autenticação
A exigência de um token de segurança para autenticação é a primeira linha de defesa. Os tokens de segurança protegem as APIs contra acesso não autorizado, rejeitando a chamada à API se o token do usuário não for verificado.
Em resumo, as práticas recomendadas devem começar com a visibilidade e o monitoramento de suas superfícies de ataque, que podem descobrir automaticamente todos os aplicativos da Web e endpoints de API em seu ambiente. As camadas de defesa devem incluir políticas para o tráfego norte-sul e leste-oeste para bloquear ameaças mal-intencionadas, sejam elas originárias da Internet ou de seus aplicativos.
A adição de outra camada de verificação de vulnerabilidade e conformidade, juntamente com a autenticação forte, protegerá ainda mais os seus aplicativos. O senhor também precisará proteger suas cargas de trabalho ou a camada de infraestrutura, como hosts, VMs, contêineres e funções sem servidor que ajudam a hospedar seus aplicativos.
Solução de segurança de API da Prisma Cloud
A Prisma Cloud fornece descoberta completa de API, perfil de risco e proteção em tempo real para todas as APIs como parte de sua abrangente plataforma de proteção de aplicativos nativos da nuvem (CNAPP).
Recursos de segurança da API
- Descoberta de API: Descubra automaticamente todas as APIs em seu ambiente e elimine os pontos cegos causados por APIs obscuras ou não autorizadas.
- Perfil de risco da API: Identifique os riscos e os fatores de risco da API (como configurações incorretas, exposição a dados confidenciais e controle de acesso) e priorize a correção.
- Proteção em tempo real: Imponha proteções em tempo real para ataques em todo o OWASP Top 10 para APIs, limitação de taxa e bots ruins.
Perguntas frequentes sobre segurança da API
A arquitetura de microsserviços envolve a criação de aplicativos dividindo sua funcionalidade em componentes modulares. Os aplicativos são construídos com microsserviços frouxamente acoplados que se comunicam por meio de protocolos leves.
Os microsserviços com acoplamento frouxo permitem que os desenvolvedores criem aplicativos complexos com velocidade e relativa facilidade. Esse tipo de arquitetura nativa da nuvem também pode acompanhar o ritmo da evolução das necessidades dos clientes, pois a natureza de desacoplamento dos microsserviços permite que os desenvolvedores enviem novos códigos e funcionalidades com mais frequência do que seria possível de outra forma.
Melhor integrado ao pipeline de DevOps, o teste de segurança de API é uma prática que desafia a segurança dos endpoints de uma API para verificar a conformidade com as práticas recomendadas de segurança. Para avaliar a autenticação, a criptografia e as condições de acesso do usuário, por exemplo, a API é submetida a desafios de entrada deliberados projetados para emular os vetores de ataque de agentes mal-intencionados para eliminar comportamentos indefinidos, bugs e outras vulnerabilidades. As descobertas dos testes de API podem incluir desvios de autorização ou autenticação, configurações incorretas de segurança, injeções de comandos SQL e OS e vulnerabilidades de código-fonte aberto.
O teste de segurança da API pode envolver testes de segurança dinâmicos ou estáticos, bem como análise de composição de software (SCA). O SCA verifica o código em um aplicativo em relação aos bancos de dados CVE. Quando os problemas são identificados, a ferramenta SCA alerta os desenvolvedores de que o aplicativo ou a API está usando uma biblioteca ou estrutura com uma vulnerabilidade conhecida. Devido ao uso generalizado de código aberto no desenvolvimento de APIs, a análise da composição do software desempenha um papel fundamental nos testes de segurança de APIs e aplicativos.
Um webhook é uma função de retorno de chamada baseada em HTTP que possibilita a interação orientada por eventos entre duas APIs, permitindo que os aplicativos da Web recebam pequenas quantidades de dados de outros aplicativos. Mas os webhooks não são APIs. Eles são geralmente chamados de APIs reversas ou push porque os webhooks acionam o servidor para enviar ao cliente uma solicitação HTTP POST quando os dados estiverem disponíveis (em vez de receber e responder a uma solicitação HTTP). Os aplicativos devem ter uma API para usar um webhook.
Em ambientes GitOps, os webhooks podem acionar fluxos de trabalho de automação e reduzir o número de etapas necessárias para implantar pipelines de implantação pesados do Git, incluindo o lançamento automático de fluxos de trabalho de infraestrutura como código.