• No results found

Presence and IQ stanzas

In document 17-01491 (sider 26-29)

Outro componente a se levar em consideração é o código do aplicativo. Nele pode se esconder falhas que precisam de certa criatividade do atacante para serem exploradas, além de um trabalho minucioso de análise do código conseguido a partir de engenharia reversa.

Nesse ambiente, também temos problemas em lidar com as permissões do Android: um aplicativo que tem permissões de escrita no cartão SD(Secure Digital) pode ocasionar um Denial of Servicecaso essa funcionalidade esteja exposta por uma Intent que possa ser explorada pelo atacante de forma a encher o cartão com uma grande quantidade de dados. Pode haver o caso do aplicativo exigir uma permissão que não é necessária ao seu uso, e para diminuir a superfície de ataque, tal permissão deve ser removida.

Nisso, também há as configurações da aplicação: falta ofuscação de código ou aplicativos no modo debug são exemplos de má configurações que podem acabar indo para a loja de aplicativos e assim oferecer uma maior possibilidade ao atacante.

Essa seção relaciona aos componentes M1, M7 e M10 da OWASP Mobile Top 10.

Vulnerabilidades

Tabela 2 – Qualidade de Código, configu- rações e plataforma

Item Risco Gravidade

Mau tratamento de exceções Indisponibilidade da aplicação Média Aplicativo não está em Release Engenharia Reversa e exploração Média

Contém código de debugging Exploração da aplicação Média

Uso indiscriminado de Javascript pelas Webviews Ataques de XSS Alta Permissões não necessárias Aumento do vetor de ataque Média

Código não ofuscado Engenharia Reversa Média

Fonte – Autor.

5.4.2.1 Mau tratamento de exceções

A aplicação pode expor locais para entrada de dados do usuário nos quais não teve suas exceções corretamente tratadas e assim expondo o usuário final a ataques de indisponibili- dade.

• Gravidade: Média.

• Código CVSS: CVSS:3.0/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:L

• Como constatar: Colocar dados inválidos em formulários, utilizar o Drozer para realizar um processo de fuzzing nas intents.

• Solução: Fazer o correto tratamento de exceções no código, planejando de antemão os casos que comprometer o uso da aplicação.

5.4.2.2 Aplicativo não está em Release

Ao ser disponibilizada para o usuário, a aplicação pode ser exportada para um arquivo APK(Android PacKage). Esse tipo de arquivo é análogo ao JAR encontrado nas aplicações Java. O arquivo APK pode ser distribuído em modo debug ou release, nos quais o release contém algumas proteções como minifyEnabled do Androguard.

• Gravidade: Média.

• Código CVSS: CVSS:3.0/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

• Como constatar: Verificar com a ferramenta jarsign, jarsigner -verify -verbose -certs myApp.apk. Se a saída for "CN=Android Debug", então a aplicação está em modo debug e não release.

• Solução: Garantir que a aplicação esteja em modo release quando disponibilizada aos usuários finais.

34

5.4.2.3 Contém código de debugging

Desenvolvedores usam código específico na produção para efetuarem testes rápidos ou fazer debbuging em uma aplicação. Esse código pode ser para imprimir informações sensíveis em logs de forma a notificar o desenvolvedor sobre uma mudança de estado ou uma mudança no fluxo do código para bypass de métodos de autenticação.

• Gravidade: Média.

• Código CVSS: CVSS:3.0/AV:L/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N

• Como constatar: Usar ferramentas de monitoramento de log como o logcat e fazer uma revisão do código fonte. Caso o código fonte não esteja disponível, pode ser feita uma decompilação do código com JD-gui e Apktool.

• Solução: Efetuar uma revisão de código para não deixar que códigos para debbuging estejam na versão de produção do aplicativo.

5.4.2.4 Uso indiscriminado de Javascript pelas Webviews

O Javascript é uma linguagem de programação poderosa que teve suas origens em navegadores web e é amplamente utilizada no front-end e back-end de sites. Um tipo de View do Android, a WebView, permite o carregamento de páginas web pelo aplicativo.

Se a página carregada for vulnerável a ataques XSS(Cross Site Scripting), um atacante pode ter acesso a recursos do sistema com a diretiva "file:///"e até efetuar um ataque de phishingcontra o usuário, mascarando o site que ele está navegando.

• Gravidade: Alta.

• Código CVSS: CVSS:3.0/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:N/A:H

• Como constatar: Verificar se o WebView possue Javascript habilitado e se seu uso é necessário para a funcionalidade da página.

• Solução: Caso seja desnecessário o uso de Javascript, não utilizar a função setJavaS- criptEnabled(true)que o habilita. Evitar o uso do método addJavaScriptInterface() para código Javascript carregado por entidades externas, sendo recomendado apenas expor as interfaces do Android por Javascript apenas ao Javascript que vem junto do APK em sua aplicação.

5.4.2.5 Permissões não necessárias

Os aplicativos Android tem permissões do sistemas que são concebidas a um aplica- tivo com consentimento do usuário. Essas permissões deixam aplicativo acessar componentes como as câmeras do dispositivo ou poder escrever na memória do usuário, por exemplo. Permis- sões possibilitam com que o aplicativo possa ter o mínimo privilégio para realizar suas tarefas e que o usuário possa confiar em habilitá-las ou não durante o uso do aplicativo ou antes de instalá-lo. Um aplicativo que possui mais permissões do que o mínimo necessário ao seu uso pode comprometer a segurança do aparelho, pois um atacante pode mover lateralmente pelas permissões a afim de realizar um maior estrago no usuário.

• Gravidade: Média.

• Código CVSS: CVSS:3.0/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N

• Como constatar: Verificar se a aplicação requisita mais permissões do que realmente utiliza em suas funcionalidades e verificar se os recursos destas permissões estão expostos diretamente por Intents que possam vir de aplicações externas.

• Solução: Minimizar o uso das permissões somente as funcionalidades utilizadas no aplicativo.

5.4.2.6 Código não ofuscado

Graças ao ProGuard, o Android tem várias proteções de código e aplicações de forma simples e rápida. Porém, nem sempre elas foram implementadas corretamente. Um desses casos é a ofuscação de código-fonte. Sem ela, o código Java da aplicação pode ser descompilado e facilmente lido por um atacante a fim de verificar como a aplicação funciona e poder tirar informações dela. Logo, é necessário que qualquer aplicação que esteja disponível para distribuição tenha seu código ofuscado, de forma a dificultar a engenharia reversa e diminuir o tamanho do seu binário para distribuição.

• Gravidade: Média.

• Código CVSS: CVSS:3.0/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N

• Como constatar: Utilizar decompilers como o Apktool,dex2jar e JD-GUI a fim de fazer uma leitura no código descompilado e verificar sua semelhança ao código fonte.

36

In document 17-01491 (sider 26-29)