MASTG-TEST-0281: 未声明的已知追踪域
概述¶
此测试用于确定应用程序是否在其NSPrivacyTrackingDomains
部分(隐私清单文件中)正确声明了所有可能与之通信的已知跟踪域名。
要执行此测试,请使用一个或多个经过整理的已知跟踪器列表。 这些列表包括与广告网络、分析提供商和用户画像服务相关的域名和标识符。 它们通常用于注重隐私的工具和浏览器中,以检测和阻止跟踪行为。
一些示例列表
- DuckDuckGo iOS 跟踪器:包括域名、匹配规则、描述和类别,例如“操作像素”、“广告欺诈”、“广告驱动的跟踪”和“广告”。
- Exodus 隐私跟踪器:包括跟踪器名称、类别(例如“广告”、“分析”、“画像”)、描述和检测元数据,例如网络和代码签名。
这些引用可用于匹配应用程序中的硬编码或动态访问的域名,并验证隐私清单中是否存在适当的声明。
步骤¶
- 使用检索 PrivacyInfo.xcprivacy 文件提取应用程序的隐私清单文件,包括来自第三方 SDK 或框架的文件。
- 使用分析 PrivacyInfo.xcprivacy 文件从隐私清单文件中获取声明的跟踪域名列表。
- 使用radare2 for iOS运行静态分析扫描
- 搜索对已知跟踪域名的硬编码引用。
- 识别对知名跟踪库的代码引用。
- 使用 mitmproxy执行网络分析。
- 拦截并记录所有出站网络流量。
- 提取运行时访问的所有域名。
观察¶
输出应包含
- 从应用程序提取的所有隐私清单。
- 来自清单中
NSPrivacyTrackingDomains
键的声明的跟踪域名列表(最好带有相关组件)。 - 动态测试期间访问的所有域名的列表。
- 来自静态分析的已知跟踪域名或跟踪库的代码匹配列表。
评估¶
如果应用程序或其任何组件(框架、插件等)的隐私清单文件的 NSPrivacyTrackingDomains
键中缺少以下任何一项,则测试失败
- 应用程序在运行时访问的跟踪域名。
- 在代码中找到的跟踪域名。
- 代码中发现的与跟踪 SDK 对应的域名。