Aikido

Vulnerabilidades IDOR Explicadas: Por Que Elas Persistem em Aplicações Modernas

Escrito por
Sooraj Shah

Referências Diretas Inseguras a Objetos, comumente referidas como IDORs, permanecem uma das classes de vulnerabilidades de aplicação mais comuns e prejudiciais. Apesar de serem bem documentadas e amplamente compreendidas em um nível conceitual, elas continuam a aparecer em sistemas de produção reais, particularmente em aplicações modernas, orientadas por API.

Uma vulnerabilidade IDOR ocorre quando uma aplicação utiliza um identificador fornecido pelo usuário para acessar um objeto interno sem verificar se o usuário atual está autorizado a acessar aquele objeto específico. Este problema se enquadra na categoria mais ampla de controle de acesso quebrado, mas é distinto na forma como se manifesta e por que é difícil eliminá-lo completamente.

IDORs persistem não porque as equipes as desconheçam, mas porque elas surgem da forma como os sistemas reais evoluem. Elas são frequentemente introduzidas nas bordas dos fluxos de trabalho, durante refatorações, ou quando suposições de propriedade são reutilizadas em etapas que não foram originalmente projetadas para serem conectadas. Este artigo explica como as IDORs se apresentam na prática, por que as abordagens comuns de teste de segurança têm dificuldade em detectá-las de forma confiável e como as técnicas de teste modernas validam falhas de propriedade em sistemas em execução.

O Que É uma Referência Direta Insegura a Objeto na Prática

Uma vulnerabilidade IDOR ocorre quando uma aplicação aceita um identificador que referencia um objeto interno, como um registro, documento ou conta, e o utiliza diretamente sem impor consistentemente a autorização para esse objeto.

Identificadores comumente aparecem como:

  • IDs de usuário em caminhos de URL
  • IDs de pedido ou fatura em parâmetros de consulta
  • Identificadores de recurso em corpos de requisição

A vulnerabilidade não é o identificador em si. A vulnerabilidade é a suposição de que o identificador pertence ao usuário autenticado, sem revalidar essa suposição no servidor.

Em aplicações modernas, essa suposição frequentemente se mantém na maioria dos lugares, mas não em todos. Essa inconsistência é onde as IDORs existem.

Por Que as Vulnerabilidades IDOR São Especialmente Perigosas em APIs

Na literatura de segurança de API, IDORs são frequentemente referidas como Broken Object Level Authorization (BOLA), o principal risco no OWASP API Security Top 10. A OWASP adotou o termo BOLA para se adequar ao design moderno de API.

APIs expõem a funcionalidade e os dados centrais da aplicação. Quando uma IDOR existe em uma API, atacantes podem frequentemente explorá-la em larga escala.

Impactos comuns incluem:

  • Acessar dados sensíveis pertencentes a outros usuários
  • Modificar ou excluir recursos de propriedade de terceiros
  • Contornar regras de negócio vinculadas à propriedade ou função
  • Comprometer fluxos de trabalho como aprovações, faturamento ou gerenciamento de contas

Como as APIs são projetadas para automação, uma única verificação de propriedade ausente pode comprometer grandes partes de um sistema.

Tipos Comuns de Vulnerabilidades IDOR

IDOR é um termo guarda-chuva. Na prática, as equipes encontram vários padrões recorrentes:

  • IDOR Horizontal: Um usuário acessa objetos de outro usuário no mesmo nível de privilégio
  • IDOR Vertical: Identificadores permitem acesso a objetos privilegiados ou administrativos
  • Blind IDOR: A resposta não expõe dados, mas a ação é bem-sucedida no objeto de outra pessoa

Blind IDORs são especialmente difíceis de detectar com ferramentas que focam na exposição óbvia de dados. Eles frequentemente exigem validação explícita para confirmar o impacto.

Como as Vulnerabilidades IDOR São Tradicionalmente Testadas na Prática

Durante um teste de penetração, o teste de IDOR é tipicamente realizado através de replay cuidadoso de requisições e comparação.

