Przejdź do głównej zawartości

Strasznie dużo gadasz, Xiaomi!


Od pewnego czasu zacząłem przyglądać się ruchowi w mojej sieci domowej. W dobie IoT każdy powinien interesować się tym, kiedy, kto i jakie dane na nasz temat może przetwarzać każde urządzenie w naszym domu. W końcu daleko nie szukając, jeśli jesteście graczami i w Waszym salonie gości Xbox One, Wasze rozmowy mogły być podsłuchiwane przez konsolę. Jeśli branża growa jest Wam obca, ale Waszym sercom bliższy jest przemysł filmowy, to Wasz telewizor chętnie przejmie schedę po Xboksie. I o ile producenci takich urządzeń zazwyczaj mogą nie mieć złych zamiarów (no, powiedzmy ;)), o tyle nigdy nie wiadomo, czy pozyskane przez nich dane nie trafią w niepowołane ręce - i tu już nie chodzi nawet o ich wykorzystanie przez firmy, które dane te od producentów kupią, ale o nieuprawniony dostęp do weń w wyniku np. ataku na infrastrukturę danej korporacji.

Często występujący w internecie mem, ukazujący ignorancję internautów

I tu zaczyna się przygoda z Xiaomi oraz MIUI




Na temat ochrony prywatności i dlaczego to takie ważne, poświęcony zostanie osobny artykuł. Dziś skupimy się jednak na produktach Xiaomi, które goszczą w moim domu od paru lat - smartfony. Obecnie w moim mieszkaniu codziennie wykorzystywane są dwa modele, oba z usuniętym oryginalnym oprogramowaniem w wersji "international" (czy jak by to powiedzieli Xiaomiowcy: "global"). Na jego miejscu wylądował rom Xiaomi.eu, chyba najbardziej popularny rom w Polsce, który jest niczym innym, jak okrojonym z bloatware oryginalnym MIUI. Mimo odchudzonego systemu na pokładzie, telefony okazały się bardzo gadatliwe - Xiaomi przy uruchomieniu każdej ze swojej aplikacji wymaga akceptacji polityki prywatności, która zezwala na wysyłanie wielu danych telemetrycznych. Telefon potrafi wysyłać ponad 100 zapytań na godzinę do serwera DNS o rozwiązanie adresów domen należących do Xiaomi oraz jego partnerów (m.in. korporacji Tencent) i to w stanie czuwania, gdy użytkownik nie korzysta aktywnie z telefonu. Oczywiście jeśli telefon zostanie sparowany np. z opaską Mi Band, a dodatkowo użytkownik zacznie korzystać z telefonu, liczba zapytań drastycznie wzrośnie.

Zablokowane zapytania związane z domenami Xiaomi i jego partnerami

Nie od dziś wiadomo, że Tencent jest ściśle powiązana z Komunistyczną Partią Chin i współtworzy Social Credit System, tj. chiński system oceny obywatela. Sorry, Xiaomi, ale siebie i swoich partnerów moimi danymi nie nakarmicie ;)

Jest i lekarstwo na tę chorobę

Wobec zaistniałych faktów, stworzyłem czarną listę domen, do których twoje urządzenia Xiaomi mogą wysyłać dane. Listę możesz znaleźć na moim GitHubie. Aby z niej skorzystać, wystarczy aplikacja AdAway, a jeśli chcesz zabezpieczyć się na poziomie sieci domowej, możesz skorzystać z Pi-hole. Jak to działa? Nasze urządzenie na podstawie ww. listy modyfikuje na telefonie/routerze plik /etc/hosts, w którym możemy zdefiniować własny mapping dowolnej domeny na zdefiniowany przez nas adres. Urządzenie nie musi sięgać do serwera DNS, celem odnalezienia prawdziwego adresu IP poszczególnej domeny. Wszystkie domeny z czarnej listy mapowane są na adres 0.0.0.0, dzięki czemu każdy request trafia do "kosza", a nie do prawdziwego serwera docelowego. Takie żądanie kończy się dla jego inicjatora niepowodzeniem. W ten oto sposób wszytkie żądania pod wybrane domeny są blokowane, a my przestajemy być śledzeni. Lista jest na bieżąco aktualizowana. Gdy tylko moje urządzenia połączą się z serwerem, którego tu nie ma, stosowna aktualizacja zostaje przeze mnie opublikowana, a oprogramowanie z niej korzystające (jak na przykład wyżej wymieniony AdAway) zauważa tę zmianę i dokonuje aktualizacji czarnej listy na Twoim urządzeniu ;)

Komentarze

  1. To zadziała pod warunkiem, że aplikacja odwołuje się do serwera po DNS'ie. Nie zdziwiłbym się jednak, gdyby użyty został bezpośrednio adres IP (lub lepiej pula zaszytych na stałe adresów). Wtedy można by podziałać na poziomie jakiegoś firewalla filtrującego ruch wychodzący.

    OdpowiedzUsuń
    Odpowiedzi
    1. Oczywiście, ale w tym przypadku działa to inaczej - adresy nie są hardcode'owane w aplikacjach, a jedynie telefon otrzymuje ich listę po odpytaniu odpowiedniej domeny, która jest... zablokowana z uwagi na moją blocklistę ;) Xiaomi sprzedaje na całym świecie miliony urządzeń. Wydaje mi się, że gdyby wszystkie pukały bezpośrednio do danego serwera, przy takim obciążeniu i bez specjalnej infrastruktury, taki serwer szybko by się ugiął pod napływem ruchu. O wiele taniej i rozsądniej z perspektywy producenta byłoby trzymanie wszystkiego w chmurze. I tak też Xioami robi, stawia wszystko na AWSie. Tam też stawia endpointy, które po odpytaniu zwracają listę adresów IP. Przykładem jest tutaj znajdująca się na mojej blockliście domena resolver.msg.xiaomi.net. Po wysłaniu nań żądania, klient otrzymuje jsona:

      {"app.chat.xiaomi.net":["120.92.96.2:5222","111.13.142.2:5222","183.84.5.202:443","183.84.5.54:443","111.13.142.134:443","120.92.96.2:80","120.92.98.2:5222"],"resolver.msg.xiaomi.net":["111.13.142.153:5222","120.92.96.13:5222","203.100.92.28:5222","123.125.102.48:5222","123.125.102.48:80","111.13.142.153:80","120.92.96.13:80","203.100.92.28:80","111.206.200.71:5222","111.13.142.27:5222","42.62.94.234:5222","114.54.23.75:5222","114.54.23.75:80","111.206.200.71:80","111.13.142.27:80","42.62.94.234:80"]}

      Następnie ww. adresy wykorzystywane są do późniejszych działań (co zaobserwowałem na swoim routerze). Blokując domeny pozbywamy się ww. zmartwień.

      Usuń

Prześlij komentarz