MASTG-TEST-0059: Teste de Capturas de Tela Geradas Automaticamente para Informações Sensíveis
Deprecated Test
This test is deprecated and should not be used anymore. Reason: New version available in MASTG V2
Please check the following MASTG v2 tests that cover this v1 test:
Visão Geral¶
Análise Estática¶
Se você possui o código-fonte, procure pelo método applicationDidEnterBackground para determinar se o aplicativo sanitiza a tela antes de ser enviado para segundo plano.
A seguir está uma implementação de exemplo usando uma imagem de fundo padrão (overlayImage.png) sempre que o aplicativo é enviado para segundo plano, substituindo a visualização atual:
Swift:
private var backgroundImage: UIImageView?
func applicationDidEnterBackground(_ application: UIApplication) {
let myBanner = UIImageView(image: #imageLiteral(resourceName: "overlayImage"))
myBanner.frame = UIScreen.main.bounds
backgroundImage = myBanner
window?.addSubview(myBanner)
}
func applicationWillEnterForeground(_ application: UIApplication) {
backgroundImage?.removeFromSuperview()
}
Objective-C:
@property (UIImageView *)backgroundImage;
- (void)applicationDidEnterBackground:(UIApplication *)application {
UIImageView *myBanner = [[UIImageView alloc] initWithImage:@"overlayImage.png"];
self.backgroundImage = myBanner;
self.backgroundImage.bounds = UIScreen.mainScreen.bounds;
[self.window addSubview:myBanner];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[self.backgroundImage removeFromSuperview];
}
Isso define a imagem de fundo como overlayImage.png sempre que o aplicativo é enviado para segundo plano. Isso previne vazamentos de dados sensíveis porque overlayImage.png sempre substituirá a visualização atual.
Análise Dinâmica¶
Você pode usar uma abordagem visual para validar rapidamente este caso de teste usando qualquer dispositivo iOS (com jailbreak ou não):
- Navegue até uma tela do aplicativo que exiba informações sensíveis, como nome de usuário, endereço de email ou detalhes da conta.
- Envie o aplicativo para segundo plano pressionando o botão Home do seu dispositivo iOS.
- Verifique se uma imagem padrão é exibida como o elemento de visualização superior, em vez da visualização contendo as informações sensíveis.
Se necessário, você também pode coletar evidências executando os passos 1 a 3 em um dispositivo com jailbreak ou em um dispositivo sem jailbreak após reempacotar o aplicativo com o Frida Gadget ( Injetando Frida Gadget em um IPA Automaticamente). Após isso, conecte-se ao dispositivo iOS via SSH ( Acessando o Shell do Dispositivo) ou por outros meios ( Transferência de Dados entre Host e Device) e navegue até o diretório de Snapshots. A localização pode variar em cada versão do iOS, mas geralmente fica dentro do diretório Library do aplicativo. Por exemplo, no iOS 14.5 o diretório de Snapshots está localizado em:
/var/mobile/Containers/Data/Application/$APP_ID/Library/SplashBoard/Snapshots/sceneID:$APP_NAME-default/
As capturas de tela dentro dessa pasta não devem conter nenhuma informação sensível.