|
Раскрыты детали и опубликован эксплоит для уязвимости (CVE-2026-58882) в платформе Android, позволяющей добиться зацикленной перезагрузки через отправку специально оформленного SMS-сообщения. Для устранения зацикленной перезагрузки требуется сброс к заводским настройкам или ручные манипуляции при помощи утилиты ADB. Уязвимость получила кодовое имя "SMS of Death" и устранена в октябрьском обновлении Android. Атака может быть совершена на любые телефоны, оснащённые Android 12-17. Обновление выпущено только для Android 14-17. Эксплуатирующее уязвимость SMS-сообщение обрабатывается как фоновое и не отображается на устройстве.
Проблема вызвана целочисленным переполнением при обработке некорректного заголовка WAP Push-сообщения, отправленного через SMS.
Переполнение возникает так как поле с размером заголовка приводится к
целому знаковому числу с типом int без должной проверки границ, что позволяет добиться получения отрицательного числа в переменной headerLength. В дальнейшем эта переменная используется при выделении памяти через вызов "new byte[headerLength]", что в случае получения отрицательного числа приводит к генерации исключения и аварийному завершению процесса com.android.phone.
Через несколько секунд процесс перезапускается, но эффект не ограничивается кратковременным прерыванием связи. Проблемное WAP Push-сообщение из-за аварийного завершения продолжает находиться в очереди необработанных сообщений и новая попытка его обработки приводит к очередному аварийному завершению процесса com.android.phone.
После серии подобный падений срабатывает обработчик RescueParty, который перезагружает устройство в режим Recovery, в котором предлагается выполнить сброс к заводским настройкам. Простая перезагрузка не помогает - если проблемное сообщение не удалено из очереди, примерно через 90 секунд устройство опять будет перезагружено.
Для удаления сообщения из очереди без сброса к заводским настройкам предлагается использовать утилиту adb:
adb shell content query --uri content://sms/raw --projection _id:destination_port:date:deleted
adb shell cmd appops set com.android.shell WRITE_SMS allow
adb shell "content delete --uri content://sms/raw --where \"address='<SENDER>'\""
adb shell cmd appops set com.android.shell WRITE_SMS default
adb shell pm clear com.android.providers.telephony
Но это лишь даст возможность извлечь SIM-карту, загрузиться и установить обновление прошивки. Так как из-за аварийного завершения процесса "com.android.phone" оператору связи не отправляется подтверждение обработки WAP Push-сообщения, до истечения таймаута он будет предпринимать новые попытки отправки и ситуация будет повторяться. В проведённых тестах повторные отправки продолжались от суток до недели. Для устройств, производители которых прекратили публикацию обновлений прошивки, обходного пути блокирования проблемы пока нет.
|