Zdarzało Wam się, że odwiedzacie jakąś stronę przez urządzenie mobilne, a ta próbuje Was przegonić do aplikacji?

Kolaż pokazujący cztery różne okna zachęcające do zainstalowania aplikacji zamiast korzystania ze strony internetowej.

Strony: messenger.com, gmail.com, amazon.com, reddit.com.
Gdybyśmy je odwiedzali przez komputer, to po prostu by nam się wyświetliła strona.

Dlaczego właścicielom stron tak zależy na tym, żebyśmy zainstalowali ich aplikację? Skoro strona i tak działa?
Czasem mają jakiś sensowny powód. Na przykład potrzebują (coraz rzadszych) funkcji, których nie daje im nasza przeglądarka. Ale często motywuje ich chęć zbierania danych.

W innej mojej serii, „Internetowej inwigilacji”, omawiałem nieco węższy przypadek. Sytuację, kiedy surfujemy po internecie, korzystając z przeglądarki.
To konkretny, dość specyficzny rodzaj programu. Ujawnia podglądaczom (najczęściej dużym firmom z branży reklam śledzących) tylko wybrane rzeczy.

Analizowanie nas na podstawie tego, co nasz komputer wyśle w internet, jest trochę jak rozmowa z nami przez zamknięte drzwi mieszkania.

Jasne, ktoś może poznać ton naszego głosu. Odczytać tabliczkę z nazwiskiem na drzwiach. Zadać wścibskie pytania o to, co mamy w domu. Ale nie ma pewności, że mówimy prawdę.
Zainstalowanie wścibskiej aplikacji jest jak wpuszczenie takiego szpiega do swojego domu. Jego możliwości śledzenia drastycznie rosną.

To tym zagrożeniom będzie poświęcona moja nowa seria, „Apki to pułapki”. W tym wprowadzającym wpisie przedstawię ogólny model działania współczesnych urządzeń i parę przemyśleń na temat zagrożeń. Później będę się do tego odnosił.
Zapraszam, świat śledzenia czeka!

Warstwy smartfona

Cebula ma warstwy, ogry smartfony mają warstwy.

Źródło: pierwsza część „Shreka”.

W poprzedniej serii, „Internetowej inwigilacji”, przyjąłem model pocztowy (przeglądarka jako poczta, wysyłane dane jako paczki, zamiast adresów domów adresy IP).

Tym razem potrzebowałem modelu pokazującego, do czego mają dostęp aplikacje i dokąd sięgają możliwości użytkowników. Chciałem też, żeby objął w przyszłości przypadek wrogich producentów (DRM, SafetyNet…).

Chwilę pogłówkowałem. Ostatecznie mój wymysł przyjął kształt piramidki z paroma niuansami:

Schemat pokazujący hierarchię we współczesnym urządzeniu. Ma kształt odwróconej piramidy. Na samym dole mamy ikonę procesora podpisaną CPU. Odchodzą od niej strzałki do ikonek symbolizujących aparat, mikrofon i sieć wi-fi. Cała warstwa jest podpisana 'hardware'. Nad nią w piramidzie mamy kolejno: 'firmware', 'jądro systemu' oraz 'system operacyjny'. Na tej warstwie stoją kolejne piramidy, już nie odwrócone. Jedna z nich jest podpisana 'programy', a na niej stoi warstwa podpisana 'dodatki do programów'.

Źródło: Flaticon, Emojipedia, Wikimedia Commons (szczegóły pod koniec wpisu).
Aranżacja i przeróbki moje.

