Według mojej najlepszej wiedzy, na stronie 4programmers.net znajduje się ukryty pod pozorem obsługi języka Markdown fingerprinter zbierający szczegółowe informacje o komputerach użytkowników.
Zbierane przez fingerprinter informacje o komputerze obejmują między innymi:
- pojemność pamięci RAM komputera
- liczbę rdzeni procesora
- producenta i model karty graficznej
- głębię koloru trybu graficznego
- rozdzielczość ekranu
- offset strefy czasowej
- zainstalowane czcionki
- typ procesora
- zainstalowane pluginy
- platformę, na której uruchomiona jest przeglądarka (Windows/Mac/Linux/etc)
- czy komputer jest wyposażony w ekran dotykowy
- czy uruchomiony jest adblock
- czy informacja o języku jest zespoofowana
- czy informacja o rozdzielczości ekranu jest zespoofowana
- czy informacja o systemie operacyjnym jest zespoofowana
- czy informacja o przeglądarce jest zespoofowana
- język interfejsu użytkownika
- user-agent przeglądarki
Tymczasem polityka prywatności serwisu, jeśli chodzi o informacje techniczne o naszych komputerach, wyraża się jasno jedynie o adresie IP i nazwie przeglądarki (user agent).
Fingerprinter jest uruchamiany na naszych komputerach bez pytania nas o zgodę zaraz po wejściu na stronę 4programmers.net. Z zebranych informacji liczony jest hash, który następnie jest przesyłany w postaci ciasteczka na serwer.
Dzieje się tak niezależnie od tego, czy zaakceptowaliśmy politykę prywatności, ani czy mieliśmy chociażby szansę się z nią zapoznać, ani od tego, czy mamy konto w serwisie.
Jeżeli bowiem wejdziemy na stronę serwisu i klikniemy link "Polityka prywatności", to w momencie wyświetlenia polityki prywatności na naszym ekranie jest już za późno — fingerprint jest już dawno przesłany na serwer.
Nie pomaga usunięcie ciasteczka — w przypadku braku ciasteczka, fingerprinter jest uruchamiany ponownie w czasie naszej najbliższej wizyty w serwisie, przejścia do innej podstrony, etc. Ciasteczko przyjmuje wówczas najczęściej dokładnie taką samą wartość, jaką miało przed usunięciem.
Daremne wydają się także zmiany ustawień przeglądarki — efekty działania fingerprintera można zaobserwować pomimo ustawienia "Tracking prevention" na najwyższym poziomie "Strict" i włączonej opcji "Send do not track requests" w ustawieniach przeglądarki Microsoft Edge.
Fingerprinter znajduje się pod URLem https://4programmers.net/js/markdown.js — wyraźnie widać, nie tylko polityka prywatności, ale również nazwa pliku jest bardzo myląca i sugerująca, że jest to niewinny plik mający jakiś związek z Markdownem.
Samo odwołanie do pliku JS fingerprintera w kodzie HTML strony również jest niepozorne, sprawiające mylne wrażenie, że jest to kod do obsługi Markdown:
<script async src="/js/markdown.js"></script>
(źródło powyższego kodu HTML: 4programmers.net)
Jeżeli z uwagi na przemilczenia w polityce prywatności, zechcemy zapoznać się z kodem uruchamianego na naszych komputerach fingerprintera, napotkamy kolejną przeszkodę: kod fingerprintera został bowiem poddany "minifikacji", co w praktyce sprawia, że jest zupełnie nieczytelny bez użycia dodatkowych narzędzi.
Na domiar złego, według mojej najlepszej wiedzy użyty w serwisie 4programmers.net fingerprinter zawiera błąd mogący prowadzić na Firefoksie do zmniejszenia entropii i w konsekwencji zwiększenia prawdopodobieństwa kolizji, a w ostatecznym rozrachunku do mylnego przypisywania użytkownikom serwisu cudzej aktywności.