Na prática, isso envolve:

  • Autenticar-se como um usuário legítimo
  • Executar fluxos de trabalho através da UI
  • Capturar requisições enviadas pelo navegador ou cliente
  • Reexecutar essas requisições com um usuário autenticado diferente
  • Comparar respostas para verificar se o comportamento muda

Por exemplo, se uma requisição que deveria retornar dados apenas para o Usuário A retorna os mesmos dados quando reexecutada como Usuário B, isso indica controle de acesso quebrado.

Essa abordagem é eficaz e amplamente utilizada. Ela depende da compreensão do testador sobre a intenção da aplicação e de sua capacidade de raciocinar sobre quais requisições são sensíveis à segurança.

No entanto, também é inerentemente manual e demorado. Cada fluxo de trabalho, função ou transição de estado adicional multiplica o número de requisições que precisam ser capturadas, reexecutadas e interpretadas. À medida que as aplicações se tornam mais complexas, torna-se impraticável aplicar essa comparação exaustivamente em todos os caminhos possíveis.

É por isso que o teste manual frequentemente encontra IDORs em áreas que recebem atenção especial, mas não pode garantir uma cobertura abrangente.

Por que as Ferramentas DAST Perdem Vulnerabilidades IDOR Reais

Ferramentas de Testes Dinâmicos de Segurança de Aplicações operam no nível da requisição. Elas rastreiam endpoints, realizam fuzzing em entradas e procuram por respostas anômalas. O que elas não entendem é a intenção. Um scanner não sabe se uma determinada fatura pertence ao Usuário A ou ao Usuário B. Ele não raciocina sobre propriedade, contexto de fluxo de trabalho ou se uma resposta é apropriada para a identidade autenticada. Enquanto a aplicação responde de forma limpa, frequentemente com um 200 OK, um scanner pode tratar a interação como bem-sucedida, mesmo quando dados sensíveis são expostos ao usuário errado.

Isso torna o DAST útil para problemas de superfície, mas fundamentalmente limitado quando se trata de IDORs e outras falhas de autorização que dependem da propriedade do objeto e do contexto. Essa limitação não é específica de nenhuma ferramenta. Ela reflete o fato de que a varredura no nível da requisição, mesmo quando bem implementada, não possui contexto suficiente para raciocinar sobre a propriedade do objeto e a intenção do fluxo de trabalho.

Por que a Análise Estática Cria Ruído em Torno de IDORs

Muitas equipes dependem de ferramentas de análise estática para sinalizar potenciais problemas de IDOR. Essas ferramentas tipicamente procuram por padrões onde identificadores são passados para handlers ou controllers sem verificações de autorização óbvias por perto.

Isso frequentemente produz um grande número de achados.

Na prática, a maioria deles são falsos positivos. Verificações de autorização frequentemente existem em outras partes da cadeia de chamadas, em middleware compartilhado, ou em nível de framework. A análise estática não pode determinar de forma confiável se um identificador é explorável em tempo de execução.

Esse problema é amplificado quando a autorização é implementada implicitamente ou distribuída entre camadas, incluindo:

  • Controle de acesso imposto por middleware ou decorators
  • Verificações implementadas em serviços compartilhados ou métodos de modelo
  • Lógica de permissão espalhada por múltiplos arquivos e caminhos de chamada

Nesses casos, ferramentas estáticas identificam um identificador e um caminho de acesso a dados, mas falham em compreender o contexto completo de autorização. O resultado é um alto volume de achados aparentemente plausíveis, porém com baixa confiança.

Esta é uma limitação fundamental da análise estática. Sem o estado de execução e o contexto de identidade, nenhuma análise em nível de código pode determinar de forma confiável se uma referência de objeto é explorável na prática.

Mesmo ferramentas de análise estática assistidas por IA permanecem preditivas. Elas analisam a estrutura do código, mas não conseguem confirmar o comportamento em tempo de execução. Como resultado, achados do tipo IDOR frequentemente apresentam taxas de falso positivo superiores a cinquenta por cento, forçando as equipes a priorizar questões teóricas enquanto falhas reais de propriedade correm o risco de serem negligenciadas.

O Problema Central: A Propriedade É Contextual

