跳过内容

MASTG-TEST-0059: 测试自动生成的截图中的敏感信息

此测试即将更新

此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。

请提交PR以帮助我们解决以下问题:MASTG v1->v2 MASTG-TEST-0059:测试自动生成的屏幕截图是否包含敏感信息 (ios)

发送反馈

概述

静态分析

如果您有源代码,请搜索applicationDidEnterBackground方法,以确定应用程序是否在进入后台前清理屏幕。

以下是使用默认背景图像 (overlayImage.png) 的示例实现,每当应用程序进入后台时,覆盖当前视图

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];
}

这会将背景图片设置为overlayImage.png,每当应用程序进入后台时都会生效。 它可以防止敏感数据泄漏,因为overlayImage.png始终会覆盖当前视图。

动态分析

您可以使用可视化方法,使用任何 iOS 设备(越狱或未越狱)快速验证此测试用例

  1. 导航到显示敏感信息的应用程序屏幕,例如用户名、电子邮件地址或帐户详细信息。
  2. 通过点击 iOS 设备上的Home按钮,将应用程序置于后台。
  3. 验证是否显示默认图像作为顶部视图元素,而不是包含敏感信息的视图。

如果需要,您还可以通过在越狱设备或使用 Frida Gadget 重新打包应用程序后的非越狱设备上执行步骤 1 到 3 来收集证据( 自动将 Frida Gadget 注入 IPA)。 之后,通过 SSH 连接到 iOS 设备( 访问设备 Shell)或通过其他方式( 主机-设备数据传输),并导航到 Snapshots 目录。 该位置在每个 iOS 版本上可能不同,但通常位于应用程序的 Library 目录中。 例如,在 iOS 14.5 上,Snapshots 目录位于

/var/mobile/Containers/Data/Application/$APP_ID/Library/SplashBoard/Snapshots/sceneID:$APP_NAME-default/

该文件夹内的屏幕截图不应包含任何敏感信息。