AirDrop i Quick Share od lat uchodzą za jedne z najwygodniejszych sposobów przesyłania plików między urządzeniami. Kilka dotknięć ekranu wystarczy, aby wysłać zdjęcia, dokumenty czy filmy — bez kabla, bez chmury i bez zakładania konta. Ta prostota to jednak tylko wierzchołek góry lodowej. Pod spodem działa rozbudowany zestaw protokołów odpowiedzialnych za wykrywanie urządzeń, negocjację połączenia, uwierzytelnianie, szyfrowanie i wymianę danych — a im bardziej złożony mechanizm, tym więcej miejsc, w których może pojawić się błąd.
Dwoje badaczy z CISPA Helmholtz Center for Information Security postanowiło sprawdzić, co kryje się pod tą warstwą wygody. Arash Ale Ebrahim i Nils Ole Tippenhauer przeprowadzili pierwszą tak kompleksową, wieloplatformową analizę obu rozwiązań i opisali sześć nowych podatności dotyczących Apple AirDrop oraz Google i Samsung Quick Share. Wyniki opublikowali w pracy naukowej „Protocol Prying", a wraz z nią udostępnili około 12 000 linii kodu, skrypty testowe i notatki o protokołach, żeby inni mogli zweryfikować i rozwinąć ich ustalenia.
Część luk pozwala zdalnie wywołać awarię urządzenia bez żadnej interakcji użytkownika, inne umożliwiają obejście mechanizmów odpowiedzialnych za zestawienie bezpiecznego połączenia.
Najbardziej niepokojące jest to, że większość opisanych scenariuszy nie wymaga wcześniejszego sparowania urządzeń ani wymiany kluczy. Wystarczy znaleźć się w zasięgu komunikacji bezprzewodowej i wysłać odpowiednio spreparowane pakiety do usługi nasłuchującej na przychodzące pliki. Dlatego badacze klasyfikują część podatności jako pre-authentication — możliwe do wykorzystania jeszcze przed zakończeniem uwierzytelniania. Dwie z luk w AirDropie są przy tym w pełni „zero-click": nie wymagają od ofiary ani jednego dotknięcia.
Oznacza to, że powierzchnia ataku jest znacznie większa, niż mogłoby się wydawać. Każde urządzenie, które w tle czeka na możliwość odebrania pliku, staje się potencjalnym celem — a wystarczy, że ma włączoną funkcję i jest widoczne dla otoczenia.
Zarówno AirDrop, jak i Quick Share to rozwiązania własnościowe — bez publicznej dokumentacji i bez dostępu do kodu źródłowego. Zespół musiał więc odtworzyć ich działanie od zera. W przypadku AirDropa oznaczało to rekonstrukcję siedmiowarstwowego stosu: od wykrywania urządzeń przez Bluetooth LE, przez sieć AWDL (Apple Wireless Direct Link) i szyfrowanie TLS, aż po transport HTTP, kodowanie, autorską kompresję DVZip i pakowanie plików w archiwa CPIO.
Na tej podstawie powstało narzędzie AIRFUZZ — specjalistyczny, „świadomy protokołu" fuzzer. Zamiast zasypywać usługę losowymi danymi, generuje on poprawne komunikaty AirDropa, a następnie celowo wprowadza w nich drobne błędy. Kluczowy okazał się jeden pomysł: mutowanie danych jeszcze przed etapem kompresji. Dzięki temu odsetek pakietów akceptowanych przez usługę wzrósł z niemal zera do ponad 90 procent, co dopiero otworzyło drogę do sensownego testowania kodu odpowiedzialnego za obsługę archiwów. Quick Share przeanalizowano w sposób bardziej ręczny, skupiając się na usłudze Samsunga oraz kliencie Google dla Windows; testy prowadzono m.in. na smartfonie Samsung Galaxy S23 Ultra.
Trzy z sześciu luk (oznaczone jako V1–V3) dotyczą warstwy aplikacyjnej AirDropa w aktualnych wersjach macOS i iOS. Wszystkie kończą się tym samym: awarią usługi.
To, co czyni je szczególnie dotkliwymi, wynika z architektury systemu Apple. Za AirDrop odpowiada demon sharingd — ten sam, który obsługuje także AirPlay, Handoff, uniwersalny schowek (Universal Clipboard) czy Continuity Camera. Awaria jednego z tych komponentów pociąga za sobą pozostałe, więc pojedynczy, odpowiednio spreparowany pakiet potrafi jednocześnie wyłączyć cały zestaw funkcji ciągłości.
Pierwsza luka (V1) prowadzi do natychmiastowego zakończenia usługi przez błąd w routerze ścieżek HTTP — wystarczy wysłać żądanie do nieznanego adresu, aby wywołać funkcję kończącą działanie procesu. Druga (V2) wykorzystuje nieograniczoną rekurencję parsera XML property list w bibliotece Foundation. Trzecia (V3) powoduje odwołanie do wskaźnika NULL w komponencie Network.framework odpowiedzialnym za obsługę HTTP/1.1.
Co istotne, dwie z tych podatności nie ograniczają się do samego AirDropa. Ponieważ znajdują się we współdzielonych bibliotekach systemowych Apple, mogą potencjalnie wpływać także na inne aplikacje korzystające z tych samych mechanizmów.
Podobną analizę przeprowadzili hakerzy do wynajęcia na zlecenie Quick Share rozwijanego przez Google i Samsunga. Tutaj najsłabszym ogniwem okazały się mechanizmy ustanawiania zaufanego połączenia.
W implementacji Samsunga badacze wykazali, że część komunikatów (tzw. OfflineFrame) była przetwarzana jeszcze przed zakończeniem pełnego uwierzytelniania (V4). W drugim przypadku udało się obejść szyfrowanie dla trzech typów ramek protokołu (V5), co narusza podstawowe założenie, że cała komunikacja bezpośrednia między urządzeniami (D2D) jest chroniona. To nie oznacza automatycznej kradzieży plików, ale pokazuje, że napastnik może wpływać na przebieg sesji w sposób, który nie powinien być możliwy.
Ciekawy jest też wątek odpowiedzialności. Samsung, po przeanalizowaniu zgłoszeń, ustalił, że problematyczny kod pochodzi z komponentów Nearby Connections dostarczanych przez Google — i przekazał sprawę właśnie tam. Poprawki dla Androida trafiają do użytkowników za pośrednictwem comiesięcznych biuletynów bezpieczeństwa Androida.