IDORs não são meramente verificações ausentes. São falhas de autorização contextual vinculadas à propriedade do objeto.

A propriedade é estabelecida através de uma combinação de:

  • Estado de autenticação
  • Modelos de função e permissão
  • Progressão do fluxo de trabalho
  • Estado do lado do servidor criado anteriormente em um processo

Se qualquer parte desse contexto for assumida em vez de revalidada, um IDOR pode surgir.

Alguns IDORs são de segunda ordem. Um identificador é aceito em uma etapa, armazenado e utilizado apenas posteriormente, quando o controle de acesso não é mais verificado. Essas questões são particularmente difíceis de detectar, pois o exploit é distribuído ao longo do tempo e de múltiplas etapas.

Testar IDORs de forma confiável exige fazer repetidamente uma pergunta simples: o que acontece se este identificador pertencer a outra pessoa?

UUIDs Não Previnem Vulnerabilidades IDOR

É um equívoco comum que mudar de identificadores sequenciais para UUIDs elimina o risco de IDOR.

Identificadores imprevisíveis reduzem ataques de força bruta. Eles não impedem acesso não autorizado se as verificações de propriedade estiverem ausentes.

Em sistemas reais, invasores obtêm identificadores através do comportamento normal da aplicação, incluindo:

  • Referências retornadas por outros endpoints
  • Links e URLs compartilhados
  • Mensagens e notificações no aplicativo
  • Logs, exportações e histórico do navegador

Se um invasor puder obter um identificador válido e o backend não impuser a propriedade, um IDOR ainda existe.

Como o pentest de IA Encontra Vulnerabilidades IDOR que Outros Não Detectam

O pentest de IA adota uma abordagem diferente para identificar falhas de autorização.

Em vez de parar na detecção, ele testa ativamente hipóteses sobre propriedade e controle de acesso em uma aplicação em execução.

No Aikido, essa abordagem é implementada através de Aikido Attack, um pentest autônomo que combina a criatividade humana com a velocidade da máquina. Ele é projetado para avaliar falhas de autorização e propriedade em ambientes reais. O Aikido Attack opera usando identidades reais, executa fluxos de trabalho de ponta a ponta e valida a explorabilidade antes de relatar as descobertas.

Para IDORs, este processo envolve:

  • Autenticando como usuários reais
  • Executando fluxos de trabalho completos de ponta a ponta
  • Reutilizando identificadores de objeto entre funções e contextos
  • Tentando acessar ou modificar recursos pertencentes a outros usuários
  • Validando se o comportamento é explorável e reproduzível

Apenas problemas que podem ser explorados na prática são relatados. O restante é descartado automaticamente.

Isso reduz falsos positivos e garante que as descobertas relatadas representem falhas reais de autorização. Em situações onde a intenção não é clara, um testador humano normalmente precisaria consultar o proprietário da aplicação. A validação em tempo de execução resolve isso diretamente.

Teste Focado em Suposições de Propriedade

O pentest de IA aloca esforço dedicado para avaliar suposições de propriedade vinculadas a identificadores de objeto em uma aplicação.

Em vez de tratar IDORs como um efeito colateral de testes genéricos, ele se concentra explicitamente em:

  • Identificadores vinculados a recursos de propriedade do usuário
  • Transições de fluxo de trabalho que reutilizam referências de objeto
  • Endpoints de backend que dependem de suposições de propriedade do frontend

Isso garante uma cobertura consistente das partes de um sistema onde IDORs realmente ocorrem.

Exemplo: IDOR em um Fluxo de Trabalho de Aprovação Multi-Etapas

Este exemplo ilustra como um IDOR pode surgir em várias etapas de um fluxo de trabalho, mesmo quando endpoints individuais parecem impor o controle de acesso corretamente.

Contexto da Aplicação

A aplicação inclui um fluxo de trabalho de aprovação multi-etapas para ações sensíveis. Um usuário cria uma solicitação que deve ser posteriormente revisada e aprovada. Cada solicitação está vinculada ao usuário que a criou e é referenciada por um identificador usado em múltiplas chamadas de API.

