MASTG-TEST-0035: Teste de Overlay Attacks
Visão Geral¶
Para testar ataques de sobreposição), você precisa verificar se o aplicativo utiliza determinadas APIs e atributos normalmente empregados para proteção contra esse tipo de ataque, além de verificar a versão do Android que o aplicativo está direcionado.
Para mitigar esses ataques, leia cuidadosamente as diretrizes gerais sobre segurança de View no Android na Documentação para Desenvolvedores Android. Por exemplo, a chamada filtragem de toque (touch filtering) é uma defesa comum contra tapjacking, que contribui para proteger os usuários contra essas vulnerabilidades, geralmente em combinação com outras técnicas e considerações, conforme apresentamos nesta seção.
Análise Estática¶
Para iniciar sua análise estática, você pode verificar no aplicativo os seguintes métodos e atributos (lista não exaustiva):
- Sobrescrever
onFilterTouchEventForSecuritypara um controle mais granular e implementar uma política de segurança personalizada para views. - Definir o atributo de layout
android:filterTouchesWhenObscuredcomo true ou chamarsetFilterTouchesWhenObscured. - Verificar FLAG_WINDOW_IS_OBSCURED (desde o nível de API 9) ou FLAG_WINDOW_IS_PARTIALLY_OBSCURED (a partir do nível de API 29).
Alguns atributos podem afetar o aplicativo como um todo, enquanto outros podem ser aplicados a componentes específicos. Este último seria o caso quando, por exemplo, há uma necessidade de negócio de permitir especificamente sobreposições, mas deseja-se proteger elementos de UI de entrada sensíveis. Os desenvolvedores também podem tomar precauções adicionais para confirmar a intenção real do usuário, que pode ser legítima, e distingui-la de um possível ataque.
Como observação final, lembre-se sempre de verificar adequadamente o nível de API que o aplicativo está direcionando e as implicações disso. Por exemplo, o Android 8.0 (nível de API 26) introduziu alterações para aplicativos que requerem SYSTEM_ALERT_WINDOW ("desenhar por cima"). A partir deste nível de API, aplicativos usando TYPE_APPLICATION_OVERLAY serão sempre exibidos acima de outras janelas que tenham outros tipos, como TYPE_SYSTEM_OVERLAY ou TYPE_SYSTEM_ALERT. Você pode usar essas informações para garantir que nenhum ataque de sobreposição possa ocorrer, pelo menos para este aplicativo nesta versão específica do Android.
Análise Dinâmica¶
Abusar desse tipo de vulnerabilidade de forma dinâmica pode ser bastante desafiador e muito especializado, pois depende intimamente da versão do Android alvo. Por exemplo, para versões até o Android 7.0 (nível de API 24), você pode usar os seguintes APKs como prova de conceito para identificar a existência das vulnerabilidades.
- POC de Tapjacking: Este APK cria uma sobreposição simples que fica sobre o aplicativo em teste.
- Teclado Invisível: Este APK cria múltiplas sobreposições no teclado para capturar toques. Este é um dos exploits demonstrados em ataques do tipo Cloak and Dagger.