Google naprawia koszmarny błąd Androida, który uniemożliwiał użytkownikowi dzwonienie do służb ratunkowych

Google naprawia koszmarny błąd Androida, który uniemożliwiał użytkownikowi dzwonienie do służb ratunkowych

Styczniowa poprawka bezpieczeństwa Androida została właśnie wydana i naprawia jeden z najbardziej irytujących błędów Androida, które mogą wystąpić od jakiegoś czasu: niektóre aplikacje mogą uniemożliwić kontakt z numerem 911 lub innymi numerami alarmowymi na całym świecie.

Na początku grudnia na subreddicie GooglePixel pojawiła się wstrząsająca historia od użytkownika, który miał awarię Pixela 3, gdy najbardziej go potrzebował: podczas wybierania numeru alarmowego 911 dla swojej babci, która „wyglądała, jakby miała udar”. Cały podsystem telefoniczny uległ awarii. natychmiast po wezwaniu służb ratunkowych, a użytkownik KitchenPicture5849 powiedział, że nie może uzyskać połączenia lub rozłączyć się, aby powtórzyć połączenie. Na szczęście pobliski telefon stacjonarny był dostępny po tym, jak ich telefon z Androidem zwariował i skontaktowano się ze służbami ratunkowymi.

Po zakończeniu kryzysu użytkownik ponownie zadzwonił na numer alarmowy ze swojego smartfona i Android znowu się zawiesił, co wskazuje, że nie był to jednorazowy błąd. Sprawdzenie ich rachunku telefonicznego ujawniło również, że KitchenPicture5849 nigdy nie łączyło się z usługą 911. Mówią, że otrzymali również kilka innych prywatnych wiadomości od użytkowników, którzy powiedzieli, że doświadczają tego samego błędu.

Google skontaktował się z użytkownikiem i publicznie odpowiedział na wiadomość 8 grudnia:

Na podstawie naszych badań byliśmy w stanie odtworzyć problem w ograniczonym zbiorze okoliczności. Uważamy, że problem występuje tylko na niewielkiej liczbie urządzeń z zainstalowaną aplikacją Microsoft Teams, gdy użytkownik nie jest zalogowany, i obecnie wiemy tylko o jednym zgłoszeniu tego błędu przez użytkownika. Ustaliliśmy, że przyczyną problemu była niezamierzona interakcja między aplikacją Microsoft Teams a bazowym systemem operacyjnym Android. Firma Microsoft ściśle współpracuje z Google w celu rozwiązania tej niezamierzonej interakcji.

Google powiedział, że Microsoft wyda aktualizację aplikacji tak szybko, jak to możliwe, a użytkownicy powinni sprawdzić Sklep Play w poszukiwaniu aktualizacji. Firma wspomniała również, że łatka na poziomie systemu operacyjnego zostanie wydana miesiąc później, na początku stycznia (czyli dzisiaj). W tamtym czasie Google nie dostarczyło dalszych komentarzy w tej sprawie.

Dlaczego aplikacje mogą zepsuć usługę 911

Opóźnienie. Microsoft Teams zepsuł usługę 911? Czy przypadkowe aplikacje na Androida mogą zakłócać działanie służb ratunkowych? Jak? Dlaczego aplikacje innych firm miałyby znajdować się tysiące stóp od tak ważnej funkcji? Czy inne aplikacje zakłócają działanie usługi 911, czy tylko Microsoft Teams? Podczas gdy Teams został naprawiony, czy było w porządku pozwolić użytkownikom Androida na kręcenie się z tym błędem na poziomie systemu operacyjnego przez miesiąc, zwłaszcza gdy nie wiemy, czy robią to inne aplikacje? Android to Android, więc wiele telefonów i tak nigdy nie zostanie naprawionych. Skąd użytkownicy mogą wiedzieć, że służby ratunkowe będą działać? Tyle że Google nie dał żadnej odpowiedzi poza czekaniem miesiąca na poprawkę.

Na szczęście bardzo inteligentni ludzie ze społeczności Androida byli w stanie udzielić odpowiedzi, których Google nie udostępnił. Mishaal Rahman, starszy redaktor techniczny w Esper, napisał niesamowity post na Medium , w którym szczegółowo opisał, jak działa błąd i dlaczego się pojawia. Aplikacje na Androida z funkcją połączeń telefonicznych mogą rejestrować „Konto Telefoniczne” w systemie, wskazując, że mają możliwość wykonywania połączeń. Istnieje kilka aplikacji, które można zainstalować za pomocą PhoneAccount, w tym jedna o nazwie „CAPABILITY_PLACE_EMERGENCY_CALLS”. Kiedy przychodzi czas, aby zadzwonić pod numer 911, Android przegląda listę zarejestrowanych kont telefonicznych i wybiera jedno. Jak na razie dobrze.

