Сообщения о полной потере данных на телефонах после установки определённых обоев вызвали широкий резонанс. Предупреждение об опасности распространилось в сети, однако многие пользователи всё же установили изображение, столкнувшись с различными последствиями: от незначительных сбоев до полной очистки данных и необходимости сброса настроек.
Причина сбоев
Выяснилось несколько любопытных фактов:
- Уязвимость затрагивает не все устройства. Телефоны Google и Samsung, например, оказались невосприимчивы.
- Загрузка и повторная загрузка изображения через социальные сети, например, Weibo, изменяет цветовую насыщенность, делая обои безопасными.
- Скриншот изображения не вызывает сбоев.
Расследование
Начальное предположение о вредоносном ПО не подтвердилось. Обратный поиск изображения привёл к источнику — сайту hdqwalls.com. Оригинальное фото, сделанное камерой Nikon D80, вызвало полную потерю данных даже на Galaxy S20 Ultra. Предположение о кодировании в цветовом профиле Google Skia также оказалось неверным.
Проблема цветового пространства
Причина сбоев — в цветовом пространстве оригинального фото. Человеческий глаз воспринимает широкий спектр цветов, но Android-устройства, для обеспечения согласованности, в основном поддерживают sRGB — подмножество этого спектра. Большинство устройств используют sRGB: камеры, принтеры, интернет. Существуют, однако, и другие пространства, например, Adobe RGB и ProPhoto RGB, с более широким диапазоном цветов. Преобразование изображения из sRGB в Adobe RGB «растягивает» цветовое пространство. Оригинальное фото было закодировано в ProPhoto RGB. Преобразование в sRGB уменьшает яркость цветов. Фотограф, вероятно, экспортировал фото в этом режиме, не осознавая последствий. Weibo, например, не поддерживает ProPhoto RGB, поэтому автоматически конвертирует изображение в sRGB при загрузке.
Ошибка конвертации
Android способен обрабатывать ProPhoto RGB, но проблема возникает при конвертации в sRGB. Всё дело в одном пикселе с аномально высокими значениями RGB: 255, 255 и 243. Формула расчёта яркости (люминоса), учитывающая особенности восприятия цветов человеком, даёт значение около 254, но система использует округление вверх, получая 256 — ошибку. Эта ошибка приводит к бесконечному циклу, так как обои установлены постоянно, и Android пытается постоянно исправлять её. Скриншоты безопасны, поскольку Android создаёт новые изображения в sRGB.
Проблема затрагивает устройства, использующие стандартный движок обработки цвета Google. Вероятность повторения подобной ситуации с другими обоями мала. В Android 11 проблема должна быть решена. Не устанавливайте эти обои!