Przeglądarki zaimplementowane w aplikacjach należących do koncernu Meta, czyli m.in. Facebook i Instagram, w teorii mogą śledzić dosłownie każde zdarzenie wykonane na wczytanej w tej przeglądarce witrynie. Szczegóły zostały opisane na blogu Felixa Krausa. Technicznie polega to na wstrzyknięciu (ang. injection) odpowiedniego kodu JavaScript, który zaciąga kolejny skrypt: https://connect.facebook.net/en_US/pcm.js.
Zgodnie ze stanowiskiem firmy Meta, skrypt pcm.js nie jest odpowiedzialny za „śledzenie”, jak wynika to również z komentarza w nim zamieszczonego:
* This code is developed to honor people’s privacy and ATT choices.
* This code is injected in in-app browsers to help aggregate conversion events from pixels setup by businesses on their website, before those events are used for targeted advertising or measurement purposes.
* No other user activity is tracked with this javascript.
Natomiast według autora wpisu, dodatkowy kod jest aktywnie wykorzystywany do przechwytywania fraz, które użytkownik wpisuje na odwiedzanych witrynach we wbudowanych przeglądarkach:
Implementacja metod ochrony przed wstrzykiwaniem dodatkowego kodu przez wbudowane przeglądarki na poziomie deweloperów różnych serwisów, polega tymczasowo na dodaniu poniższego kodu (najlepiej bezpośrednio po znaczniku <body>, aby przeglądarka zinterpretowała go możliwie w pierwszej kolejności):
Można także uniemożliwić przechwytywanie tekstu wpisywanego przez użytkownika:
Oczywiście czas skuteczności działania tego obejścia nie jest nieskończony, dlatego zdecydowanie nie jest to świetne rozwiązanie.
Występowanie opisywanej sytuacji pomoże zweryfikować udostępnione narzędzie https://inappbrowser.com.
Wystarczy otwarcie tego adresu w jednej z wbudowanych przeglądarek (niezależnie od aplikacji). Nie udało mi się odtworzyć problemu w aplikacji Messenger, Instagram i LinkedIn. Korzystam z własnego serwera DNS, ale w logach nie odnotowano żadnej blokady w czasie testowania. Sprawdzałem również podczas połączenia z VPN, ponownie brak wykrycia dodatkowych skryptów.
Z kolei autorowi udało się uzyskać następujące wyniki:
Wynika z nich, iż przeglądarki wbudowane w aplikacje Snapchat i Robinhood nie wykazują modyfikacji kodu odwiedzanych w nich witrynach. Wszystkie pozostałe zbierają dane o aktywności, dodatkowo aplikacje należące do koncernu Meta dodają własne skrypty. Szczególną uwagę zwracają TikTok i Instagram, których skrypty potrafią gromadzić dosłownie każdą aktywność:
- wpisywany tekst (działa jak keylogger)
- kliknięcia dowolnego elementu na stronie
- szczegóły danego elementu
To nie jest tak, iż każda wbudowana przeglądarka ma aktualnie możliwość modyfikacji kodu. Różne popularne aplikacje, takie jak Twitter, Gmail, Telegram, Signal czy Microsoft Teams. Używają one klas SFSafariViewController lub Default Browser, przez co uniemożliwiają wstrzykiwanie różnego customowego kodu.
Mimo wszystko zawsze lepszym sposobem otwarcia linku pochodzącego z aplikacji będzie użycie zwykłej przeglądarki. Nie jest to być może najszybsza opcja, ponieważ wymaga skopiowania adresu, przejścia do innej aplikacji (co też bywa utrudnione, np. podczas rozmowy video), wklejenia adresu i otwarcia strony. Biorąc pod uwagę zwiększoną ochronę własnej prywatności, jest to całkiem sensowna opcja.
Z drugiej strony nie powinniśmy skupiać się wyłącznie na ochronie przed tą metodą „śledzenia”. JavaScript jest powszechnie używany na adekwatnie każdej współczesnej witrynie, pozwala w pewnym sensie rozszerzyć jej możliwości, odpowiada m.in. za różne interesujące efekty wizualne (których nie można uzyskać w HTML i CSS). Zainteresowane osoby mogą zainstalować rozszerzenie NoScript, które blokuje wykonywanie kodu JS w różnym stopniu. Niestety uniemożliwi to korzystanie z wielu popularnych serwisów.
Mniej radykalnym pomysłem jest korzystanie z bezpieczniejszych przeglądarek, np. Brave. Warto również zainteresować się tematami hardeningu ustawień prywatności w różnych systemach czy zastosować wspomniany wyżej własny serwer DNS, który będzie blokował na podstawie list wiele domen powiązanych z rejestrowaniem naszej aktywności. Wystarczy sprawdzić logi, aby zobaczyć ilość zablokowanych adresów już po kilku minutach działania.