retornar retornar
Descodificação de ameaças cibernéticas  para 2023

POR:
Agustín Orellana
(Hacking Ético e Pesquisa)

COMPARTILHAR

Twitter Facebook Linkedin

Vulnerabilidades ocultas: analisando os ataques à cadeia de suprimentos

No vasto universo da segurança da informação, os aplicativos da Web ocupam um lugar importante devido à ampla gama de dados e funções que eles manipulam. No entanto, essa dependência dos aplicativos Web também os torna um alvo atraente para os criminosos cibernéticos e traz à tona a importância de abordar as vulnerabilidades que podem comprometer sua segurança. Uma dessas vulnerabilidades críticas é a vulnerabilidade IDOR (Insecure Direct Object Reference). Nesta publicação, discutiremos em profundidade o que é essa vulnerabilidade, como ela pode ser encontrada, alguns casos reais, a importância de seu impacto para as organizações e como lidar com essa vulnerabilidade a partir de uma perspectiva de práticas recomendadas de segurança para evitar ataques de IDOR.

Definição

A vulnerabilidade IDOR surge devido a deficiências no controle de acesso e na validação de identidade em um aplicativo da Web. Quando um aplicativo não verifica adequadamente a autorização de um usuário antes de permitir o acesso a um objeto específico, ocorre uma vulnerabilidade IDOR. Isso pode ocorrer quando o aplicativo se baseia exclusivamente em informações fornecidas pelo cliente, como identificadores de objetos em solicitações HTTP, sem verificar se o usuário tem as permissões adequadas para acessar esses objetos.
Deve-se observar que essa vulnerabilidade, em alguns casos, costuma ser o início de uma cadeia de ataques mais complexa.


O que é controle de acesso quebrado?

O controle de acesso quebrado, ou "Broken Access Control", é uma categoria mais ampla de vulnerabilidades de segurança que inclui a vulnerabilidade IDOR. O controle de acesso quebrado é atualmente classificado como a vulnerabilidade mais comum de acordo com o estudo de 2021 da OWASP. Ela se refere à incapacidade de um aplicativo de impor restrições apropriadas sobre quais usuários podem acessar quais recursos. As vulnerabilidades IDOR são um subconjunto desse problema mais amplo e se concentram especificamente em referências diretas a objetos.

Compreensão do conceito de objeto

Para entender completamente a vulnerabilidade do IDOR, é importante esclarecer o conceito de "objeto" no contexto dos aplicativos da Web. Na programação orientada a objetos, um objeto é uma instância única de uma classe que representa uma entidade com propriedades e comportamentos específicos. No contexto dos aplicativos Web, esses objetos podem ser qualquer tipo de recurso ou dados que o aplicativo manipula, como perfis de usuário, arquivos, registros de banco de dados etc.

Exemplos

Para visualizar melhor como essa vulnerabilidade se manifesta no mundo real, vamos dar uma olhada em alguns exemplos:

Acesso a perfis de usuário

Suponha que um aplicativo de rede social atribua a cada usuário um identificador exclusivo e use esse ID em URLs para acessar perfis de usuários (por exemplo, /profile/1234). Se um usuário autenticado modificar manualmente o URL para acessar perfis que não pertencem a ele (por exemplo, tentar fazer login no usuário 1337 como “/profile/1337”) e o aplicativo não validar essa ação, ocorrerá uma vulnerabilidade de IDOR.


Neste exemplo, o usuário autenticado tem acesso ao seu próprio perfil acessando "/perfil/1234". No entanto, se o usuário modificar o ID no URL para "/perfil/1337" e o aplicativo não verificar a autorização adequada, ele poderá acessar o perfil de outro usuário.

Referência direta a arquivos estáticos

As vulnerabilidades de IDOR geralmente surgem quando recursos confidenciais estão localizados em arquivos estáticos no sistema de arquivos do lado do servidor. Por exemplo, um site pode salvar transcrições de mensagens de bate-papo no disco usando um nome de arquivo crescente e permitir que os usuários as recuperem visitando um URL como o seguinte:


Nessa situação, um invasor pode simplesmente modificar o nome do arquivo para recuperar uma transcrição criada por outro usuário e, possivelmente, obter credenciais de usuário e outros dados confidenciais. Isso também se aplica a aplicativos da Web em que arquivos com outras características são armazenados, como um arquivo com extensão ".pdf", que pode conter informações confidenciais sobre dados do usuário, transações bancárias, resultados de exames médicos etc. Esses dois exemplos são um dos muitos cenários em que essa vulnerabilidade é encontrada.

Referência direta a objetos do banco de dados

Imagine um site que use o URL especificado abaixo para obter informações de um cliente, extraindo os dados do banco de dados.


Aqui, o número do cliente é usado diretamente como um índice de registro em consultas ao banco de dados. Se não houver outros controles em vigor, um invasor poderá simplesmente modificar o valor "customer_number", ignorando os controles de acesso para visualizar os registros de outros clientes. Esse é um exemplo de vulnerabilidade de IDOR que leva ao aumento horizontal de privilégios.

Um invasor poderia realizar um escalonamento horizontal e vertical de privilégios alterando seu usuário para um com privilégios adicionais e contornando os controles de acesso.

Impacto potencial

