Google виправляє жахливу помилку Android, через яку користувач не міг зателефонувати в екстрені служби

Google виправляє жахливу помилку Android, через яку користувач не міг зателефонувати в екстрені служби

Зараз випущено січневе виправлення безпеки Android, яке виправляє одну з найнеприємніших помилок Android, які можуть виникнути через деякий час: певні програми можуть завадити вам зв’язатися з екстреною допомогою чи іншими номерами екстреної допомоги по всьому світу.

На початку грудня в субредіті GooglePixel з’явилася жахлива історія від користувача, у якого Pixel 3 вийшов з ладу, коли він цього потребував найбільше: коли він набирав екстрену службу 911 для своєї бабусі, яка «виглядала так, ніби у неї стався інсульт». Уся телефонна підсистема вийшла з ладу. відразу після виклику екстреної служби, і користувач KitchenPicture5849 сказав, що не може отримати дзвінок, щоб підключитися, або покласти трубку, щоб повторити дзвінок. На щастя, стаціонарний телефон неподалік був доступний після того, як їхній телефон Android зламався, і до служби екстреної допомоги звернулися.

Після завершення кризи користувач зробив ще один дзвінок на екстрений номер зі свого смартфона, і Android знову став збоєм, що свідчить про те, що це не одноразова помилка. Перевірка їх телефонного рахунку також виявила, що KitchenPicture5849 насправді ніколи не підключався до служби 911. Вони кажуть, що вони також отримали кілька інших приватних повідомлень від користувачів, які сказали, що вони стикаються з такою ж помилкою.

Google зв’язався з користувачем і публічно відповів на повідомлення 8 грудня:

На основі нашого дослідження ми змогли відтворити проблему за обмеженого набору обставин. Ми вважаємо, що проблема існує лише на невеликій кількості пристроїв із встановленою програмою Microsoft Teams, коли користувач не ввійшов у систему, і наразі нам відомо лише про одне повідомлення користувача про цю помилку. Ми визначили, що проблему спричинила ненавмисна взаємодія між програмою Microsoft Teams і основною операційною системою Android. Microsoft тісно співпрацює з Google, щоб вирішити цю ненавмисну ​​взаємодію.

Google заявив, що Microsoft випустить оновлення додатка якомога швидше, і що користувачі повинні перевірити Play Store на наявність оновлень. У компанії також зазначили, що патч на рівні ОС вийде через місяць, на початку січня (тобто сьогодні). На той час Google не надала жодних коментарів з цього приводу.

Чому додатки можуть зламати службу 911

Затримка. Microsoft Teams зламали службу 911? Чи можуть випадкові програми Android заважати екстреним службам? як? Чому програми сторонніх розробників знаходяться за тисячі футів від такої важливої ​​функції? Чи інші програми порушують роботу служби екстреної допомоги чи лише Microsoft Teams? Незважаючи на те, що Teams було виправлено, чи можна було дозволити користувачам Android протягом місяця виявляти цю помилку на рівні ОС, особливо коли ми не знаємо, чи інші програми роблять це? Android є Android, тому багато телефонів все одно ніколи не виправлять. Як користувачі можуть знати, що екстрені служби працюватимуть? За винятком того, що Google не дав жодної відповіді, окрім того, щоб чекати на виправлення місяць.

На щастя, кілька дуже розумних людей із спільноти Android змогли надати відповіді, якими Google не поділився. Мішал Рахман, старший технічний редактор Esper, написав неймовірну публікацію на Medium , де докладно описує, як працює ця помилка та чому вона виникає. Програми Android із функцією телефонних дзвінків можуть зареєструвати «PhoneAccount» у системі, вказуючи, що вони мають можливість здійснювати дзвінки. Існує кілька програм, які можна встановити за допомогою PhoneAccount, у тому числі одна під назвою «CAPABILITY_PLACE_EMERGENCY_CALLS». Коли приходить час зателефонувати в службу екстреної допомоги, Android сортує список зареєстрованих телефонних облікових записів і вибирає один. Все йде нормально.

Однією з кількох помилок, виявлених у дописі Рахмана, є те, що Microsoft Teams реєструватиме додатковий обліковий запис PhoneAccount у системі кожного разу, коли Teams запускається, якщо ви не ввійшли в систему. Зауважте, що нерідко інсталювати Microsoft Teams, а потім ніколи не використовувати – Поширена скарга на програму Android Teams полягає в тому, що вона часто автоматично виводить користувачів із системи.

Якщо ви вийшли з облікового запису, 10-кратний запуск Microsoft Teams засмітить ваш телефон 10 дублікатами PhoneAccounts із Teams. Команди не повинні цього робити, і оновлення Microsoft зупинило Teams від цього, але великої кількості дублікатів PhoneAccounts також не повинно бути достатньо, щоб поставити телефонну систему Android на коліна.

Наступна помилка: під час вибору PhoneAccount для екстреного виклику Android проходить складний процес сортування, щоб визначити, який обліковий запис використовувати. Останнім кроком у цьому процесі сортування, розв’язувач конфліктів, є сортування за хеш-кодом. Порівняння хеш-кодів просто віднімає один хеш-код від іншого.

Але так само, як та дурна помилка Microsoft Exchange 2000, яка трапилася днями, це може призвести до переповнення або недоповнення цілих чисел, і тепер підсистема телефону вийде з ладу. Код Google містить помилки, але оскільки це останній спосіб вирішення проблем із сортуванням після спроб більш очевидних речей, таких як ім’я пакета, його слід викликати лише в дуже конкретному екземплярі програми, яка генерує дублікати PhoneAccounts. Тож дякую Microsoft!

