zero-click
| Po angielsku | zero-click exploit |
|---|---|
| Którą formą pisać | po angielsku Polski odpowiednik istnieje, ale w praktyce nikt tak nie pisze. Zostaw angielski, polski trzymaj jako synonim. |
| Inne formy | atak zero-click · podatność zero-click · atak bez kliknięcia |
| Kategoria | Ataki i socjotechnika |
Zero-click to exploit albo atak, który przejmuje urządzenie lub aplikację bez żadnego działania ofiary. Google Project Zero opisuje ten scenariusz tak: nie jest potrzebna interakcja użytkownika, atakujący nie musi wysyłać wiadomości phishingowych, a exploit działa po cichu w tle [1]. Wystarczy, że program sam przetworzy odebraną wiadomość, plik albo połączenie sieciowe. Polski serwis Sekurak tłumaczy określenie jako atak, który nie wymaga dodatkowego działania ofiary [3].
Jak działa
W klasycznym ataku przez phishing ofiara musi kliknąć link albo otworzyć załącznik. Project Zero nazywa taki wariant exploitem one-click i przypomina, że w sprawie z 2016 roku ofiary dostawały linki w SMS-ach, a do infekcji dochodziło dopiero po kliknięciu [1]. Zero-click usuwa ten krok. Celem staje się kod, który uruchamia się automatycznie: parser obrazów, podgląd wiadomości, usługa nasłuchująca w sieci.
Project Zero opisał to na przykładzie exploita FORCEDENTRY firmy NSO. Punktem wejścia był iMessage, więc do ataku wystarczał numer telefonu albo identyfikator Apple ID [1]. iMessage przetwarzał otrzymane pliki GIF, zanim wiadomość pojawiła się na ekranie. Biblioteka ImageIO rozpoznawała jednak format po zawartości, a nie po rozszerzeniu, przez co ponad 20 kodeków obrazu stało się częścią powierzchni ataku [1]. Schemat poniżej pokazuje ogólny przebieg takiego ataku.
W skali CVSS cechę tę opisuje metryka User Interaction. Wartość None oznacza, że podatny system można wykorzystać bez interakcji jakiegokolwiek użytkownika; przy tej wartości ocena bazowa jest najwyższa [4].
Odmiany
Zero-click nie jest jedną klasą błędu. To warunek wykorzystania, który może dotyczyć różnych podatności: błędów pamięci, obejścia uwierzytelniania czy zdalnego wykonania kodu.
| Odmiana | Kanał dostarczenia | Przykład |
|---|---|---|
| wiadomość w komunikatorze | plik przetwarzany przed wyświetleniem | FORCEDENTRY w iMessage [1] |
| załącznik systemowy | obraz w załączniku PassKit | BLASTPASS [2] |
| usługa w sieci lokalnej | protokół AirPlay na porcie TCP 7000 | AirBorne [3] |
| aplikacja webowa | żądanie HTTP bez logowania | luka we wtyczce WordPressa [5] |
Wariant sieciowy bywa samorozprzestrzeniający się. Według opisu Sekuraka łańcuch luk AirBorne pozwalał stworzyć złośliwe oprogramowanie, które atakuje kolejne urządzenia w sieci, jak robak komputerowy [3]. Wymagał jednak obecności atakującego w tej samej sieci i odpowiedniego ustawienia dostępu do AirPlay [3].
W WordPressie
Strona internetowa nie ma skrzynki odbiorczej, ale ma odpowiednik zero-click: podatność wykorzystywaną bez uwierzytelnienia, do której wykorzystania nie trzeba też żadnego działania administratora. Atakujący wysyła żądanie HTTP, a serwer sam je przetwarza. W wektorze CVSS takie luki mają zwykle metryki Privileges Required i User Interaction ustawione na None [4].
Typowe miejsca to punkty końcowe dostępne dla niezalogowanych. Hak wp_ajax_nopriv_{$action} obsługuje żądania Ajax od użytkowników niezalogowanych, czyli wtedy, gdy is_user_logged_in() zwraca false [6]. Drugim miejscem jest REST API: podręcznik WordPressa każe sprawdzać w permission_callback, czy użytkownik może wykonać daną akcję, najlepiej przez current_user_can [7]. Błąd w takim miejscu to niezabezpieczony endpoint REST API.
Przykładem jest CVE-2024-10924 we wtyczce Really Simple Security, instalowanej według Sekuraka około 4 000 000 razy [5]. Luka tkwiła w REST API wtyczki i działała, gdy w niej włączono uwierzytelnianie dwuskładnikowe [5]. Atakujący mógł bez hasła i loginu zalogować się jako dowolny użytkownik, także administrator, podając w żądaniu jego identyfikator [5]. Nikt na stronie nie musiał niczego kliknąć.
Poprawnie zarejestrowana trasa REST wygląda tak:
register_rest_route( 'moja-wtyczka/v1', '/ustawienia', array(
'methods' => 'POST',
'callback' => 'moja_wtyczka_zapisz',
'permission_callback' => function () {
return current_user_can( 'manage_options' );
},
) );
Zagrożenia i skutki
Najgroźniejszą cechą zero-click jest brak sygnału dla ofiary. Project Zero pisze, że nawet osoby biegłe technicznie, które nie kliknęłyby linku, nie wiedzą, że są celem [1]. Autorzy dodają, że poza niekorzystaniem z urządzenia nie ma sposobu, by zapobiec takiemu atakowi [1].
Na telefonach zero-click służy głównie do instalacji oprogramowania szpiegowskiego, takiego jak Pegasus, zaliczanego do kategorii rządowych trojanów [1]. Na stronach WordPress skutkiem luki bez interakcji jest zwykle przejęcie konta administratora, a dalej wszystko, co administrator może zrobić [5]. Ponieważ atak nie wymaga ofiary, da się go zautomatyzować i prowadzić masowo.
Jak się bronić
Po stronie użytkownika telefonu podstawą jest szybka aktualizacja oprogramowania. Citizen Lab po odkryciu BLASTPASS wezwał do natychmiastowej aktualizacji urządzeń Apple, a osobom szczególnie narażonym zalecił tryb Lockdown Mode [2]. Według Citizen Lab i zespołu bezpieczeństwa Apple ten tryb blokował właśnie ten atak [2]. Stoi to obok ostrożniejszej oceny Project Zero, że przed exploitem zero-click nie ma obrony [1]: tryb ograniczony zmniejsza powierzchnię ataku, ale nie usuwa samego problemu.
Po stronie właściciela strony obrona ma kilka warstw:
- Łatki wtyczek wdrażane szybko, najlepiej przez automatyczną aktualizację.
- Przegląd kodu pod kątem
permission_callbacki akcjinopriv[6] [7]. - WAF i wirtualne patchowanie (virtual patching), które blokują znany wzorzec żądania do czasu łatki.
- Mniej wtyczek, czyli mniejsza powierzchnia ataku.
Historia i przykłady
- 2021, FORCEDENTRY. Luka wykorzystana przez exploit NSO w iMessage została usunięta 13 września 2021 roku w iOS 14.8 jako CVE-2021-30860 [1]. Citizen Lab przechwycił exploit użyty przeciw saudyjskiemu aktywiście [1].
- 2023, BLASTPASS. Citizen Lab opisał 7 września 2023 roku łańcuch, który przejmował iPhone'y z iOS 16.6 bez działania ofiary, przez załączniki PassKit ze złośliwymi obrazami [2]. Apple nadał mu identyfikatory CVE-2023-41064 i CVE-2023-41061 [2].
- 2024, Really Simple Security. Sekurak opisał 18 listopada 2024 roku lukę CVE-2024-10924 pozwalającą zalogować się jako dowolny użytkownik WordPressa [5].
- 2025, AirBorne. Zespół Oligo Security Research opisał serię luk w AirPlay i AirPlay SDK, w tym CVE-2025-24252 i CVE-2025-24206, których połączenie dawało zdalne wykonanie kodu na macOS [3].
Przypisy
7- [1] A deep dive into an NSO zero-click iMessage exploit: Remote Code Execution · Google Project Zero
- [2] BLASTPASS: NSO Group iPhone Zero-Click, Zero-Day Exploit Captured in the Wild · The Citizen Lab
- [3] AirBorne, czyli Zero-Click RCE w applowej usłudze AirPlay · Sekurak
- [4] Common Vulnerability Scoring System v3.1: Specification Document · FIRST
- [5] Jak przy włączonym 2FA można się zalogować na dowolnego użytkownika (podatność w popularnym pluginie do WordPressa) · Sekurak
- [6] wp_ajax_nopriv_{$action} — Hook · WordPress.org
- [7] Adding Custom Endpoints — REST API Handbook · WordPress.org
Hasła w tym artykule
19- exploit
- phishing
- CVSS
- podatność
- obejście uwierzytelniania
- zdalne wykonanie kodu (RCE)
- robak komputerowy
- podatność wykorzystywana bez uwierzytelnienia
- niezabezpieczony endpoint REST API
- uwierzytelnianie dwuskładnikowe
- oprogramowanie szpiegowskie
- rządowy trojan (komercyjne oprogramowanie szpiegujące)
- przejęcie konta
- aktualizacja oprogramowania
- łatka (patch)
- automatyczna aktualizacja
- WAF
- wirtualne patchowanie (virtual patching)
- powierzchnia ataku