Badacze z zespołu Google Project Zero szczegółowo przeanalizowali technikę tworzenia działającego exploita, umożliwiającego zdalne wykonanie własnego kodu z uprawnieniami jądra Linux poprzez wysyłanie wiadomości SMS lub RCS ze specjalnie sformatowanym załącznikiem dźwiękowym. Atak odbywa się bez wykonywania jakichkolwiek działań przez użytkownika, w tym nie wymaga przeglądania ani odsłuchiwania otrzymanej wiadomości.
W exploicie wykorzystano dwie luki: w bibliotece Dolby Unified Decoder (CVE-2025-54957) oraz w sterowniku bigwave dla jądra Linux (CVE-2025-36934). Wcześniej, aby wykorzystać luki w kodekach, użytkownik musiał odsłuchać lub zobaczyć otrzymane złośliwe treści. Po integracji asystentów AI w najnowszych wersjach systemu Android, multimedia są automatycznie dekodowane po otrzymaniu, co znacznie zwiększa powierzchnię ataków, które nie wymagają działań użytkownika (0-click). W kontekście dźwiękowych wiadomości SMS i RCS, aplikacja Google Messages za pomocą usługi com.google.android.tts automatycznie tworzy transkrypcję, aby zastosować ją do dźwiękowych wiadomości tekstowego wyszukiwania, co pozwala na wykorzystanie luk w istniejących dźwiękowych kodekach bez udziału użytkownika.
Problem w Dolby Unified Decoder jest spowodowany przepełnieniem całkowitym przy obliczaniu rozmiaru bufora dla przetwarzanych struktur danych syncframe, co może być wykorzystane do zapisu poza przydzielonym buforem. W wyniku przepełnienia możliwe jest nadpisanie wskaźnika, używanego w przetwarzaniu następnej ramki synchronizacyjnej, co z kolei pozwala nadpisać kontrolowanym przez atakującego danymi wskaźnik funkcji i zorganizować wykonanie własnego kodu z ograniczonymi uprawnieniami „mediacodec” przez SELinux.
Do wykorzystania jądra Linux wykorzystano lukę w sterowniku bigwave, odpowiedzialnym za pracę z urządzeniem znakowym /dev/bigwave, do którego uzyskano dostęp z kontekstu SELinux „mediacodec”. Luka ta umożliwia nadpisywanie struktur jądra poprzez manipulacje przy wywołaniu ioctl BIGO_IOCX_PROCESS i osiągnięcie wykonania kodu z uprawnieniami jądra.
Luka w bibliotece Dolby Unified Decoder (libcodec2_soft_ddpdec.so), oferującej funkcje dekodowania formatów Dolby Digital (DD, AC-3) oraz Dolby Digital Plus (DD+, EAC-3), nie jest specyficzna dla Androida i oprogramowania dla Pixel 9, a także przejawia się na innych platformach (Samsung S24, MacBook Air M1, iPhone 17 Pro, Windows, ChromeOS itd.). W repozytorium AOSP Androida oraz w oprogramowaniu dla Samsung S24 do procesów uruchamianych w kontekście mediacodec stosuje się filtr wywołań seccomp, który utrudnia dalszą eksploatację luk w jądrze. W oprogramowaniu dla Pixel 9 podobny filtr nie był obecny. Od ataków mógłby chronić mechanizm Memory Tagging (MTE), ale jest on dostępny dla urządzeń Pixel 8+ tylko w formie opcji, aktywowanej podczas włączenia trybu „Advanced Protection”. W macOS i iOS eksploatację utrudnia kompilacja biblioteki z flagą „-fbounds-safet”, która wprowadza dodatkowe kontrole nad przekroczeniem granic tablic, co obniża wydajność.
Badacze osobno analizują problemy z dostarczeniem użytkownikom poprawki dotyczącej luki w Dolby Unified Decoder. Informacje o luce zostały ujawnione publicznie 82 dni przed dostarczeniem poprawki do użytkowników urządzeń Pixel. Firma Dolby została poinformowana o problemie 26 czerwca 2025 roku. Pierwsza binarna poprawka została wydana 18 września dla ChromeOS, ale dla urządzeń Android firma Dolby dostarczyła binarne łatki dopiero 8 października. 15 października informacje o luce zostały ujawnione publicznie. 12 listopada Samsung wydał poprawkę, a zaledwie 5 stycznia opublikowano poprawkę dla urządzeń Pixel. Rozpowszechnienie łatki dla wszystkich urządzeń Android zajęło 139 dni.
W Dolby Unified Decoder wykryto lukę w zabezpieczeniach w mniej niż dwa dni, a w sterowniku BigWave – w mniej niż jeden dzień recenzji. Koszty opracowania działającego exploita dla luki w Dolby Unified Decoder szacuje się na 8 tygodni przy pracy jednego badacza, a dla BigWave – 3 tygodnie. W opublikowanym 14 października raporcie firmy Dolby luka w Dolby Unified Decoder została oznaczona jako mająca niewielki poziom zagrożenia, mimo przesłania szczegółów dotyczących opracowywanego exploita. Lukom w BigWave przyznano średni poziom zagrożenia w Androidzie (Moderate), uzasadniając to tym, że atak możliwy jest tylko z zaufanej zawartości i jest niedostępny w nieuprzywilejowanych kontekstach (po trzech miesiącach status luki zmieniono na „poważny problem”).
Źródło: opennet.ru
