Referências Inseguras Diretas A
Artigo: Referências Inseguras Diretas A. Pesquise 861.000+ trabalhos acadêmicosPor: gabriel__jr • 28/11/2014 • 368 Palavras (2 Páginas) • 205 Visualizações
Conceitos Básicos
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 parâmetros;
• Se expor referências diretas aos registros de banco de dados certifique-se que as declarações SQL e outros métodos de acesso à base de dados permitam que somente sejam mostrados registros autorizados.
A principal alteração acontece na linha 5 onde é construída a instrução SQL, na clausula “WHERE” além de filtrar por cliente a instrução filtra por usuário, ou seja, apenas o usuário previsto para aquele registro poderá realmente acessá-lo.
...