Embora já tenhamos aprendido como essa vulnerabilidade pode ser explorada em um caso real, é igualmente importante estar ciente de que o impacto de uma vulnerabilidade IDOR pode ser significativo e ter sérias repercussões tanto para os usuários individuais quanto para as organizações que gerenciam os aplicativos afetados, pois essa vulnerabilidade pode ser o gatilho para outras, tornando-a potencialmente perigosa. Alguns dos impactos mais comuns incluem:

 • Vazamento de dados confidenciais: os invasores podem acessar informações confidenciais, como dados pessoais, financeiros ou médicos, de outros usuários.

 • Manipulação de dados: Os invasores podem modificar, excluir ou criar dados não autorizados, o que pode ter consequências catastróficas para a integridade dos dados.

 • Violação de privacidade: a privacidade dos usuários é comprometida quando seus dados pessoais são expostos a pessoas não autorizadas, o que pode levar a uma perda de confiança por parte dos usuários.

 • Perda de reputação e confiança: as organizações afetadas podem perder a confiança de seus usuários devido à incapacidade da organização de proteger seus dados, o que pode resultar em uma base de usuários em declínio e perda de receita a longo prazo.

Estratégias de prevenção

 • Implemente controles de acesso robustos: Una de las formas más efectivas de mitigar la vulnerabilidad IDOR es implementar controles de acceso robustos en la aplicación. Esto implica verificar en cada solicitud si el usuario tiene los permisos necesarios para acceder al recurso solicitado. Los controles de acceso pueden basarse en roles, privilegios específicos o en el principio de mínimo privilegio, donde los usuarios solo tienen acceso a los recursos necesarios para llevar a cabo sus funciones. También se puede reemplazar el ID (identificador) por el uso de UUID (Identificador Único Universal) con la finalidad de aportar una capa extra de seguridad en la aplicación web.

 • Use tokens de sessão e autorização: Os tokens de sessão e de autorização podem ajudar a atenuar a vulnerabilidade IDOR, fornecendo uma camada adicional de segurança. Os tokens de sessão são usados para autenticar usuários e verificar sua identidade para cada solicitação, enquanto os tokens de autorização são usados para determinar quais recursos específicos um usuário tem permissão para acessar. Ao implementar corretamente os tokens de sessão e de autorização, é possível impedir o acesso não autorizado aos recursos do aplicativo.

 • Valide a entrada do usuário: a validação adequada da entrada do usuário é essencial para evitar ataques de IDOR. Isso envolve verificar todos os dados fornecidos pelo usuário, como identificadores de objetos em solicitações HTTP, e garantir que sejam válidos e autorizados antes de processá-los. No entanto, também é necessário realizar uma sanitização adequada de todas as entradas do aplicativo Web. A sanitização de entradas vai além, garantindo que os dados sejam seguros e não contenham nenhum código malicioso que possa ser usado para manipular o comportamento do aplicativo. Com a sanitização das entradas, os caracteres especiais, os comandos SQL, as tags HTML ou outros elementos que poderiam ser usados para ataques de injeção ou manipulação de dados são removidos. Isso reduz significativamente o risco de que os criminosos cibernéticos possam explorar a vulnerabilidade IDOR introduzindo dados manipulados ou mal-intencionados no aplicativo.

 • Implemente listas de controle de acesso (ACLs): as listas de controle de acesso (ACLs) são uma ferramenta útil para controlar e gerenciar o acesso a recursos específicos em um aplicativo da Web. Ao criar ACLs que definem explicitamente quem tem permissão para acessar quais recursos, o risco de vulnerabilidades de IDOR pode ser significativamente reduzido. As ACLs podem ser baseadas em funções de usuário, grupos de usuários ou critérios de autorização específicos para garantir que somente usuários autorizados possam acessar os recursos relevantes.

 • Realize testes regulares de segurança: testes regulares de segurança, como testes de penetração e auditorias de segurança, são essenciais para identificar e corrigir vulnerabilidades de IDOR em um aplicativo da Web. Esses testes podem ajudar a identificar possíveis pontos fracos no controle de acesso e na validação de entrada, além de avaliar a eficácia das medidas de atenuação implementadas. Ao realizar testes de segurança regularmente, você pode garantir que seu aplicativo esteja protegido contra as ameaças e vulnerabilidades de segurança mais recentes.

 • Manter-se atualizado com as práticas recomendadas de segurança: como as ameaças à segurança estão em constante evolução, é importante manter-se atualizado com as práticas recomendadas de segurança e as técnicas de atenuação mais recentes. Isso pode incluir a participação em cursos de treinamento em segurança de computadores, seguindo as recomendações de organizações como o Open Web Application Security Project (OWASP) e mantendo-se a par das atualizações e correções de segurança para as estruturas e bibliotecas usadas no aplicativo.

Ao implementar essas medidas de atenuação e corrigir a vulnerabilidade IDOR, as organizações podem reduzir significativamente o risco de exposição a ataques e proteger a integridade e a confidencialidade dos dados de seus usuários. No entanto, é importante lembrar que a segurança de aplicativos Web é um processo contínuo e deve ser abordada de forma proativa e sistemática para garantir uma proteção eficaz contra ameaças à segurança.

Conclusão

A vulnerabilidade da IDOR não é apenas uma questão técnica, mas também uma responsabilidade ética e legal para as organizações que gerenciam aplicativos da Web. Proteger a integridade e a confidencialidade dos dados do usuário é fundamental para manter a confiança do cliente e cumprir as normas de privacidade e proteção de dados.
Por fim, mencione que essa vulnerabilidade é uma ameaça séria que exige atenção e ação dos desenvolvedores, das equipes de segurança da informação e das organizações como um todo. Ao tomar medidas proativas para identificar, corrigir e prevenir a IDOR, podemos fortalecer a segurança de nossos aplicativos Web e, por sua vez, proteger os dados confidenciais dos usuários no cenário de ameaças à segurança cibernética em constante evolução.