Apenas o proprietário de uma solicitação deve visualizá-la ou modificá-la antes da aprovação.

O Que o Sistema Observou

O pentest de IA autenticou-se como um usuário padrão e executou o fluxo de criação de solicitação. Durante esse processo, o sistema armazenou o estado intermediário do fluxo de trabalho no servidor e o reutilizou em etapas posteriores.

As verificações iniciais de propriedade foram corretamente aplicadas quando a solicitação foi criada.

Teste de Propriedade Através do Fluxo de Trabalho

Testes adicionais avaliaram como o identificador de requisição foi utilizado em etapas posteriores. Observou-se que:

  • O identificador foi reutilizado ao retomar uma requisição pendente
  • Chamadas de API posteriores assumiram a propriedade com base em validações anteriores
  • A propriedade não foi revalidada quando o fluxo de trabalho foi retomado

Ao repetir a ação de retomada com um usuário autenticado diferente e substituir o identificador da requisição, o sistema conseguiu acessar e agir sobre uma requisição da qual não era proprietário.

Por Que Isso Era uma Vulnerabilidade IDOR

O problema não se originou de uma única verificação ausente.

Ele resultou de uma suposição de que a propriedade já havia sido validada anteriormente no fluxo de trabalho e não precisava ser verificada novamente quando a requisição fosse retomada. Essa suposição falhou quando os identificadores de objeto foram reutilizados entre usuários.

Validação e Reprodutibilidade

Antes de relatar o problema, o sistema:

  • Repetiu a sequência completa várias vezes
  • Confirmou comportamento consistente
  • Capturou evidências de acesso não autorizado

Somente após a confirmação da reprodutibilidade e do impacto, o problema foi relatado.

Por Que Isso Seria Ignorado por Outras Abordagens

Cada endpoint individual se comportou corretamente de forma isolada. A vulnerabilidade só surgiu quando:

  • Um fluxo de trabalho foi parcialmente concluído
  • O estado do lado do servidor foi reutilizado
  • Uma etapa posterior foi invocada fora do contexto do usuário original

Isso tornou o problema difícil de detectar por meio de testes manuais e invisível para ferramentas de varredura baseadas em requisições.

Por Que o Teste Contínuo é Importante para Vulnerabilidades IDOR

IDORs são frequentemente introduzidas por mudanças.

Elas geralmente aparecem quando:

  • Novas funcionalidades reutilizam modelos de dados existentes
  • A lógica de autorização é adicionada em um lugar, mas não em outro
  • Refatorações contornam inadvertidamente verificações de propriedade anteriores

Um teste pontual pode confirmar que a propriedade é aplicada hoje, mas essa garantia se degrada à medida que a aplicação evolui.

Testes contínuos baseados em IA mantêm a confiança reavaliando as premissas de propriedade à medida que o software muda. Ferramentas de pentest contínuo apoiam isso testando continuamente fluxos de trabalho novos e modificados para acesso não autorizado a objetos.

Vulnerabilidades IDOR como um Sintoma da Complexidade do Sistema

IDORs não são casos de borda. São um resultado natural de sistemas complexos evoluindo ao longo do tempo.

À medida que as aplicações crescem, a lógica de propriedade se espalha por serviços, fluxos de trabalho e camadas. Premissas se acumulam, e o raciocínio sobre o acesso em nível de objeto torna-se cada vez mais difícil.

O pentest de IA não remove essa complexidade, mas a torna testável.

Ao exercitar sistematicamente os fluxos de trabalho, rastrear o estado e validar a propriedade em contexto, ele transforma uma das classes de vulnerabilidade mais persistentes em algo que pode ser detectado mais cedo, de forma mais consistente e com maior confiança.

Equipes de segurança priorizam cada vez mais IDORs e outras falhas de autorização porque são específicos do sistema, propensos a regressões e difíceis de validar sem testes em tempo de execução (runtime testing) cientes do fluxo de trabalho.


Você também pode gostar:

Faça um pentest hoje com Aikido Attack.

Compartilhar:

https://www.aikido.dev/blog/idor-vulnerability-explained

Assine para receber notícias sobre ameaças.

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.