Jednym z kilku błędów zidentyfikowanych w poście Rahmana jest to, że Microsoft Teams rejestruje dodatkowe konto PhoneAccount w systemie przy każdym uruchomieniu Teams, pod warunkiem, że nie jesteś zalogowany. Pamiętaj, że często zdarza się, że instalujesz Microsoft Teams, a potem nigdy go nie używasz – częstą skargą dotyczącą aplikacji Android Teams jest to, że często automatycznie wylogowuje ona użytkowników.

Jeśli jesteś wylogowany, uruchomienie Microsoft Teams 10 razy spowoduje zaśmiecenie telefonu 10 zduplikowanymi kontami PhoneAccount z Teams. Teams nie powinien tego robić, a aktualizacja Microsoftu powstrzymała Teams przed zrobieniem tego, ale wiele zduplikowanych kont PhoneAccount nie powinno wystarczyć, aby rzucić system telefoniczny z Androidem na kolana.

Następny błąd: wybierając konto PhoneAccount do połączenia alarmowego, Android przechodzi przez złożony proces sortowania, aby określić, którego konta użyć. Ostatnim krokiem w tym procesie sortowania, narzędziem do rozwiązywania konfliktów, jest sortowanie hashcode. Porównanie hashcode po prostu odejmuje jeden hashcode od drugiego.

Ale tak jak ten głupi błąd Microsoft Exchange 2000, który miał miejsce któregoś dnia, może to doprowadzić do przepełnienia lub niedopełnienia liczb całkowitych, a teraz podsystem telefonu ulegnie awarii. Kod Google jest błędny, ale ponieważ jest to ostatni sposób na rozwiązanie problemów z sortowaniem po wypróbowaniu bardziej oczywistych rzeczy, takich jak nazwa pakietu, powinien być wywoływany tylko w bardzo konkretnej instancji aplikacji, która generuje zduplikowane konta PhoneAccount. Więc dziękuję Microsoftowi!

Rozwiązanie Google dotyczące tego błędu jest tutaj , zatytułowane „Napraw przepełnienie/niedopełnienie liczby całkowitej spowodowane sortowaniem zduplikowanego konta telefonu podczas połączenia z numerem alarmowym. Zamiast odejmować jeden kod hash od drugiego i potencjalnie pracować z naprawdę dużą lub bardzo małą liczbą, która powoduje awarię systemu, Google obsługuje teraz te dwie liczby za pomocą funkcji Java „Integer.compare”. To zwraca tylko -1, 0 lub 1, wskazując mniejszy, identyczny lub lepszy wynik porównania.

Jeśli na początku jesteś podobny do mnie i zastanawiasz się, dlaczego Android w ogóle sortuje konta telefonów, a nie tylko używa domyślnego konta na karcie SIM, zgadnę i powiem, że była to próba uruchomienia usługi 911 niezależnie od tego. Który. Na wypadek, gdyby główne konto nie działało, Android potrzebuje listy wszystkich możliwych kont telefonicznych, które może wypróbować, i chce to zrobić automatycznie, aby połączyć się z 911 za pomocą wszelkich niezbędnych środków. Ten system segregacji istnieje tylko do kontaktowania się ze służbami ratunkowymi, więc regularne rozmowy telefoniczne nadal działają dla dotkniętych użytkowników.

Trzeci błąd w tym bałaganie polega na tym, że Microsoft Teams nawet nie rejestruje się jako osoba obsługująca połączenia alarmowe. Zespoły utworzyły milion kont telefonicznych, które nie korzystały z flagi CAPABILITY_PLACE_EMERGENCY_CALLS, ale mimo to złamały numer 911. Proces sortowania Google rozpoczyna się od zapytania o wszystkie konta telefoniczne, podczas gdy najlepszym pierwszym krokiem byłoby rozpoczęcie od wszystkich kont telefonicznych obsługujących numery alarmowe połączenia.

