跳过内容

MASTG-TEST-0281: 未声明的已知追踪域

概述

此测试用于确定应用程序是否在其NSPrivacyTrackingDomains部分(隐私清单文件中)正确声明了所有可能与之通信的已知跟踪域名。

要执行此测试,请使用一个或多个经过整理的已知跟踪器列表。 这些列表包括与广告网络、分析提供商和用户画像服务相关的域名和标识符。 它们通常用于注重隐私的工具和浏览器中,以检测和阻止跟踪行为。

一些示例列表

  • DuckDuckGo iOS 跟踪器:包括域名、匹配规则、描述和类别,例如“操作像素”、“广告欺诈”、“广告驱动的跟踪”和“广告”。
  • Exodus 隐私跟踪器:包括跟踪器名称、类别(例如“广告”、“分析”、“画像”)、描述和检测元数据,例如网络和代码签名。

这些引用可用于匹配应用程序中的硬编码或动态访问的域名,并验证隐私清单中是否存在适当的声明。

步骤

  1. 使用检索 PrivacyInfo.xcprivacy 文件提取应用程序的隐私清单文件,包括来自第三方 SDK 或框架的文件。
  2. 使用分析 PrivacyInfo.xcprivacy 文件从隐私清单文件中获取声明的跟踪域名列表。
  3. 使用radare2 for iOS运行静态分析扫描
    • 搜索对已知跟踪域名的硬编码引用。
    • 识别对知名跟踪库的代码引用。
  4. 使用 mitmproxy执行网络分析。
    • 拦截并记录所有出站网络流量。
    • 提取运行时访问的所有域名。

观察

输出应包含

  • 从应用程序提取的所有隐私清单。
  • 来自清单中 NSPrivacyTrackingDomains 键的声明的跟踪域名列表(最好带有相关组件)。
  • 动态测试期间访问的所有域名的列表。
  • 来自静态分析的已知跟踪域名或跟踪库的代码匹配列表。

评估

如果应用程序或其任何组件(框架、插件等)的隐私清单文件的 NSPrivacyTrackingDomains 键中缺少以下任何一项,则测试失败

  • 应用程序在运行时访问的跟踪域名。
  • 在代码中找到的跟踪域名。
  • 代码中发现的与跟踪 SDK 对应的域名。