Mobile: Improper Platform Usage
Neste artigo, iremos dar seguimento a uma serie de tópicos, onde abordaremos os maiores riscos para aplicativos Mobile segundo a OWASP , ou seja, o Top 10 para Mobile, que traduzido seriam esses:
M01 - Uso improprio da Plataforma
M02 - Armazenamento inseguro de dados
M03 - Comunicação Insegura
M04 - Autenticação Insegura
M05 - Criptografia insuficiente
M06 - Autorizacao Insegura
M07 - Ma Qualidade do Código
M08 - Adulteracao de Código
M09 - Engenharia Reversa
M10 - Funcionalidade Atípica
No artigo anterior Insecure Data Storage, falamos sobre o armazenamento inseguro de dados. Neste artigo, falaremos um pouco sobre o Uso Improrio da Plataforma.
M01 - Uso improprio da Plataforma
Como o próprio nome já diz, o Uso Improprio da Plataforma nada mais é do que o mal uso da plataforma em suas funcionalidades ou mesmo na falha em garantir controles de segurança adequados. Por exemplo, em aplicações para Android, existe uma arquivo para todos os apps, que carrega as informações sobre a configuração da plataforma e como a aplicação deve se comportar. Este arquivo é o AndroidManifest.xml, que é muito utilizado para identificação de má configuração.
Vejamos o exemplo a seguir, utilizando um app com vulnerabildiades existentes, focado para estudos. Ao decompilar esse app, com o comando apktool, que é uma ferramente para decompilação de apps.
apktool d InsecureBankv2.apk
Imagem: Elaborada pelo autor
E como podemos ver na imagem a seguir, ao acessar o AndroidManifest.xml, temos as informações das funcionalidades, dos componentes e as configurações de segurança do app.
Ao analisarmos as informações do documento, podemos ver alguns elementos como <uses-permission>, <activity>, <action>, <intent-filter>, que aborderamos nos próximos artigos, mas no nosso caso, o foco será analisar os itens inseridos dentro da tag <application>, onde temos os componentes relativos a aplicação como as activities, os content providers, broadcast receivers, services, cada um com suas caracteristicas e funcionalidades, mas quando temos componentes que estão configurados com a flag exported setada como true, se demonstra um sinal de má configuração ou mal uso da plataforma. Na imagem abaixo, temos o demonstrativo desse apontamento.
Ao analisarmos a activity em evidencia:
<activity android:exported="true" android:label="@string/title_activity_post_login" android:name="com.android.insecurebankv2.PostLogin"/>
Podemos constatar que a activity PostLogin esta setada como true, caracterizando uma vulnerabildiade que pode vir a ser explorada por uma pessoa mal intencionada. Na imagem abaixo, nós temos a interface do app, mas não temos as credenciais de acesso.
Imagem: Elaborada pelo autor
Porém, ao utilizarmos uma ferramenta chamada adb, que faz a comunicação entre o computador e o device/emulador, conforme comando a seguir:
adb shell am start -n com.android.insecurebankv2/com.android.insecurebankv2.PostLogin
Podemos ver que é feito um bypass na página de login, ou seja, não houve necessidade de inserir as credenciais de acesso e com o comando do adb, fazendo a chamada da activity, conseguimos o acesso, conforme imagem abaixo:
Imagem: Elaborada pelo autor
Como se prevenir
O ideal é seguir as melhores praticas de segurança, com o desenvolvimento de um código seguro e uma configuração segura da aplicação. Configurando as melhores práticas para os Intents de Android, minimizando a possibildade de implementação de entidades com baixa segurança. O aplicativo também pode ser configurado com uma restrição de comunicação com outros apps, o que preveni de uma possível exploração por um app malicioso.
Uma boa prática para o nosso cenário, seria setar para os componentes android:exported=false na documentação do Manifest.xml. Para qualquer activity que você não queira que outros apps possam interagir ou se comunicar, você deve setar como false. Como é algo relativo, pois depende muito de como o seu app irá se comunicar, as configurações de segurança variam de acordo com sua regra de negócio.
0 comentários: