Leia sobre dicas e funcionalidades da GoCache CDN para melhorar a seguranca do seu site, loja virtual ou app mobile.

Broken Function Level Authorization (BFLA) – O que é?

O BFLA, traduzido para o português como Autorização Quebrada a Nível de Função, é outro tipo de Quebra de Controle de Acesso. É parecido com o BOLA, porém, enquanto o alvo do BOLA são os objetos com que a API interage, o alvo do BFLA são as funções da API. Para explorar um caso desse tipo, o atacante acessa APIs que executam ações às quais seu usuário não tem privilégio, por exemplo, acessar uma API administrativa tendo privilégio de usuário comum.

Também é um caso de BFLA um usuário anônimo executar ações restritas apenas a usuários autenticados. Um usuário acessar recursos aos quais ele não teria privilégio em sua própria conta gera apenas prejuízos localizados na receita da empresa, porém, se um usuário que não é administrador obter privilégios administrativos, ele pode gerar um dano muito maior, ao poder visualizar informações, modificar e até excluir outras contas. Outra forma grave de explorar essa vulnerabilidade é acessar objetos de outras contas que seriam só para visualização, como comentários de redes sociais, e poder modificá-los ao alterar o método da requisição (ex.: substituir GET por DELETE).

Quer conhecer as TOP 10 ameaças para APIs da OWASP? Baixe nosso Ebook Gratuito: API Security – Guia para Iniciantes

Lack of Resources & Rate Limiting – O que é?

Lack of Resources & Rate Limiting, em português, significa falta de recursos ou de rate-limiting. Toda API consome recursos que são limitados, como CPU, memória e armazenamento. Quando o consumo de algum desses recursos chega ao limite, a API começa a falhar, trazendo prejuízo à experiência dos usuários. Existem duas formas de exaurir uma API: por meio de consultas onerosas ou por meio do volume de consultas. Por isso é importante o dimensionamento correto do back-end e forçar limites de uso que o mantenham longe do limite suportado.

Quando o uso excessivo da API é intencional, com o objetivo de derrubar ou prejudicar sua experiência, chamamos isso de Ataque de Negação de Serviço ou Denial of Service (DoS ou DDoS quando se usam diversos IPs para atacar, ou seja, distribuído). A falta de limitação da taxa de requisições, o que chamamos de rate-limiting, também abre portas para outros objetivos maliciosos, como ataques por brute-force, roubo de credenciais e enumeração, todos ataques que dependem de tentativa e erro para descobrir informações como senhas e vulnerabilidades.

Quer conhecer as TOP 10 ameaças para APIs da OWASP? Baixe nosso Ebook Gratuito: API Security – Guia para Iniciantes

Excessive Data Exposure – O que é?

Excessive Data Exposure, Exposição excessiva de dados em português, é quando um aplicativo revela mais informações do que o necessário para o usuário por meio de uma resposta de API. Isso pode incluir dados confidenciais, como números de segurança social, números de cartão de crédito e credenciais de login. Quando essas informações são divulgadas, agentes mal-intencionados podem usá-las para explorar o usuário de alguma forma, como roubo de identidade ou fraude financeira.

Os desenvolvedores de API geralmente cometem o erro de expor todas as propriedades do objeto sem considerar sua sensibilidade individual e confiam no código do lado do cliente para realizar a filtragem de dados. O problema é que agentes maliciosos podem instalar proxies em computadores ou smartphones, tendo acesso aos dados que não são exibidos pelo front-end. Além disso, combinada com outras vulnerabilidades, a exposição excessiva pode ampliar o estrago de uma vulnerabilidade, como por exemplo, exibir dados de cartão de crédito em uma API de dados pessoais com autenticação quebrada.

Quer conhecer as TOP 10 ameaças para APIs da OWASP? Baixe nosso Ebook Gratuito: API Security – Guia para Iniciantes

Broken User Authentication – O que é?

Para que se faça o correto controle de acesso, é fundamental que se identifique quem está solicitando acesso. Não fazer a identificação de usuário em uma API exibe dados pessoais e sensíveis, ou não ter controle contra alguém que viole as credenciais de outros usuários outro usuários, é o que se chama de Quebra de Autenticação de Usuário ou Broken User Authentication.