Zaraz omówię z osobna warstwy tego prowizorycznego modelu. Ale najpierw kilka założeń, jakie chciałem na nim pokazać:

  1. Wszystko na tym schemacie (oprócz fizycznego sprzętu) to programy.

    Np. firmware to programy sterujące fizycznym sprzętem. System operacyjny to program uruchamiający inne programy.

  2. Między warstwami cały czas są przesyłane dane i pliki. Same w sobie nieaktywne, „martwe”. To programy mogą coś z nimi zrobić.

  3. Im niżej znajduje się jakaś warstwa głównej piramidy, tym jest istotniejsza dla całości.

    Jej „awaria” psuje wszystko, co na niej stoi. A jej „przejęcie” jest równoznaczne z przejęciem tego co wyżej.

  4. Warstwy niżej położone narzucają wyższym sposób komunikacji.

    Zwykle ich twórcy określają to w jakiejś specyfikacji. Jeśli twórcy wyższych warstw się do tego nie dopasują, to coś nie zadziała.

  5. Warstwę najniższą (hardware, czyli fizyczny sprzęt) dzielę na dwie kategorie – podstawową i poboczną.

    Podstawowa to sprzęt niezbędny do działania, jak procesor albo pamięć. Oprócz tego mamy różnego rodzaju urządzenia poboczne (będące częścią urządzenia albo do niego podłączane), które porozumiewają się z tymi kluczowymi.

Omówienie poszczególnych warstw

Serię opracowałem z myślą o smartfonach, ale powyższy model jak najbardziej pasuje również do komputerów osobistych. Spójrzmy teraz na typowe cechy poszczególnych warstw oraz przykłady ich ciemnych stron. I ze świata smartfonów, i komputerów.
Zacznijmy od góry.

Uwaga

Nie będę tutaj mówił o kwestiach cyberbezpieczeństwa i wirusach. Korporacje, choć wścibskie, zwykle jednak trzymają się ram prawnych i nas nie hakują.
Natomiast miejmy na uwadze, że jak najbardziej mogą istnieć programy – z dowolnej warstwy naszej piramidki – zdolne uderzyć w słabe punkty systemu i przejąć warstwy pod sobą.

Dodatki do programów

Wiele programów, zwłaszcza mniejszych, stanowi zamkniętą całość. Jasne, możemy podrzucać im różne pliki wedle własnego uznania. Ale ramy działania narzucają twórcy.

Czasem jednak ludzie chcą elastyczności. Możliwości dopasowania programów do własnych potrzeb. Z tego względu ich twórcy dają możliwość tworzenia niezależnych dodatków.

Dodatki same są mini-programami, napisanymi w języku „zrozumiałym” dla programu macierzystego.
Jednocześnie są od tego programu całkiem zależne i nie są w stanie zyskać większych możliwości niż on – jeśli na przykład wyłączymy Firefoksowi dostęp do internetu, to zainstalowane na nim dodatki również nie będą w stanie się połączyć.

Do tej pory siłą rzeczy omawiałem tylko dodatki przeglądarkowe, w szczególności uBlock Origin (blokujący reklamy śledzące na odwiedzanych stronach).

Natomiast kategoria jest znacznie szersza, a jakieś swoje dodatki wspiera prawie każdy większy program.
Za pewien rodzaj dodatków możemy uznać skrypty VBA pakietu Office. A nawet skrypty udostępniane przeze mnie na Ciemnej Stronie (programem-uruchamiaczem jest wtedy tak zwany interpreter Pythona, taki jak IDLE).

Potencjalne zagrożenia związane z dodatkami? Jeśli jakiś program, skądinąd bezpieczny, daje im wiele możliwości, to mogą zmienić go w program szpiegowski.
Przykładem jest kontrowersyjny dodatek do przeglądarki firmy Proctorio odpowiadający za monitorowanie studentów podczas egzaminów.

Programy

Bodajże najszersza kategoria. Na każdym systemie możemy ich zwykle mieć tyle, ile tylko chcemy. Ale są spore różnice w sposobie korzystania z nich.

W przypadku pecetów (a przynajmniej Linuksa i Windowsa, które sprawdzałem) da się po prostu wziąć plik w odpowiednim formacie, jak EXE, i go kliknąć. Uruchomimy program bez żadnej instalacji.

W przypadku Androida można wprawdzie pobrać plik z apką w formacie APK… Ale, z tego co wiem, po kliknięciu musimy go zainstalować, a na ekranie głównym pojawi nam się jego ikona. Nie unikniemy tego.

Z kolei iOS od Apple jest systemem zamkniętym. Aplikacje musimy instalować przez ich centralną bazę, AppStore. Rzekomo dla naszego bezpieczeństwa.

