O blog da segurança de dentro para fora Blog   /     /  

O que é IDOR (Insecure Direct Object Reference)?

O que é IDOR (Insecure Direct Object Reference)?

Conteúdos

    Referências diretas inseguras a objetos são vulnerabilidades comuns e potencialmente devastadoras resultantes de controle de acesso interrompido em aplicativos da web. Os bugs IDOR permitem que um invasor interaja maliciosamente com um aplicativo manipulando uma “referência direta de objeto”, como uma chave de banco de dados, parâmetro de consulta ou nome de arquivo. 

    À medida que aprendermos mais sobre a história da origem do meu vilão neste artigo, responderemos a perguntas importantes como: "O que é IDOR?”, “Como encontro uma vulnerabilidade IDOR?” e “O que posso fazer para me proteger contra um IDOR?” 

    Como funciona uma vulnerabilidade IDOR?

    Para entender melhor como um invasor pode explorar uma vulnerabilidade IDOR, vamos dar uma olhada no meu exemplo do mundo real. Como um estudante de jornalismo do terceiro ano, li sobre uma situação em que um aluna de uma universidade diferente acessou os registros de outros alunos apenas alterando uma parte do endereço em seu navegador. Intrigado, decido ver se os sistemas da minha universidade sofriam de uma vulnerabilidade semelhante. 

    Para testar isso, entrei em minha conta de aluno e observei que, assim como a história que li, o aplicativo estava usando minha ID de estudante como um identificador para recuperar meus horários de aulas, notas e outras informações pessoais. A URL era mais ou menos assim: 

    https://stateuniversity.example/GetStudentRecords?ID=00123456789 

    Mas e se eu simplesmente substituísse a parte “ID=00123456789” da URL pela ID de um aluno diferente? Depois de receber permissão, dei uma chance. Com certeza, o sistema exibiu os registros desse aluno em vez dos meus. 

    A repetição desse processo revelou que era bastante simples obter os registros de qualquer aluno ou funcionário da universidade, desde que eu soubesse (ou pudesse adivinhar) o número de registro de estudante ou funcionário. Como os dados confidenciais estavam sendo expostos, relatei a vulnerabilidade à universidade imediatamente. 

    Assim como acontece em um acidente de avião, algumas coisas precisar dar errada para que eu conseguisse esse hack. Primeiro, o aplicativo obviamente não incluía nenhuma verificação de autorização para ver se eu deveria ter acesso aos registros que solicitei – é daí que vem o “Inseguro” na referência insegura de objeto direto. 

    Em segundo lugar, a universidade projetou seu aplicativo para basear as pesquisas de registros de banco de dados apenas na identificação do aluno/funcionário - há a “referência de objeto direto”. Por fim, os Ids foram listados na barra de endereços em um formato fácil de reconhecer, simplificando a manipulação até mesmo para um novato em segurança cibernética. 

    Quatro tipos comuns de IDOR

    Atualmente, os identificadores são mais comumente encontrados em cabeçalhos ou APIs do que diretamente na barra de endereços do usuário. No entanto, a natureza dinâmica da maioria dos sites significa que identificadores e parâmetros ainda são muito usados de uma forma ou de outra. Os identificadores podem incluir: 

    • Chaves de bancos de dados 
    • Parâmetros de consulta 
    • Ids de usuário ou sessão 
    • Nomes de arquivos 

    Como identificar vulnerabilidades IDOR

    Vulnerabilidades IDOR geralmente são simples de explorar, mas podem ser difíceis para os desenvolvedores identificarem. Ferramentas e técnicas como análise de código e varredura automatizada não são tão boas para detectar bugs IDOR quanto muitos outros problemas de segurança comuns, o que significa que identificar essas vulnerabilidades pode exigir testes manuais de segurança. 

    Algumas maneiras de identificar vulnerabilidades incluem: 

    • Executar testes básicos usando as ferramentas de desenvolvedor integradas em um navegador web.
    • Usar uma ferramenta como o Burp Suit ou Open Web Application Security Project Zed Attack Proxy (OWASP ZAP) para aumentar a eficácia do teste manual.
    • Participar de um programa de divulgação de vulnerabilidades.
    • Contratar uma empresa externa de testes de penetração para revisar aplicativos críticos da web.Untitled-4

    Quatro tipos de ataques IDOR

    Conceitualmente, a maioria dos ataques que exploram o IDOR funcionam de maneira semelhante, mas existem pequenas nuances nas quais o identificador é exposto e/ou manipulado por hackers: 

    1- Adulteração de URL

    A adulteração de URL é a maneira mais simples de explorar uma vulnerabilidade IDOR e geralmente requer pouco ou nenhum conhecimento técnico. Nesse tipo de ataque, podemos simplesmente alterar o valor de um parâmetro na barra de endereço do nosso navegador. 

    No exemplo da minha faculdade, mudei o número da minha identificação de estudante para a de outros alunos, professores e funcionários da universidade. As ferramentas também podem ser usadas para modificar a solicitação HTTP, mas o resultado final foi o mesmo: o servidor concede algum tipo de acesso inapropriado a um invasor. 

    Eu tinha a vantagem de saber alguns desses Ids com antecedência – um invasor real provavelmente gastaria tempo enumerando valores diferentes e tentando encontrar um padrão previsível. 

    Abaixo: um simples ataque de adulteração de URL pode consistir na alteração de um único ID de parâmetro de uma barra de endereço.

    Untitled (1)

    2- Manipulação corporal

    A manipulação do corpo é muito semelhante à adulteração de URL, exceto que o invasor está modificando um ou mais valores no corpo do documento em vez da URL. Isso pode significar alterar os valores de botões de opção, caixas de seleção ou outros elementos de formulário. Também pode ser possível alterar os valores ocultos do formulário. 

    Talvez um contato tenha um valor de formulário oculto que passa o ID do usuário para a conta conectada no momento. Se pudermos alterar esse valor oculto antes do envio do formulário, podemos fazer com que nossa solicitação pareça vir de um usuário diferente. 

    3- Manipulação do cookie ou ID JSON

    Cookies e JavaScript Object Notation (JSON) são amplamente usados nos bastidores para armazenar e trocar dados entre cliente e servidor, ajudando a tornar as páginas da Web mais dinâmicas. Quando fazemos login em um site, por exemplo, o servidor pode armazenar um valor de ID de usuário ou sessão dentro de um cookie ou objeto JSON. Se o aplicativo contiver uma vulnerabilidade IDOR, um invasor poderá alterar esses valores. 

    4- Passagem de diretório


    É um tipo exclusivo de vulnerabilidade IDOR que um invasor aproveita para acessar ou manipular arquivos ou pastas diretamente no servidor que executa o aplicativo da web. Este é um nível mais avançado do que outros tipos de ataques IDOR porque permite acesso direto aos recursos do sistema de arquivos em vez de registros do banco de dados. A vulnerabilidade permite que um invasor acesse arquivos de configuração, descubra credenciais de usuário ou até mesmo obtenha um shell totalmente funcional do alvo. 

    Como o IDOR afeta os dados

    As vulnerabilidades IDOR podem ser simples de explorar, mas os impactos desse tipo de ataque são potencialmente catastróficos. Abaixo estão apenas algumas maneiras pelas quais um IDOR pode impactar a confidencialidade, integridade e disponibiidade dos dados de sua organização: 

    • Confidencialidade – Como vimos no exemplo da minha universidade, um ataque IDOR bem-sucedido dá ao invasor acesso a algo que ele não deveria poder visualizar. Isso pode ser qualquer coisa, desde um código de desconto para compradores frequentes em uma loja online até informações confidenciais de saúde ou segredos comerciais. 
    • Integridade – Em alguns casos, um invasor pode usar um IDOR para modificar dados. Normalmente, esses tipos de ataques manipulam parâmetros em uma solicitação HTTP POST. Em 2020, um pesquisador de segurança descobriu uma vulnerabilidade IDOR que permitiria a um invasor alterar a senha de contas de usuário nos servidores Web do Departamento de Defesa dos EUA. Os invasores podem usar vulnerabilidades semelhantes para adicionar dados não autorizados, como informações financeiras falsificadas ou documentos incriminatórios, a um usuário desavisado. 
    • Disponibilidade – A vulnerabilidade também pode ser usada para impactar a disponibilidade de recursos. Imagine uma função em um aplicativo PHP que exclua documentos por nome de arquivo. Sem verificações de autorização adequadas, um invasor pode alterar o nome do arquivo e excluir documentos aos quais nem mesmo tem acesso!

    Untitled (2)

    Quatro dicas para evitar vulnerabilidades IDOR

    As vulnerabilidades IDOR podem ser prevenidas evitando referências diretas a objetos, implementando a validação de entrada do usuário e implementando identificadores globalmente exclusivos (conhecidos como GUIDs) ou identificadores aleatório. Embora não haja uma solução infalível quando se trata de como evitar vulnerabilidades IDOR, algumas dessas etapas podem ajudar. 

    1- Implementar controle de acesso adequado e gerenciamento de sessão

    O OWASP, que cunhou o temor “referência insegura de objeto direto", considera o IDOR uma questão de controle de acesso acima de tudo. Verificações adequadas de controle de acesso e recursos de gerenciamento de sessão devem impedir que um usuário mal-intencionado acesso ou manipule dados, mesmo quando identificadores fáceis de enumerar são usados. As folhas de dicas OWASP sobre autorização e autenticação podem ser úteis para revisar. 

    2- Evite referências diretas a objetos

    Deixando de lado os problemas de controle de acesso, o uso de referências diretas de objetos em seu aplicativo costuma ser considerado uma prática de codificação desleixada. Isso é especialmente verdadeiro quando se trata de dados confidenciais, como IDs de alunos/funcionários, números de contas, etc. Referências de objetos indiretos geralmente na forma de mapas ou referência ou hash – abordam vulnerabilidades IDOR ocultando ou ofuscando o identificador verdadeiro, que permanece oculto no lado do servidor. Se forem usados hashes, certifique-se de incluir um sal forte e exclusivo, pois os algoritmos básicos de hash, como o MD5, são fáceis de reverter. 

    3- Use GUIDs ou identificadores aleatórios

    Em aplicativos que usam identificadores iterativos ou sequenciais ou valores de parâmetro, enumerar uma vulnerabilidade de referência direta de objeto insegura é muito fácil. Se eu notar que meu ID de usuário se parece como 0001, por exemplo, posso adivinhar que há um usuário 0002. O poder de computação moderno e as técnicas de automação tornam bastante fácil tentar todos os valores possíveis de 0000 a 9999 até encontrar o usuário que estou procurando. 

    Nem os GUIDs nem os identificadores universalmente exclusivos removem a vulnerabilidade subjacente, mas tornam muito mais difícil enumerar e explorar. Um identificador como f492325c-ae75-4335-a2a6-1a716b723f2a é muito mais difícil de decifrar que algo menos complexo. 

    4- Valide a entrada do usuário

    A validação de entrada do usuário pode ajudar a mitigar um grande número de problemas de segurança, incluindo IDOR. A enumeração de identificadores torna-se muito mais difícil se estivermos validando estritamente os parâmetros fornecidos pelo usuário para comprimento e formato adequados. A validação pode ocorrer no lado do cliente ou no lado do servidor, dependendo do que for mais apropriado. 

    Vulnerabilidades IDOR: apenas mais uma ameaça para se preocupar

    As vulnerabilidades IDOR são apenas uma ameaça potencial à segurança dos dados da sua organização e que, infelizmente, pode exigir muito esforço manual para identificar e remediar. 

    Felizmente, ferramentas como a Varonis Data Security Platform podem ajudá-lo a automatizar a conformidade com a privacidade e aprimorar a proteção contra ameaças que consomem recursos, como ransomware, economizando seu tempo limitado para as tarefas mais críticas. Agende uma demonstração para ver como a Varonis pode ampliar a eficiência de suas equipes de segurança. 

    What you should do now

    Below are three ways we can help you begin your journey to reducing data risk at your company:

    1. Schedule a demo session with us, where we can show you around, answer your questions, and help you see if Varonis is right for you.
    2. Download our free report and learn the risks associated with SaaS data exposure.
    3. Share this blog post with someone you know who'd enjoy reading it. Share it with them via email, LinkedIn, Twitter, Reddit, or Facebook.

    We're Varonis.

    We've been keeping the world's most valuable data out of enemy hands since 2005 with our market-leading data security platform.

    How it works