Por incrível que pareça, é comum haver APIs que não deveriam ser anônimas sem autenticação. Pode acontecer tanto involuntariamente, quando o time de produto e desenvolvimento se esquece deste componente na fase de concepção, como pode acontecer voluntariamente, pelo time considerar equivocadamente que nenhum atacante irá descobrir a API, o que costuma se chamar de “segurança por obscuridade”.

Por outro lado, há APIs que possuem processo de autenticação, porém ele não é robusto o suficiente para resistir a um ataque. Agentes maliciosos podem se aproveitar do uso de credenciais roubadas, sequestro de sessão, senhas fracas, tokens de API com baixa entropia, ausência de rate-limiting e de autenticação de 2 fatores, entre outras formas de se violar a autenticação de terceiros. O impacto causado por este tipo de ataque é similar ao da vulnerabilidade anterior.

Quer conhecer as TOP 10 ameaças para APIs da OWASP? Baixe nosso Ebook Gratuito: API Security – Guia para Iniciantes

Broken Object Level Authorization (BOLA) – O que é?

O BOLA, traduzido para o português como Autorização Quebrada a Nível de Objeto, é um tipo específico de Quebra de Controle de Acesso (Top 1 na lista da OWASP para aplicações web). É uma vulnerabilidade idêntica à conhecida como IDOR (Insecure Direct Object Reference ou Referência Direta ao Objeto Insegura), que já esteve no Top 2 em uma das primeiras listas para aplicações web.

Pense no objeto como sendo o estado de um recurso da API, como um dado pessoal de um usuário, um comentário ou uma compra. Quando um objeto tem sua autorização quebrada, significa que alguém que não tem permissão sobre ele possa acessá-lo se referencia-lo diretamente, mesmo estando autenticado.

É como se houvesse um condomínio fechado em que todas as casas estivessem destrancadas. Um visitante malicioso pode conseguir a credencial de um morador para atravessar o portão do condomínio (autenticação). Uma vez dentro do condomínio, ele é capaz de entrar não só na casa do dono dessa credencial, como em qualquer casa, já que estão destrancadas (quebra na autorização).

Agora, imagine uma API em que você forneça seu CPF para obter seus dados financeiros. Se ela estiver vulnerável ao BOLA, para um agente malicioso obter dados de qualquer cliente, basta oferecer o CPF dele, mesmo que tenha se autenticado como outro. Como você pode ver, uma vez identificada, é uma vulnerabilidade fácil de explorar e escalar. E de grande impacto: sua aplicação vai desde vazar dados importantes a criar transações em nome de outras pessoas.

Ela também é bastante comum. Principalmente quando falamos de aplicações complexas, formadas por muitas APIs, desenvolvidas por diferentes times e com deploys frequentes, a probabilidade de algo ser posto em produção com essa falha em algum momento é alta. E por se tratar de uma falha na lógica de negócio, não é fácil detectar sua presença de forma escalável, seja em testes unitários ou a nível de análise de tráfego.

Quer conhecer as TOP 10 ameaças para APIs da OWASP? Baixe nosso Ebook Gratuito: API Security – Guia para Iniciantes

Por que API Security difere de Web Application Security?

Se você já conhecia a OWASP Top 10, mas não sabia que havia uma lista específica da entidade para APIs, provavelmente você deve ter estranhado. Porém, quando você pensa em termos de arquitetura da aplicação, faz todo o sentido haver uma lista dedicada para enfrentar problemas específicos de API.

A OWASP Top 10 para aplicações web surgiu em uma época em que a maioria das aplicações seguia uma arquitetura em que o front-end era renderizado no servidor. Sendo assim, as regras de negócio eram todas processadas no servidor, que entregava os arquivos HTML já com os dados incorporados. Isso limitava muito a superfície de ataque, sendo necessário um pouco de engenhosidade para conseguir manipular dados, por isso a prevalência de SQL Injection e XSS.

Nessa mesma época, as aplicações eram majoritariamente monolíticas, sendo executadas em um grande bloco de código homogêneo, dentro de máquinas em um datacenter ou em VMs em cloud. Os pontos de entrada na aplicação eram poucos, sendo mais simples de controlar. Era simples passar todo o tráfego pelo mesmo nó de uma ferramenta de WAF e normalmente, autenticação e autorização eram realizadas em um ponto único na entrada da aplicação. Problemas de autenticação e autorização já se faziam presentes, mas não com a mesma força de injections.

