We describe a tracking technique for Linux devices, exploiting a new TCP source port generation mechanism recently introduced to the Linux kernel. This mechanism is based on an algorithm, standardized in RFC 6056, for boosting security by better randomizing port selection. Our technique detects collisions in a hash function used in the said algorithm, based on sampling TCP source ports generated in an attacker-prescribed manner. These hash collisions depend solely on a per-device key, and thus the set of collisions forms a device ID that allows tracking devices across browsers, browser privacy modes, containers, and IPv4/IPv6 networks (including some VPNs). It can distinguish among devices with identical hardware and software, and lasts until the device restarts. We implemented this technique and then tested it using tracking servers in two different locations and with Linux devices on various networks. We also tested it on an Android device that we patched to introduce the new port selection algorithm. The tracking technique works in real-life conditions, and we report detailed findings about it, including its dwell time, scalability, and success rate in different network types. We worked with the Linux kernel team to mitigate the exploit, resulting in a security patch introduced in May 2022 to the Linux kernel, and we provide recommendations for better securing the port selection algorithm in the paper.
翻译:我们描述Linux装置的跟踪技术, 利用最近引入Linux内核的一个新的 TCP 源端端生成机制。 这个机制基于一种算法, 在 RFC 6056 中标准化, 通过更好地随机选择港口来增强安全。 我们的技术检测了上述算法中使用的散列功能中的碰撞, 其依据是用攻击者指定的方式对 TCP 源端端点进行取样。 这些散列碰撞完全依靠每个构件的密钥, 因此一系列碰撞形成了一个设备标识, 允许在浏览器、 浏览器隐私模式、 集装箱和 IPv4/IPv6 网络( 包括一些 VPNs ) 上跟踪设备。 它可以区分使用相同硬件和软件的装置, 直至装置重新启动为止。 我们应用了这一技术, 然后用两个不同地点的跟踪服务器和各种网络的Linux 端点设备测试了它。 我们还测试了它使用一个安打装置来引入新的港口选择算法。 跟踪技术在现实环境中工作, 我们报告了关于它的详细发现结果, 包括它的时间、 可缩缩略性、 和成功率 在不同的网络上提供一个更好的安全选择系统。