W warstwie programów znajdziemy pełno wrednych rzeczy. Na ich omawianie mam całą serię, więc tutaj tylko drobny spoiler odnośnie tego, co nas czeka:

System operacyjny

Dokładniej rzecz biorąc, mam tutaj na myśli tę „publiczną” część systemu.
My, użytkownicy, możemy się po niej poruszać i korzystać z różnych systemowych apek (kalkulatora, programu do zrzutów ekranu), a także zmieniać wiele ustawień.
Z kolei aplikacje mogą korzystać z pewnych wspólnych części, takich jak systemowy schowek.

Pod wieloma względami ta warstwa nas chroni, ponieważ pozwala dodawać niektóre aplikacje do czarnej listy albo w inny sposób je kontrolować.
Ale co, jeśli sam system działa przeciwko nam?

Można tu wspomnieć chociażby o niesławnych aktualizacjach Windowsa, włączających się w najmniej odpowiednich momentach. Albo ekranach nachalnie namawiających do instalacji dodatkowych usług od Microsoftu.

Również Apple zaliczyło wtopę, kiedy wyszło na jaw, jak wiele informacji ich system MacOS wysyłał do ich centrali. Za każdym razem, kiedy uruchomiliśmy jakiś program.

Czasem istnieje opcja wyłączenia takich rzeczy. Może nawet dostępna dla użytkowników bez dłubania w trzewiach systemu. Ale, póki nie leży w interesie producenta, raczej nie znajdziemy jej na wierzchu.

Jądro systemu

To ta głębiej położona, niejawna część systemu.
Na komputerach osobistych zwykle mamy do niej dostęp, ale dopiero jeśli mamy uprawnienia administratora (w przypadku Linuksa zwanego superużytkownikiem). Często wymaga to wpisania osobnego hasła.

W przypadku systemów mobilnych Google i Apple ograniczają nam dostęp. Domyślnie możemy poruszać się co najwyżej na poziomie systemu operacyjnego, nie niżej. Jądro rezerwują dla siebie.

Niepokorni mogą jednak „złamać” swój telefon i zyskać nad nim pełnię władzy. W przypadku Androida taki proces nazywa się rooting, a w przypadku iOS – jailbreaking.

Rzadko bo rzadko, ale warstwa „jądrowa” potrafi być przeciw nam.
Twórcy gier z serii Call of Duty wymagali zainstalowania oprócz nich tak zwanego rozszerzenia jądra (kernel extension). To coś jak dodatek do programu, tylko że instalowany głębiej w bebechach systemu.

W ten sposób gracze (warstwa systemu) mieli kontrolę nad grą (warstwa programów), ale rozszerzenie umieszczone poza ich zasięgiem (warstwa jądra) miało kontrolę nad tym, co z nią robią.

Dwa warianty piramidy. Pierwsza z nich zawiera dwie warstwy. W górnej z nich, podpisanej 'Programy', mamy emotkę diabełka. Poniżej, w warstwie 'System operacyjny' mamy emotkę z aureolą. Pod schematem jest podpis mówiący, że dobra emota wygrywa. Schemat pod spodem jest identyczny, ale ma na samym dole dodatkową warstwę o nazwie 'jądro systemu', z emotką diabełka. Podpis mówi, że diabełek wygrywa.

Wszystko to oficjalnie dla walki z oszustami. Co nie zmienia faktu, że wymagało wpuszczenia obcej firmy głęboko w swój system.

Firmware i hardware

Hardware to fizyczny sprzęt, zaś firmware to po prostu programy sterujące tym sprzętem.
Spróbujcie sobie wpisać dowolną nazwę elementu i słowo firmware, a macie sporą szansę, że coś wyskoczy. SSD firmware. Camera firmware. GPS firmware.

Jak pisałem wyżej, proponuję rozdzielić to na dwie kategorie – rzeczy kluczowe i poboczne.

Rzeczy poboczne oczywiście potrafią być wredne, ale ich możliwości są ograniczone.
Mikrofon nie zaszkodzi nam sam z siebie. Jakiś wredny program musi najpierw kazać mu nas nagrać – co się nie uda, jeśli jest fizycznie wyłączony – a potem uzyskać dostęp do internetu, żeby wysłać to nagranie w świat.