O que muda com as APIs? Dada a função delas, os dados são expostos de forma bem mais direta do que em uma página renderizada no servidor. Uma simples falha de quem programa já é suficiente para expor informações sensíveis sem muito trabalho de quem está explorando. Talvez você esteja se perguntando por que isso é um problema, dado que o que é mais simples também é mais fácil de revisar a qualidade. O grande problema é que a evolução das APIs vem acompanhada com o crescimento da complexidade.

As APIs diminuem o acoplamento das funções de uma aplicação, permitindo uma distribuição mais eficiente do trabalho de desenvolvimento, o que acelera a entrega de novos produtos a um nível que antes era inviável. Como consequência, geramos uma malha cada vez mais complexa de comunicação entre back-end e front-end e dentro do próprio back-end.

O tráfego externo que antes era forçado para entrar em apenas um nó, hoje pode ter à disposição inúmeros pontos de entradas (às vezes desconhecidos). O controle e conhecimento pleno da arquitetura que uma equipe de segurança, se perdeu como consequência da velocidade com que novos produtos são lançados. As assinaturas de padrões de ataque, normalmente associados às linguagens e frameworks específicos utilizados em um monolito, perderam eficiência em um ambiente que pode envolver a comunicação de microsserviços construídos em diferentes linguagens.

Como exemplo das consequências deste fenômeno, vemos que a OWASP Top 10 para APIs tem uma presença muito forte de falhas de autenticação e autorização quando comparada com a OWASP Top 10 para aplicações web de 2017. Provavelmente, a ascensão da Quebra de Controle de Acesso à primeira posição na lista para aplicações web divulgada em 2021 tenha relação com a importância das APIs nas aplicações web hoje. O processo de autenticação e autorização em aplicações distribuídas (que muitas vezes estão por trás de APIs) pode ser extremamente desafiador em relação ao mesmo processo em um monolito.

Isso não significa que ferramentas de Web Application Security não funcionam mais. WAF (Web Application Firewall), SAST (Static Application Security Testing), DAST (Dynamic Application Security Testing) entre outras soluções para segurança de aplicações web continuam a ter o seu papel, uma vez que os problemas solucionados por elas continuam existindo, principalmente no contexto individual de cada microsserviço. O que muda é que com a complexidade trazida pelas arquiteturas de aplicação viabilizadas pelas APIs, novos comportamentos emergem, sendo necessárias novas abordagens para mitigar os riscos.

Quer aprender mais sobre API Security? Baixe nosso Ebook Grátis!

Quais são as principais ameaças para APIs?

Não é segredo que as APIs estão sob risco de ataque. O Gartner já estimou que em 2022 as APIs serão o maior vetor de vazamentos de dados. Porém, a discussão sobre quais são os riscos e como se proteger contra eles ainda é muito tímida nas empresas. O problema só piorará à medida que as APIs se tornarem mais complexas e mais empresas confiarem nelas para funções críticas de negócios. Os riscos de segurança aumentam exponencialmente.

Para saber como se proteger, é fundamental conhecer quais são os principais riscos. Muitos ainda acreditam que Web Application Security é suficiente para lidar com os riscos de segurança de API, o que não é verdade. A OWASP, conhecida por suas publicações periódicas a respeito das 10 principais ameaças para aplicações web, possui uma lista exclusiva para APIs, fato que ainda é pouco difundido. Conheça a seguir as principais ameaças para a segurança de APIs listadas pela OWASP.

API1:2019 Broken Object Level Authorization (BOLA):

O BOLA, traduzido para o português como Autorização Quebrada a Nível de Objeto, é um tipo específico de Quebra de Controle de Acesso (Top 1 na lista da OWASP para aplicações web). É uma vulnerabilidade idêntica à conhecida como IDOR (Insecure Direct Object Reference ou Referência Direta ao Objeto Insegura), que já esteve no Top 2 em uma das primeiras listas para aplicações web.

Pense no objeto como sendo o estado de um recurso da API, como um dado pessoal de um usuário, um comentário ou uma compra. Quando um objeto tem sua autorização quebrada, significa que alguém que não tem permissão sobre ele possa acessá-lo se referencia-lo diretamente, mesmo estando autenticado.

É como se houvesse um condomínio fechado em que todas as casas estivessem destrancadas. Um visitante malicioso pode conseguir a credencial de um morador para atravessar o portão do condomínio (autenticação). Uma vez dentro do condomínio, ele é capaz de entrar não só na casa do dono dessa credencial, como em qualquer casa, já que estão destrancadas (quebra na autorização).

