[iPhone] 卸载淘宝半年后,后台仍显示我的 iPhone 在登录?一次设备标识追踪调查

事情发生在今年年初。 当时我的淘宝账号被系统判定存在“恶意行为”,随后设备似乎进入了风控名单,88VIP 客服直接说无法处理并且挂电话,2000 分的淘宝分账号,开了 88VIP 后不到三天就出了这个问题,我没有继续申诉,而是直接卸载了淘宝以及相关应用。 前几天因为需要查看几件商品,我重新安装并登录...
[iPhone] 卸载淘宝半年后,后台仍显示我的 iPhone 在登录?一次设备标识追踪调查
[iPhone] 卸载淘宝半年后,后台仍显示我的 iPhone 在登录?一次设备标识追踪调查

事情发生在今年年初。

当时我的淘宝账号被系统判定存在“恶意行为”,随后设备似乎进入了风控名单,88VIP 客服直接说无法处理并且挂电话,2000 分的淘宝分账号,开了 88VIP 后不到三天就出了这个问题,我没有继续申诉,而是直接卸载了淘宝以及相关应用。

前几天因为需要查看几件商品,我重新安装并登录了淘宝。出于好奇,我查看了一下账号登录日志,却发现了一个让我比较意外的现象:

在过去半年里,我的 iPhone 一直存在登录记录。

这些记录并不是连续产生的,而是以两三天一次、时间随机的形式出现。可以确定的是,这段时间淘宝早已被卸载,而且我本人没有进行过任何登录操作。

最开始我怀疑是否存在账号泄露或其他设备登录的情况,但进一步排查后发现,登录设备信息始终显示为同一台 iPhone

随后我查阅了一些资料,并进行了测试,发现问题可能与 iOS 的 Keychain (钥匙串)机制有关。

很多开发者会将设备标识符( UUID )、登录状态或其他身份信息存储在 Keychain 中。与普通 App 沙盒数据不同,Keychain 默认不会因为 App 被卸载而自动删除。因此即使用户删除应用并重新安装,开发者依然有机会识别出这是同一台设备。

在测试过程中我发现:

  1. 删除淘宝 App 并不会清除相关标识;
  2. 即使删除所有淘宝系 App ,部分标识仍可能保留;
  3. 用户无法直接手动清理指定 App 写入的 Keychain 数据;
  4. 在部分情况下,需要先退出账号,再重启设备,相关状态才会发生变化。

后来我咨询了一位从事风控工作的朋友。他认为淘宝很可能并不仅仅依赖 App 本地生成的 UUID ,而是结合 Keychain 、设备指纹以及服务端风控信息进行识别。

如果设备已经被关联到某些风控状态,仅仅卸载重装应用通常无法完成“身份重置”。理论上需要:

  • 抹掉设备全部内容;
  • 不恢复旧备份;
  • 停止同步 iCloud 钥匙串;
  • 以全新设备方式初始化;

才能获得完全新的设备身份环境。

关于 Keychain 的一个典型用途,是所谓的“防卸载标识”。

开发者会把设备唯一标识写入 Keychain 。这样即使用户删除 App ,重新安装后仍然可以识别为同一设备。这个机制原本常用于游客账号恢复、防作弊和风控系统。

让我感兴趣的是:

如果一个应用在被卸载后,仍然能够通过系统保留的数据持续识别同一设备,那么它在多大程度上仍然保留着用户身份关联能力?

此外,淘宝登录日志中持续出现的“设备登录记录”究竟是客户端主动行为、服务端状态刷新,还是其他机制导致的表现,也值得进一步研究。

不知道论坛里有没有做过 iOS 风控、移动安全或者逆向分析的朋友遇到过类似情况,欢迎一起讨论。

来源: v2ex查看原文