Skip to content

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):

  1. 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.
  2. Envie o aplicativo para segundo plano pressionando o botão Home do seu dispositivo iOS.
  3. 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.