Agora, imagine uma API em que você forneça seu CPF para obter seus dados financeiros. Se ela estiver vulnerável ao BOLA, para um agente malicioso obter dados de qualquer cliente, basta oferecer o CPF dele, mesmo que tenha se autenticado como outro. Como você pode ver, uma vez identificada, é uma vulnerabilidade fácil de explorar e escalar. E de grande impacto: sua aplicação vai desde vazar dados importantes a criar transações em nome de outras pessoas.

Ela também é bastante comum. Principalmente quando falamos de aplicações complexas, formadas por muitas APIs, desenvolvidas por diferentes times e com deploys frequentes, a probabilidade de algo ser posto em produção com essa falha em algum momento é alta. E por se tratar de uma falha na lógica de negócio, não é fácil detectar sua presença de forma escalável, seja em testes unitários ou a nível de análise de tráfego.

API2:2019 Broken User Authentication

Para que se faça o correto controle de acesso, é fundamental que se identifique quem está solicitando acesso. Não fazer a identificação de usuário em uma API exibe dados pessoais e sensíveis, ou não ter controle contra alguém que viole as credenciais de outros usuários outro usuários, é o que se chama de Quebra de Autenticação de Usuário ou Broken User Authentication.

Por incrível que pareça, é comum haver APIs que não deveriam ser anônimas sem autenticação. Pode acontecer tanto involuntariamente, quando o time de produto e desenvolvimento se esquece deste componente na fase de concepção, como pode acontecer voluntariamente, pelo time considerar equivocadamente que nenhum atacante irá descobrir a API, o que costuma se chamar de “segurança por obscuridade”.

Por outro lado, há APIs que possuem processo de autenticação, porém ele não é robusto o suficiente para resistir a um ataque. Agentes maliciosos podem se aproveitar do uso de credenciais roubadas, sequestro de sessão, senhas fracas, tokens de API com baixa entropia, ausência de rate-limiting e de autenticação de 2 fatores, entre outras formas de se violar a autenticação de terceiros. O impacto causado por este tipo de ataque é similar ao da vulnerabilidade anterior.

API3:2019 Excessive Data Exposure

Excessive Data Exposure, Exposição excessiva de dados em português, é quando um aplicativo revela mais informações do que o necessário para o usuário por meio de uma resposta de API. Isso pode incluir dados confidenciais, como números de segurança social, números de cartão de crédito e credenciais de login. Quando essas informações são divulgadas, agentes mal-intencionados podem usá-las para explorar o usuário de alguma forma, como roubo de identidade ou fraude financeira.

Os desenvolvedores de API geralmente cometem o erro de expor todas as propriedades do objeto sem considerar sua sensibilidade individual e confiam no código do lado do cliente para realizar a filtragem de dados. O problema é que agentes maliciosos podem instalar proxies em computadores ou smartphones, tendo acesso aos dados que não são exibidos pelo front-end. Além disso, combinada com outras vulnerabilidades, a exposição excessiva pode ampliar o estrago de uma vulnerabilidade, como por exemplo, exibir dados de cartão de crédito em uma API de dados pessoais com autenticação quebrada.

API4:2019 Lack of Resources & Rate Limiting

Lack of Resources & Rate Limiting, em português, significa falta de recursos ou de rate-limiting. Toda API consome recursos que são limitados, como CPU, memória e armazenamento. Quando o consumo de algum desses recursos chega ao limite, a API começa a falhar, trazendo prejuízo à experiência dos usuários. Existem duas formas de exaurir uma API: por meio de consultas onerosas ou por meio do volume de consultas. Por isso é importante o dimensionamento correto do back-end e forçar limites de uso que o mantenham longe do limite suportado.

Quando o uso excessivo da API é intencional, com o objetivo de derrubar ou prejudicar sua experiência, chamamos isso de Ataque de Negação de Serviço ou Denial of Service (DoS ou DDoS quando se usam diversos IPs para atacar, ou seja, distribuído). A falta de limitação da taxa de requisições, o que chamamos de rate-limiting, também abre portas para outros objetivos maliciosos, como ataques por brute-force, roubo de credenciais e enumeração, todos ataques que dependem de tentativa e erro para descobrir informações como senhas e vulnerabilidades

