Reino: Input Validation and Representation

Problemas de validação e representação da entrada são causados por metacaracteres, codificações alternativas e representações numéricas. Confiar na entrada resulta em problemas de segurança. Os problemas incluem: “Buffer Overflows”, ataques de “Cross-Site Scripting”, “SQL Injection”, entre outros.

Content Provider URI Injection

Abstract
Construir uma instrução de Provedor de Conteúdo que contém entradas do usuário pode permitir que um invasor acesse registros não autorizados.
Explanation
Vulnerabilidades de injeção de string de consulta ocorrem quando:

1. Os dados entram em um programa por uma fonte não confiável.



2. Os dados são usados para construir dinamicamente uma URL de consulta de Provedor de Conteúdo.



Provedores de conteúdo Android permitem que os desenvolvedores gravem consultas sem SQL simplesmente construindo URIs de provedor de conteúdo. URIs de consulta de provedores de conteúdo são vulneráveis a ataques de injeção e, portanto, os desenvolvedores devem evitar o uso da concatenação de strings com entradas de dados corrompidas para construir o URI, sem garantir que os metacaracteres estão devidamente validados ou codificados.

Exemplo 1: Considerando um aplicativo que expõe vários provedores de conteúdo em URIs:

content://my.authority/messagescontent://my.authority/messages/123content://my.authority/messages/deleted

Se os desenvolvedores construírem os URIs de consulta concatenando strings, os invasores poderão incluir barras no caminho ou outros metacaracteres de URI que modificarão o significado dessa consulta. No seguinte trecho de código, um invasor pode chamar content://my.authority/messages/deleted fornecendo um código msgId com o valor deleted:


// "msgId" is submitted by users
Uri dataUri = Uri.parse(WeatherContentProvider.CONTENT_URI + "/" + msgId);
Cursor wCursor1 = getContentResolver().query(dataUri, null, null, null, null);
desc.dataflow.java.content_provider_uri_injection