Referências Inseguras Diretas a Objetos
Referências Inseguras Diretas a Objetos – R.I.D.O: ocorre quando o desenvolvedor expõe uma referência a um objeto interno, como um arquivo, diretório ou chave de banco de dados. Sem uma checagem de controle de acesso ou outra proteção, atacantes podem manipular estas referências para acessar dados não autorizados, como arquivos confidenciais.
Para descobrir se uma aplicação é vulnerável a R.I.D.O é preciso verificar se todas as referências a objetos possuem defesas próprias. Essas defesas consistem em (a) verificar se o usuário está autorizado a aceder o recurso que foi solicita e (b) se a referência é uma referência indireta, o mapeamento para a referência direta deve ser limitada aos valores autorizados para o usuário atual.
Exemplo de aplicação vulnerável
O atacante acessa a página de cadastro com a seguinte url: http://www.exemplo.com/cliente.php?id=1015. Ele percebe que se mudar o parâmetro de 1015 para 1014 o sistema retorna o registro do cliente de chave número 1014. O atacante continua testando outros valores, os que coincidirem com os da tabela “clientes” a aplicação mostrará os registro, indevidamente.
A linha 02 recebe os dados, no caso a chave de cada registro de cliente. As linhas 4, 5 e 6 montam executam a instrução SQL. Repare que mesmo a aplicação estando protegida contra Injeção(vide A1- Injeção) ele não está, necessariamente, protegida contra R.I.D.O.
Prevenção
Segundo o OWASP Top 10,há duas formas básicas de evitar esta vulnerabilidade:
a) usar referências indiretas a objetos;
b) verificar o acesso ao objeto;
Ainda como prevenção o OWASP) reitera que, é necessário considerar as seguintes recomendações:
Sempre que possível, evitar a exposição de referências de objetos privados a usuários, como chaves primárias e nomes de arquivos.
Verificar a autorização de todos os objetos referenciados. O método mais indicado é usar um valor de índice ou um mapa de referência para prevenir ataques de manipulação de