Quer conhecer as 10 principais ameaças listadas pela OWASP? Baixe nosso ebook grátis e tenha acesso – API Security: Guia para Iniciantes

O que é Web API? E seus principais usos

Para entender o que é uma web API, precisamos dar um passo para trás e entender o que é uma API em si. Segundo a Mozilla Foundation, APIs (Application Programming Interfaces) são construções que permitem que se interaja com uma aplicação através de software. Elas possibilitam conectar diferentes sistemas que podem se utilizar de diferentes linguagens de programação. O que poderia ser uma comunicação impossível ou inviável, encontra um ponto de conexão em comum usando este artefato.

Vejamos em uma contextualização:

Considere que um cliente GoCache queira ter uma integração com a CDN da GoCache para obter dados de tráfego e eventos de segurança, como essa comunicação é possível se ele não tem acesso ao código da CDN GoCache?

Simples, através da API GoCache, que disponibiliza mediante a regras de negócio o acesso a funções, dados e controle da CDN.

O que diferencia uma web API é a comunicação via web, usando principalmente o protocolo HTTP. Com a vida do ser humano cada vez mais cercada por aplicações web e mobile, as web APIs estão se tornando peça chave para grandes transformações na forma como se desenvolve e opera software. A seguir, apresentaremos os principais usos de APIs e os principais padrões em que sua comunicação ocorre.

Quais são os principais usos de Web APIs?

Modernização de arquiteturas de aplicações web

As primeiras aplicações web eram bastante estáticas. As páginas HTML já chegavam do servidor em sua forma final e mesmo que houvesse interatividade via javascript, para atualizar algum conteúdo da página, era necessário que toda sua estrutura fosse enviada novamente pelo servidor. Vamos entrar num acordo que há muito a ser melhorado nessa experiência. E foi justamente o motivo de uma grande evolução introduzida por volta de 2005.

Nessa época foi introduzido o AJAX (Asynchronous Javascript and XML). Essa tecnologia permitia a solicitação assíncrona de dados ao servidor, por meio de javascript e XML, evitando que toda a página tivesse que ser recarregada para atualizar apenas uma pequena parte do conteúdo. Apesar de não serem chamadas por esse nome neste período, pode-se considerar este uso um exemplo de web API. Mais tarde, no fim da década, a introdução dos smartphones trouxe os aplicativos móveis, cuja comunicação com o servidor ocorre de maneira similar ao AJAX.

De lá para cá, novos padrões e frameworks têm surgido, mas podemos agrupar essas tendências em um fenômeno: desacoplamento entre front-end e back-end, no qual os dados são fornecidos assincronamente via API e a página é renderizada ou no navegador, ou em um servidor dedicado para essa função. Desconsiderando outros aspectos, uma das principais vantagens dessa abordagem arquitetural é a agilidade ganha com o menor acoplamento. Quem desenvolve o front-end depende menos de quem trabalha com o back-end para desenvolver e testar novos produtos, e vice-versa. Equipes que definem o design das APIs antes de desenvolver (API First) se beneficiam ainda mais dessa arquitetura agilidade.

Outra característica de arquitetura das primeiras aplicações web é o monolito, ou seja, as aplicações eram majoritariamente constituídas por um bloco homogêneo de código, executado em um único servidor (ou replicado em mais servidores para escala horizontal). Quando se trata de aplicações pequenas, como por exemplo, um blog WordPress, essa abordagem não costuma gerar transtornos, sendo até preferível em grande parte dos casos. Mas quando falamos de aplicações mantidas por dezenas de desenvolvedores ou mais, a situação pode ficar um pouco mais complicada.

Isso começou a ser percebido com mais clareza na época do florescimento das metodologias ágeis e da cultura DevOps. Com dezenas de equipes autônomas trabalhando no mesmo código, é fácil enxergar o potencial que as dependências entre o trabalho delas têm de ser um obstáculo ao desenvolvimento ágil. E como, mesmo o deploy de uma pequena mudança impacta toda a aplicação, a frequência com que novas funcionalidades entram em produção também fica comprometida.

Houveram algumas tentativas de mudar esse cenário, como SOA (Service Oriented Architecture), mas não alcançaram o sucesso. O cenário começou a melhorar com bastante influência da arquitetura de contêineres. Os contêineres fornecem um ambiente muito mais leve, consistente e seguro para quebrar o monolito em dezenas, centenas e até milhares de pequenos serviços, os chamados “microsserviços”. Tecnologias de orquestradores, como Kubernetes, tem auxiliado muito o trabalho de lidar com a complexidade criada por esse tipo de ambiente.