Rzeczy kluczowe, jak procesor, są dużo ważniejsze. To sam dół naszej piramidy, więc wszystko od tego zależy. Do tego praktycznie wszystkie interakcje z innymi sprzętami muszą tędy przechodzić. To taki komputerowy węzeł komunikacyjny.

Firmy mogą w tym miejscu dodawać rzeczy wrogie użytkownikom, a my mamy prawie zerowe możliwości walki. Kto tu umie przestrajać układy scalone i łamać szyfry?

Stworzyłem kiedyś wpis na temat Intel Management Engine – swoistego minikomputera od Intela. Zagnieżdżonego w tym kluczowym punkcie zapewne na życzenie ludków z Hollywood, pragnących zabezpieczeń antypirackich. IME jest nieprzenikniony i stanowi wymarzony cel dla hakerów.

A takich elementów tylko przybywa. Apple jakiś czas temu planowało wprowadzenie systemu wykrywania i zgłaszania nielegalnych obrazków. Odpowiadałby za to specjalny chip od analizy obrazu, również zagnieżdżony na tym najgłębszym poziomie. Tam, gdzie użytkownik nie sięgnie.

Nasze możliwości

Choć każda warstwa może działać przeciwko nam, nie jesteśmy bezbronni.

W przypadku komputerów osobistych jest moim zdaniem łatwiej. Zwykle zachowujemy jakąś kontrolę nad swoim systemem, nie jesteśmy naganiani na aplikacje.
Nie oznacza to, że nikt nie będzie próbował nas śledzić. Ale łatwiej nam ograniczyć liczbę programów do minimum, a internetu używać głównie przez przeglądarkę, ujawniając o sobie mniej rzeczy.

W przypadku urządzeń mobilnych sytuacja jest znacznie cięższa. Chrapkę na nasze dane mają zarówno autorzy aplikacji, jak i producenci naszego telefonu. Tym niemniej wciąż jest parę rzeczy, które warto zrobić dla poprawienia prywatności.

Uwaga

Przypomnę, że wszystkie moje porady tradycyjnie skupiają się na ochronie prywatności przed firmami.
Jeśli ktoś bardziej obawia się celowych ataków, to znaczy że dotykamy spraw cyberbezpieczeństwa. Na nich się nie znam, więc radzę zajrzeć do innych źródeł.

Unikanie aplikacji

Czasem, kiedy podczas przeglądania internetu wyświetla nam się nachalny baner naganiający dla aplikacji, możemy go obejść – udając że nie jesteśmy urządzeniem mobilnym.

W tym celu wchodzimy w ustawienia przeglądarki. Zwykle znajdziemy tam opcję Wersja na komputery.
Po jej kliknięciu strona powinna nam się załadować ponownie – większa, cięższa i nieprzystosowana do urządzenia mobilnego… Ale działająca.

Jeśli kogoś interesuje, jak to działa za kulisami, to polecam mój wpis na temat user agenta.

Pozwolenia na smartfonach

W przypadku systemów mobilnych (zarówno Androida, jak i iOS) pewną kontrolę nad dzikimi apkami daje nam system pozwoleń. Sami możemy ustawiać, na co chcemy zezwolić poszczególnym aplikacjom.

Jak by to wyglądało na naszej piramidce? Ano tak, że wchodząc w ustawienia telefonu, poruszamy się po warstwie systemu operacyjnego. Możemy jednym pstryczkiem zablokować wybranej apce dostęp do mikrofonu.

Same aplikacje są warstwę wyżej, więc muszą porozumiewać się z systemem na jego zasadach. Chcąc coś nagrać, muszą grzecznie poprosić system. „Użyczysz mi mikrofonu?”. A jeśli nie daliśmy pozwolenia, to ten odmówi.
W takiej sytuacji apka może co najwyżej wyświetlić nam komunikat o błędzie, ale nie jest w stanie zawetować naszej decyzji.

Ciemna strona pozwoleń? Niektóre rzeczy uznano na smartfonach za tak powszechne, że nie można ich wyłączyć w dowolnym momencie. Taki przywilej ma na przykład łączność z internetem. Każda połączona apka może wysłać zebrane o nas informacje swoim twórcom.

Moja rada na teraz: wyłączmy aplikacjom jak najwięcej pozwoleń. Pozwolenie na mikrofon powinny mieć tylko te, których używamy do rozmów i nagrywania. Czyli najlepiej tylko systemowa apka Aparat. Możemy nim nagrywać, a potem przesyłać filmiki, wybierając je z apki Galeria.
Z kolei dostęp do GPS-a powinna mieć tylko jedna wybrana apka, której używamy do nawigacji. Polecam Mapy.cz.
Analogicznie z pozostałymi pozwoleniami.

Monitorowanie ruchu internetowego

Możliwość raczej nie dla każdego użytkownika, ale jak najbardziej realna.

Dane i pliki przesyłane między różnymi warstwami systemu są „martwe”. Nie oznacza to, że są niegroźne – czasem czytanie danych wywołuje efekty uboczne. Swego czasu istniał chociażby „znaczek śmierci”, zawieszający smartfony od Apple.

Ale dane nigdy nie zadziałają same z siebie. Zawsze musi je zacząć przetwarzać jakiś program.

Co to nam daje? Załóżmy, że na naszym urządzeniu jest program szpiegowski. Zbiera o nas trochę informacji i wysyła je w świat przez internet.

Tylko że „wysłanie w świat” oznacza, że traci je z oczu. Użycie internetu oznacza, że zapewne muszą przejść przez nasz router. A „martwość” danych oznacza, że nie będą w stanie w żaden sposób się bronić przed przechwyceniem i skopiowaniem przez nas. Potem możemy je analizować.

W ten sposób każda osoba znająca się na rzeczy może regularnie monitorować ruch i patrzeć, czy aplikacja próbuje wysłać coś podejrzanego.
Można podejść do sprawy śledzenia badawczo, zamiast tylko machać ręką i jojczeć „panie, te wszystkie apki śledzo”.

Wybieranie otwartych rozwiązań

Nie jestem radykałem w kwestii wolnego oprogramowania. Cieszy mnie każda zmiana na plus, nawet drobna. Dopasowana do naszych chęci i możliwości.

Każdy, absolutnie każdy może na przykład zmieniać aplikacje na mniej wścibskie. Przeglądarkę Chrome zastąpić czymś otwartym poza kontrolą Wujka Google. Jak Brave albo Firefox.

Ale warstwę niżej nadal mamy potencjalnie wścibski system.
Jeśli to Windows, a my nie potrzebujemy programów działających tylko na nim, to możemy spróbować go zmienić na system Linux. Polecam Minta.

Jeśli Android, to można użyć systemu alternatywnego, takiego jak LineageOS albo GrapheneOS. Nie testowałem ich, ale często słyszę pochlebne opinie.
Graphene, pomijając kwestie prywatności, aspiruje do wysokich standardów pod względem cyberbezpieczeństwa.

Ale pod systemem nadal mamy zamknięty, nieprzenikniony firmware. Zatem fani prywatności mogą spróbować przejść na eksperymentalne, alternatywne smartfony, jak Pinephone albo Librem.

Ale nawet urządzenia najbardziej zorientowane na prywatność muszą polegać na paru zamkniętych modułach kupionych od innych firm, jak choćby modemy.
W takim wypadku prawdziwi prywatnościowi puryści mogą mieć oko na ruch open hardware, dążący do zbudowania wszystkiego na otwartych podstawach.

Każdy może znaleźć rozwiązanie dla siebie!
Warto rozglądać się za otwartymi, szanującymi prywatność alternatywami, żeby nie czuć się w tym świecie jak cielak do monetyzowania. Od razu przyjemniej się żyje.

Tym akcentem zakończę. W kolejnych wpisach dowiemy się więcej – i na temat uprawnień, i metod śledzenia, i bezpieczniejszych alternatyw. Do zobaczenia! :smile:

Źródła