Sua IA está em conformidade? Registre-se Hoje

Técnico

API1:2023 Autorização em Nível de Objeto Quebrada (BOLA)

June 6, 2023

Stephanie Best
Director, Product Marketing

As APIs frequentemente expõem endpoints que lidam com identificadores de objeto, criando uma vasta superfície de ataque potencial. A autorização no nível do objeto é um mecanismo de controle de acesso geralmente implementado no nível do código para validar a capacidade de um usuário de acessar um determinado objeto. Os mecanismos de autorização e controle de acesso em aplicações modernas são complexos e difundidos. Mesmo que uma aplicação implemente uma infraestrutura adequada para verificações de autorização, os desenvolvedores frequentemente esquecem de aplicar essas verificações antes de acessar um objeto.

Atacantes podem facilmente explorar endpoints de API que são vulneráveis a autorização de nível de objeto quebrada (BOLA) manipulando o ID de um objeto que é enviado dentro de uma requisição de API. Isso ocorre porque o componente do servidor geralmente não rastreia completamente o estado do cliente. Em vez disso, o componente do servidor geralmente depende de parâmetros como IDs de objeto enviados pelo cliente para decidir quais objetos podem ser acessados.

As vulnerabilidades BOLA estão presentes em cerca de 40% de todos os ataques a APIs e são listadas como a ameaça número um à segurança de APIs no OWASP API Security Top 10. Qualquer acesso a dados não autorizados é grave, independentemente da sua classificação ou sensibilidade. Infelizmente, esses tipos de falhas de autorização não são facilmente detectáveis com testes estáticos ou dinâmicos automatizados.

Todo endpoint de API que recebe um ID de um objeto e executa qualquer tipo de ação sobre ele deve implementar verificações de autorização no nível do objeto. Essas verificações devem ser feitas continuamente ao longo de uma determinada sessão para validar que o usuário logado tem acesso para realizar a ação solicitada em um objeto solicitado.

Qual o Impacto Potencial de um ataque BOLA?

A falha em aplicar a autorização no nível do objeto pode levar à exfiltração de dados, bem como à visualização, modificação ou destruição não autorizada de dados. BOLA também pode levar à completa tomada de conta como em casos em que um atacante pode comprometer um fluxo de redefinição de senha e redefinir as credenciais de uma conta para a qual não está autorizado.

No exemplo acima, a lógica de backend da aplicação consulta o banco de dados com o userId no parâmetro de consulta, enquanto verifica a autorização com o userId no cookie. Em condições normais, esses dois valores deveriam corresponder. No entanto, um atacante poderia simplesmente modificar o valor do userId no parâmetro de consulta para acessar dados não autorizados.

The attacker (John Smith) is logged in with userId 207939055 . When the attacker changed the userId in the query parameter to userId 207938044 , the application did not validate that the userId of the authenticated user matches that of the record being requested in the query parameter or whether the authenticated user is authorized to view that given record. As a result, the database backend returns the record for David Miller as opposed to John Smith.

Se os userIds forem sequenciais, o atacante pode simplesmente enumerar o valor do parâmetro de consulta userId para coletar, ou exfiltrar, grandes quantidades de dados, especialmente se os limites de taxa não forem aplicados.

Exemplos Reais de Vulnerabilidades de Autorização de Nível de Objeto Quebrada (BOLA)

Como um Hacker Poderia Ter Assumido o Controle da Sua Conta Uber

Em 2019, um pesquisador de segurança divulgou uma vulnerabilidade BOLA que teria permitido a um atacante assumir o controle de qualquer conta de usuário no Uber. Ao explorar a vulnerabilidade, o atacante poderia acessar a conta de outro usuário para rastrear a localização do usuário alvo, fazer viagens e muito mais. O atacante também poderia explorar a vulnerabilidade BOLA para coletar tokens de acesso do aplicativo móvel Uber e, em seguida, usar esses tokens de acesso para assumir as contas do Uber Driver e Uber Eats. O userId do aplicativo Uber poderia ser facilmente enumerado fornecendo o número de telefone ou endereço de e-mail de um usuário em outra requisição de API.

O Ataque BOLA no Banco Central da Rússia

Um exemplo proeminente de um ataque BOLA bem-sucedido ocorreu no banco central da Rússia em 2016, onde atacantes conseguiram alterar um ID de conta e realizar transferências não autorizadas para outras contas através de um Sistema de Pagamentos Rápidos, conseguindo roubar cerca de 2 bilhões de rublos.

Neste caso, os invasores conseguiram obter dados de contas de clientes explorando a vulnerabilidade BOLA, lançaram a aplicação móvel do banco em modo de depuração, fizeram login como um cliente real e transferiram fundos para outro banco. Antes de realizar a transferência, o invasor alterou o ID da conta para o ID de outro cliente, permitindo que a transferência fosse processada sem a devida verificação de identidade.

Por que as Ferramentas Existentes Falham em Protegê-lo Contra Vulnerabilidades BOLA

Controles de segurança tradicionais como WAFs e gateways de API não detectam esses tipos de ataques porque não compreendem o contexto da API e não estabelecem uma linha de base para o uso normal da API.

Quando se trata de vulnerabilidades BOLA, essas ferramentas não sabem que o userId no parâmetro de consulta e o userId no cookie devem corresponder. Além disso, como este não é um padrão de ataque conhecido e previsível, como uma injeção de código onde a correspondência de padrões básicos e a filtragem de mensagens podem ser empregadas, um ataque BOLA não pode ser identificado pelas assinaturas usadas por um WAF ou gateway de API.

Como Proteger APIs Contra Ataques de Autorização em Nível de Objeto Quebrada (BOLA)

Para prevenir ataques BOLA, uma solução de segurança de API deve ser capaz de aprender a lógica de negócios de uma API e detectar quando um usuário autenticado está tentando obter acesso não autorizado aos dados de outro usuário. Efetivamente, a ferramenta de segurança de API precisa ser capaz de reconhecer que os dois objetos devem corresponder e que o usuário autenticado está autorizado a acessar o objeto solicitado. Esse tipo de detecção requer a análise de grandes volumes de tráfego de API a fim de obter contexto e compreender o comportamento normal de cada API.

Apenas uma solução que fornece uma linha de base de uso normal pode identificar comportamentos anormais, como um invasor manipulando o userId em um parâmetro de consulta em requisições GET, ou uma variável userId dentro do corpo de uma mensagem em requisições POST.

Para ver como a plataforma Salt pode ajudá-lo a prevenir ataques BOLA, solicite uma demonstração hoje.

Blog da Salt Security

Assine a Newsletter da Salt para receber os recursos e posts de blog mais recentes.

Nossas últimas publicações