A velocidade desenvolvimento de software cresceu de forma assombrosa nos últimos anos, junto com a difusão dessa arquitetura. E onde entra o papel das APIs? São justamente elas as responsáveis pela comunicação entre os microsserviços. As APIs fornecem uma interface com um nível de abstração suficiente para diminuir o acoplamento entre as diferentes funções da aplicação sem comprometer a coesão do conjunto.

Trocas de valor entre empresas

É praticamente inviável para a maioria dos produtos que todos os seus componentes sejam produzidos pela mesma empresa. Você dificilmente verá um fabricante de celular fazendo seus próprios parafusos, por exemplo. Mas uma coisa que não é tão evidente, é que certas indústrias, como a automotiva e mais recentemente, a aeronáutica, descobriram que podem terceirizar o desenvolvimento e produção de componentes mais complexos e fundamentais para a funcionalidade de seu produto, buscando focar em suas competências chave.

Uma fabricante de aeronaves pode terceirizar o desenvolvimento e produção das asas de seu avião, diminuindo o aporte de capital necessário para desenvolver seu novo produto e podendo concentrar seu foco em aspectos mais globais dele. Mas o que isso tem a ver com APIs? O mesmo fenômeno acontece com a indústria de software e as APIs têm papel importante nisso.

Se voltarmos algumas décadas no tempo, veremos que mesmo nas aplicações web mais antigas, muitos componentes já eram fornecidos por terceiros. Bancos de dados, servidores web e sistemas operacionais seriam muito onerosos se cada empresa que criasse uma aplicação web tivesse que construí-los. E entre 1999 e 2000 houve um grande marco de evolução: a Salesforce surgiu como a primeira empresa que nasceu no modelo de Software como um Serviço (SaaS – Software-as-a-Service). Curiosamente, nesse mesmo ponto surgiu o que é considerado hoje como a primeira web API.

Basicamente, ao invés de oferecer um CD-ROM com um software de CRM a ser instalado nos servidores de seus clientes, a Salesforce trouxe a proposta de entregar a funcionalidade de seu produto via internet. Desse momento em diante, principalmente nos últimos anos, vimos uma explosão de softwares sendo vendidos como serviços. Movimentos como Open Banking e Open Health só acentuam essa tendência.

Hoje, para criar um e-commerce, você não precisa criar seus próprios sistema de pagamentos, helpdesk, mecanismo de recomendação, etc. Tudo isso pode ser fornecido por terceiros, ajudando a focar no que importa, que no caso é garantir uma boa experiência de compra na loja virtual. Como nesse modelo o fornecedor opera seu próprio software, é imperativo que este processe os dados fornecidos por seus clientes. E são justamente as APIs que são a interface de troca de dados entre os dois lados dessa troca de valor.

O conteúdo apresentado nesse post faz parte do nosso Ebook – API Security: Guia para Iniciantes. Faça o download grátis e tenha acesso a um documento com mais de 40 páginas!

Por que Web Application Security não é suficiente para segurança em API’s?

Houve um tempo em que as aplicações web eram formadas por um grande bloco de código, homogêneo, em que o backend já entregava a página renderizada ao cliente. Esse grande bloco era hospedado em um grande servidor (ou alguns), dentro de um datacenter, no qual o perímetro de rede era ferrenhamente guardado, tal qual um castelo, mas onde tudo o que estivesse dentro do perímetro, era considerado seguro.

Ok! Isso não é assunto para arqueologia, já que boa parte das aplicações atuais ainda usam essa arquitetura. Mas o ponto importante aqui, é que as ferramentas de Web Application Security, como WAF e Application Security, como Application Security Testing (AST) surgiram dentro deste paradigma.

Como as páginas eram entregues prontas do servidor, a aplicação era um bloco homogêneo e estável, e o perímetro de rede era totalmente conhecido e controlável, a superfície de ataques era bastante reduzida e em questão de alguns ajustes, a proteção de um WAF era efetiva. Da mesma forma, testes com SAST e DAST reproduziam o comportamento da aplicação em produção, com menos distorções.