Виправлення цієї помилки від Google наведено тут під назвою «Виправити переповнення/недоповнення цілих чисел, спричинене сортуванням повторюваного облікового запису телефону під час виклику екстреного номера. Замість того, щоб віднімати один хеш-код від іншого та потенційно працювати з дійсно великим або дуже малим числом, яке призводить до збою системи, Google тепер обробляє два числа через функцію Java «Integer.compare». Це повертає лише -1, 0 або 1, що вказує на менший, ідентичний або більший результат порівняння.

Якщо ви спочатку схожі на мене і дивуєтесь, чому Android взагалі сортує телефонні облікові записи, а не просто використовує обліковий запис за замовчуванням на SIM-карті, я зроблю божевільне припущення та скажу, що це була спроба змусити службу екстреної допомоги працювати незважаючи на це. Котрий. На випадок, якщо основний обліковий запис не працює, Android потребує списку всіх можливих облікових записів телефону, які він може спробувати, і хоче зробити це автоматично, щоб підключитися до 911 будь-яким необхідним способом. Ця система сортування існує лише для зв’язку зі службами екстреної допомоги, тому звичайні телефонні дзвінки все ще працюють для постраждалих користувачів.

Третя помилка в цьому безладі полягає в тому, що Microsoft Teams навіть не реєструється як обробник екстрених викликів. Команди створили мільйон телефонних облікових записів, і він не використовував позначку CAPABILITY_PLACE_EMERGENCY_CALLS, але все одно зламав 911. Процес сортування Google починається із запиту всіх облікових записів телефонів, тоді як найкращим першим кроком було б почати з усіх облікових записів телефонів, які підтримують екстрену допомогу дзвінки.

Google приймає ще більш радикальне рішення перед цією останньою помилкою та вилучає кожен «самокерований» обліковий запис телефону з процедури екстреної служби 911. «Самостійні» облікові записи телефонів Android, такі як Microsoft Teams, отримують більш прямий доступ до стеку телефонії Android і можуть використовувати власні функції. Система екстреного виклику Android тепер враховуватиме лише простіших постачальників послуг телефонії, які підключаються до телефонної програми за замовчуванням, як-от ваш обліковий запис оператора.

Усі ці інші програми VoIP, ймовірно, все ще можна використовувати для самостійного виклику 911 (у багатьох країнах функція 911 є обов’язковою за законом). Але якщо ви відкриєте номеронабирач за замовчуванням і натиснете 911, Android вибиратиме лише стандартні телефонні облікові записи, керовані системою.

Хто виправляється та як можна перевірити помилку служби екстреної допомоги

Рахман каже, що помилкою Google є CVE-2021-39659, яку щомісячний бюлетень безпеки класифікує як вразливість високого рівня відмова в обслуговуванні з виправленнями для пристроїв під управлінням Android 10, 11 і 12. У кодовій базі Android Google є Насправді це виправлення повністю повертається до Android 8.0, яка технічно більше не підтримується. Це здебільшого чисто теоретично, оскільки нульові постачальники насправді не просувають оновлення безпеки для таких старих пристроїв. Але код є, якщо комусь знадобиться.

Стек телефонії Android (ще?) не є модулем Project Mainline, який легко оновити, тому єдиний спосіб отримати виправлення — це щомісячне оновлення безпеки Android за січень 2022 року. Samsung має оновити всі телефони в цьому списку , починаючи з цього тижня, а Google випускає виправлення для Pixel 3a, 4, 4a, 5 і 5a. Оновлення: також очікується оновлення екстреного виклику для Pixel 3, який не працює.

Оновлення для Pixel 6 ще не вийшло. Найновіший флагман Google зараз переживає кризу оновлення. Оновлення від грудня 2021 року було скасовано через проблеми з немобільним зв’язком (телефонні дзвінки не працюють). Оскільки Google намагається виправити ситуацію, наступне оновлення Pixel 6 із цим виправленням 911 має відбутися «наприкінці січня». Тим часом можна використовувати листопадовий патч. Обидві діаграми Google: «початок січня» і «кінець січня» здаються неймовірно повільними через помилку, яка може призвести до буквальної смерті користувачів.

Я зроблю ще одну божевільну здогадку і скажу, що Pixel 6 — дивний телефон, тому що це зовсім інший SoC і модем (як від підрозділу Exynos Samsung, так і всі інші Pixels використовують Qualcomm). Створення сезону святкових покупок не дало Google можливості для маневру в разі затримки запуску. Це не робить його менш розчаровуючим для телефону з великою перевагою вперше, але, сподіваюся, це тимчасова проблема.

Я здивований, що це просто «висока» (а не «критична») помилка, і що розгортання займає від одного до двох місяців. Затримка швидкої допомоги може бути фатальною, тому було б непогано, якби вона все приїхала швидше, а не так, як Google вирішує вирішити цю проблему.

Наразі ми чули лише про те, що Microsoft Teams ініціює помилку повторюваних облікових записів телефону, але невідомо, чи інші програми виробляють подібну помилку. Якщо ви бачите програму в цьому списку, яка створює багато дублікатів облікових записів, швидше за все, вона заважає вам підключитися до екстрених служб. Рекомендую видалити програму, зв’язатися з розробником і повідомити про це іншим у Твіттері або де завгодно.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *