Eteryu.space

SMS of Death: dlaczego aktualizacje to nie opcja, a higiena


Spis treści

Wiadomość SMS, która nigdy nie trafia do skrzynki odbiorczej. Zero interakcji ze strony użytkownika. Telefon traci zasięg, aktywne połączenie zostaje zerwane, a w najgorszym scenariuszu urządzenie wpada w pętlę restartów. To nie scenariusz z filmu science fiction, a realna podatność oznaczona jako CVE-2026-58882, nazwana przez odkrywcę „SMS of Death”[1].

Czym jest WAP Push i dlaczego to działa?

Większość użytkowników kojarzy SMS-y wyłącznie z tekstem, który pojawia się w aplikacji Wiadomości. Tymczasem infrastruktura telefonii komórkowej obsługuje również wiadomości typu WAP Push – czyli binarne wiadomości danych (data SMS), które operatorzy wykorzystują do zdalnej konfiguracji urządzeń, np. do ustawień MMS lub parametrów sieci.

Kluczowy problem polega na tym, że te wiadomości są przetwarzane przez system operacyjny na poziomie frameworka telekomunikacyjnego, zanim jeszcze trafią do jakiejkolwiek aplikacji użytkownika. Oznacza to, że atakujący nie musi czekać, aż ofiara otworzy wiadomość – wystarczy, że telefon ją odbierze.

Anatomia błędu: od 8 bajtów do reboot loopa

Podatność tkwi w funkcji WapPushOverSms.decodeWapPdu() w Androidzie. Mechanizm jest klasycznym błędem obcięcia liczby całkowitej (numeric truncation error, CWE-197)[2]:

  1. Nagłówek wiadomości WAP Push zawiera 5-bajtową wartość określającą jego długość.
  2. Android odczytuje tę wartość jako liczbę typu long (np. 2 147 483 648).
  3. Następnie konwertuje ją do mniejszego typu int (32-bit), bez sprawdzenia zakresu.
  4. Wartość ulega obcięciu i staje się liczbą ujemną (-2 147 483 648).
  5. System próbuje zaalokować tablicę o ujemnym rozmiarze, co wywołuje wyjątek NegativeArraySizeException.
  6. Wyjątek nie jest przechwytywany, co powoduje natychmiastowe ubicie procesu com.android.phone – czyli usługi odpowiedzialnej za obsługę połączeń.

Pojedyncza wiadomość powoduje utratę zasięgu na 1-2 sekundy, dopóki proces nie zostanie zrestartowany. Problem w tym, że operatorzy często ponawiają wysyłkę niepotwierdzonych wiadomości, a Android zapisuje „zatrutą” wiadomość w kolejce oczekujących, którą próbuje przetworzyć przy każdym rozruchu. Według badacza Marka Blaszczyka, około 20 takich wiadomości może trwale unieruchomić urządzenie, zmuszając użytkownika do przywrócenia ustawień fabrycznych[3].

Dlaczego Android 12 i 13 zostają bez łatki?

To jest punkt, w którym filozofia distrust staje się niezwykle aktualna. Google naprawiło błąd w ramach aktualizacji bezpieczeństwa z października 2026 roku. Poprawka trafiła jednak wyłącznie do Androida 14, 15, 16 i 17.

Brak ochrony dla starszych urządzeń

Urządzenia pracujące na Androidzie 12 i 13 – mimo że podatność została na nich z powodzeniem zreprodukowana – nie otrzymały i najprawdopodobniej nie otrzymają oficjalnej łatki. Wynika to z cyklu wsparcia: Google oficjalnie zakończyło wsparcie bezpieczeństwa dla tych wersji.

Warto dodać niuans: badacz zgłosił błąd 5 maja 2026 roku, a Google wewnętrznie opracowało poprawkę już 15 czerwca. Trafiła ona jednak do publicznej wiadomości dopiero w październiku, co mogło sprawiać wrażenie, że zgłoszenie zostało zignorowane[4].

To doskonały przykład na to, dlaczego „domyślne zaufanie” do systemu operacyjnego jest złudzeniem. System może być technicznie szczelny w momencie zakupu, ale po zakończeniu cyklu wsparcia staje się cyfrowym reliktem – podatnym na ataki, na które nikt już nie szuka rozwiązań.

Co to oznacza dla użytkownika?

Zgodnie z zasadą minimalizacji ryzyka, oto praktyczne wnioski:

Uwaga na fałszywe poczucie bezpieczeństwa

Jeśli korzystasz z Androida 12 lub 13, wyłączenie WAP Push w ustawieniach aplikacji SMS nie zapobiega atakowi. Podatność jest wykorzystywana na niższym poziomie systemu (com.android.phone), zanim wiadomość trafi do aplikacji. Jedynym realnym rozwiązaniem jest aktualizacja systemu. W razie wystąpienia pętli restartów pozostaje ręczne usunięcie zablokowanej wiadomości z kolejki (np. przez ADB) lub użycie narzędzi pomocniczych, takich jak WapGuard[5].

Podsumowanie

CVE-2026-58882 nie jest wyrafinowanym atakiem. To błąd walidacji, który mógłby zostać wyeliminowany odpowiednio wczesną kontrolą typów. Prawdziwym problemem nie jest jednak sam błąd, a model dystrybucji łat i cykl życia systemu. „SMS of Death” przypomina, że w świecie, w którym urządzenie jest naszym głównym interfejsem do rzeczywistości, aktualizacje bezpieczeństwa nie są luksusem. Są higieną.


Przypisy

  1. ThaiCERT. (2026, November 2). CVE-2026-58882: Android "SMS of Death" Vulnerability. Link ↩

  2. Common Weakness Enumeration. (n.d.). CWE-197: Numeric Truncation Error. Link ↩

  3. BleepingComputer. (2026, October 31). New Android SMS of Death exploit can remotely crash unpatched phones. Link ↩

  4. eSecurity Planet. (2026, October 30). Android 'SMS of Death' Flaw Can Drop Emergency Calls, Trigger Reboot Loops. Link ↩

  5. Android Authority. (2026, October 30). Android's SMS of Death bug can knock out your phone, but a fix is coming soon. Link ↩