Advertisement

Meta and Yandex secretly tracked users via their Android apps

Meta and Yandex secretly tracked users and bypassed privacy tools like incognito mode and cookie-clearing features. They used a technique called session deanonymization on Android devices when users visited websites that used Yandex Metrica or Facebook Pixel analytics.

Advertisеment

How the Tracking Worked

The method worked by using mobile apps like Facebook, Instagram, Yandex Maps, Yandex Navigator, Yandex Search, Yandex Go, and Yandex Browser to create a hidden communication link with JavaScript running in browsers. These apps set up connection handlers on the local network (127.0.0.1) and accepted requests through HTTP, HTTPS, WebSocket, and WebRTC protocols.

Yandex Facebook User Tracking
Image by localmess.github.io

When users visited websites with Yandex Metrica or Facebook Pixel, the JavaScript sent requests to network ports opened by the mobile apps. These requests carried metadata, cookies, and control commands. The apps then linked browser activity to real user and device identifiers, such as Facebook or Yandex accounts or AAID (Android Advertising ID). This allowed Meta and Yandex to identify users even if they used incognito mode or deleted cookies, by matching browser activity with identifiers from the apps running on the same device.

Websites App ID Sharing
Image by localmess.github.io

Exploiting Android's Weaknesses

Meta and Yandex took advantage of Android's lack of restrictions on creating listening sockets tied to the loopback interface (127.0.0.1) for apps with internet permissions. For Facebook, the app grabbed the "_fbp" cookie, a unique user identifier in Facebook Pixel. By manipulating WebRTC, this data was inserted into the "ice-ufrag" field of SDP packets sent to localhost. On May 17, Chrome blocked this feature, and Facebook Pixel scripts switched to using WebRTC TURN. After the issue was exposed, Meta stopped sending requests to localhost in Facebook Pixel scripts.

FB Diagram
Image by localmess.github.io

Risks of the Technique

This technique was risky not only because it leaked data to Facebook and Yandex but also because malicious apps could exploit the open network ports to track users and build browsing histories, going beyond what Facebook and Yandex intended.

Yandex's Long-Standing Method

Yandex had been using this method since 2017. The JavaScript in Yandex Metrica created HTTP or HTTPS connections to localhost on specific network ports (29009, 29010, 30102, and 30103). Requests were sent to yandexmetrica.com, which resolved to the IP address 127.0.0.1. Information about the ports where Yandex apps needed to listen for connections was loaded dynamically through requests to startup.mobile.yandex.net.

The server also sent a parameter called "first_delay_seconds," which set a delay before the apps started accepting connections. Apps began listening about three days after installation instead of immediately. When the apps received HTTP requests, they sent back data including Yandex service identifiers, system UUIDs, and AAID. Yandex Metrica's JavaScript then forwarded these identifiers to the mc.yango.com server.

Browser Compatibility

These methods worked in Android versions of Chrome and Edge. In Firefox, only Yandex’s method functioned. DuckDuckGo and Brave either blocked requests to localhost or required manual approval. Chrome 137, released in late May, added protection against data substitution in SDP.

Efforts to Prevent Users deanonymization

To prevent such abuses, a new specification called PNA (Private Network Access) is being developed. It aims to limit access to internal network hosts (e.g., 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8). A trial version in Chrome faced compatibility issues with some devices. Currently, a second version, LNA (Local Network Access), is being worked on. This version avoids requiring changes on the device side and focuses on adjustments to websites that need access to internal network resources.

Source

Support us

Winaero greatly relies on your support. You can help the site keep bringing you interesting and useful content and software by using these options:

If you like this article, please share it using the buttons below. It won't take a lot from you, but it will help us grow. Thanks for your support!

Author: Sergey Tkachenko

Sergey Tkachenko is a software developer who started Winaero back in 2011. On this blog, Sergey is writing about everything connected to Microsoft, Windows and popular software. Follow him on Telegram, Twitter, and YouTube.

Leave a Reply

Your email address will not be published.

css.php
Using Telegram? Subscribe to the blog channel!
Hello. Add your message here.