Mas de lá para cá, muita coisa vem acontecendo gradualmente: Single-Page Application, Mobile, integração entre empresas, cloud, frameworks de frontend reativos, arquitetura de microsserviços. E junto com tudo isso, emergiu um elemento fundamental para o funcionamento de tudo o que foi mencionado anteriormente: API ou Application Programing Interface.

A segurança de APIs é peculiar em relação à segurança de aplicações web a ponto de ter a sua própria lista de top 10 ameaças da OWASP. Apesar de ter grandes vulnerabilidades em comum com aplicações web, como injection, estão em destaque problemas de autenticação e autorização, como Broken Object Level Authorization e Broken Authentication.

Um exemplo destes tipos de vulnerabilidade aconteceu com a Uber em 2019. Ao criar uma conta, o browser do motorista enviava uma chamada com o parâmetro “userUuid”, e em troca recebia um JSON com detalhes da conta. O problema é que a API não validava que quem estava chamando era realmente o dono do “userUuid”, sendo que um atacante poderia enviar uma chamada com o “userUuid” de qualquer usuário, recebendo dentre outras informações sensíveis, o token de identificação, que poderia ser usado para roubar a conta. Felizmente isso foi descoberto antes de ser explorado, mas mostra a gravidade do problema.

E por que um WAF não protege contra um ataque como esse? A resposta é que esse tipo de vulnerabilidade depende intimamente do contexto específico da aplicação. No caso acima, a requisição é idêntica a uma requisição comum, de forma que difícil ela se encaixaria no padrão de alguma regra. Seria necessário detectar que a chamada na API não foi realizada em um fluxo normal, ou que o atacante não tem autorização sobre o “userUuid”, o que é muito específico à forma como a aplicação foi construída.

Algumas são as razões para a emergência dessas vulnerabilidades específicas. Como a renderização é feita do lado do cliente, as APIs ficam mais próximas às fontes de dados sensíveis. Além disso, com a emergência da arquitetura de microsserviços, a autenticação e a lógica da API são executadas em serviços diferentes, provavelmente geridos por equipes diferentes. Mesmo que as equipes adotem boas práticas de autorização, cada interação entre microsserviços corre o risco de expor uma falha. Como a complexidade se eleva exponencialmente em relação à quantidade de serviços e equipes, os pontos potenciais de falha são multiplicados. Por isso AST também perde eficiência neste contexto: o código do serviço pode estar perfeito, mas o problema está na interação com outros serviços.

Tendo em vista tudo o que foi mencionado, para a GoCache, é fundamental investir em novas soluções mais direcionadas aos problemas de vulnerabilidades de API. E é exatamente o que está acontecendo! Estamos preparando uma série de novidades em uma nova suite de produtos de API Protection.

Entre em contato com produto@gocache.com.br para participar do beta e ajudar a construir o futuro da Segurança de Aplicações Web. Afinal, API Security também é Web Application Security, e esse é o tema do próximo artigo desta série.

Por Victor Queiroz Vilas Boas, Product Manager GoCache.

PwnKit, a nova vulnerabilidade que está abalando o ecossistema Linux e a internet

Acabou de ser descoberta, pela equipe de pesquisa da Qualys, uma nova vulnerabilidade de corrupção de memória que afeta as principais distribuições Linux. Identificada pelo CVE ID CVE-2021-4034, afeta o Polkit (antigo PolicyKit), um programa presente em praticamente todas as distribuições Linux modernas, responsável pelo controle de privilégios entre processos no sistema operacional.

Essa vulnerabilidade existe há doze anos, mas só recentemente veio à tona. É facilmente explorável, e permite que qualquer usuário obtenha privilégios totais de superusuário (root) em um sistema vulnerável, o que a torna bastante crítica.

O fato do sistema operacional Linux ser amplamente utilizado, abrangendo sistemas críticos de empresas de diversos segmentos, governos, e da própria infraestutura que garante o funcionamento da Internet, agrava a situação. O Linux é também a base de muitos equipamentos da chamada Internet das Coisas (IoT), além de dispositivos embarcados (em indústrias e veículos, por exemplo), elementos de rede (roteadores, switches etc.), entre outros, o que torna a superfície de ataque potencialmente muito grande, permitindo ataques em larga escala.

Os principais desenvolvedores de distribuições Linux já estão atuando para disponibilizar atualizações do Polkit com a correção dessa vulnerabilidade. Fique atento, acompanhe os boletins de segurança da sua distribuição e, caso tenha sistemas vulneráveis, planeje a atualização com máxima prioridade.