Google podejmuje jeszcze bardziej drastyczną decyzję przed tym ostatnim błędem i usuwa każde „samozarządzane” konto telefonu z procedury pogotowia ratunkowego 911. „Samodzielnie zarządzane” konta telefonów z Androidem, takie jak Microsoft Teams, uzyskują bardziej bezpośredni dostęp do stosu telefonii Androida i mogą korzystać z własnych funkcji. System połączeń alarmowych na Androida będzie teraz uwzględniał tylko prostszych dostawców usług telefonicznych, którzy łączą się z domyślną aplikacją telefonu, na przykład kontem operatora.

Wszystkie te inne aplikacje VoIP prawdopodobnie nadal mogą być używane do samodzielnego dzwonienia pod numer 911 (w wielu krajach funkcja 911 jest wymagana przez prawo). Ale jeśli otworzysz domyślny dialer i naciśniesz 911, Android wybierze tylko standardowe konta telefoniczne zarządzane przez system.

Kto jest naprawiany i jak można sprawdzić błąd usługi 911

Rahman mówi, że błąd Google w tym przypadku to CVE-2021-39659, który comiesięczny biuletyn bezpieczeństwa klasyfikuje jako lukę w zabezpieczeniach o wysokim stopniu zagrożenia odmową usługi z łatami dla urządzeń z systemem Android 10, 11 i 12. W bazie kodów Androida Google jest W rzeczywistości ta poprawka jest w pełni przywracana do systemu Android 8.0, który technicznie nie jest już obsługiwany. Jest to w większości czysto teoretyczne, ponieważ zerowi dostawcy tak naprawdę nie przesyłają aktualizacji zabezpieczeń do takich starszych urządzeń. Ale kod jest tam, jeśli ktoś go potrzebuje.

Stos telefonii Android (jeszcze?) nie jest łatwym do aktualizacji modułem Project Mainline, więc jedynym sposobem na uzyskanie poprawki jest comiesięczna aktualizacja Android Security ze stycznia 2022 r. Samsung powinien zaktualizować każdy telefon z tej listy od tego tygodnia, podczas gdy Google wydaje poprawki dla Pixela 3a, 4, 4a, 5 i 5a. Aktualizacja: Oczekuje się również aktualizacji połączeń alarmowych dla niedziałającego Pixela 3.

Aktualizacja nie jest jeszcze dostępna dla Pixela 6. Najnowszy flagowiec Google przechodzi obecnie kryzys aktualizacji. Aktualizacja z grudnia 2021 r. została anulowana z powodu problemów z łącznością inną niż mobilna (połączenia telefoniczne nie działają). Ponieważ Google stara się to naprawić, następna aktualizacja Pixela 6 z tą poprawką 911 powinna nastąpić „pod koniec stycznia”. W międzyczasie możesz korzystać z listopadowej łatki. Oba wykresy Google: „początek stycznia” i „koniec stycznia” wydają się niesamowicie powolne z powodu błędu, który może doprowadzić do dosłownej śmierci użytkowników.

Dokonam kolejnego szalonego przypuszczenia i powiem, że Pixel 6 to dziwny telefon, ponieważ jest to zupełnie inny SoC i modem (zarówno z działu Samsung Exynos, jak i wszystkie inne piksele używają Qualcomm). Stworzenie świątecznego sezonu zakupowego nie dało Google pola manewru w przypadku opóźnień w uruchomieniu. To nie czyni go mniej rozczarowującym w przypadku telefonu z dużą przewagą za pierwszym razem, ale mam nadzieję, że jest to problem tymczasowy.

Jestem zaskoczony, że jest to tylko „wysoki” (zamiast „krytyczny”) błąd i że wdrożenie zajmuje od jednego do dwóch miesięcy. Opóźnienie karetki może być fatalne w skutkach, więc fajnie by było, gdyby wszystko przyjechało szybciej, a nie tak, jak Google postanawia rozwiązać ten problem.

Do tej pory słyszeliśmy tylko o Microsoft Teams wywołujących ten błąd zduplikowanych kont telefonicznych, ale nie wiadomo, czy inne aplikacje powodują podobny błąd. Jeśli zobaczysz na tej liście aplikację generującą wiele zduplikowanych kont, prawdopodobnie uniemożliwia Ci ona połączenie ze służbami ratunkowymi. Zalecam odinstalowanie aplikacji, skontaktowanie się z programistą i powiadomienie innych na Twitterze lub gdziekolwiek indziej.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *