«Черная точка» — последняя уязвимость Unicode, которая приводит к сбоям iPhone и iPad, работает на iOS 11.3 и iOS 11.4

Сегодня распространяется новая ошибка Unicode, популяризированная видео от EverythingApplePro. Ее называют ошибкой «черной точки» из-за ее происхождения на Android как ошибки, связанной с WhatsApp: она распространялась со следующим эмодзи: <⚫> 👈🏻. Версия этой ошибки для iOS несколько отличается по механизму, но ни один из вариантов на самом деле не полагается на видимый символ черной точки для вызова зависаний и сбоев.

Суть в том, что строки содержат тысячи скрытых невидимых символов Unicode, которые потребляют ресурсы процессора, пока система пытается их обработать. Если этот специально созданный текст отправляется через Сообщения, это приведет к повторным сбоям, когда получатель попытается его прочитать.

Проблема обработки текста затрагивает и другие платформы, а не только iOS. При написании этой статьи я попытался скопировать ссылку на текст, и это вызвало неконтролируемый рост использования памяти моего Mac, создав в процессе файл подкачки объемом 30 гигабайт. Хотя это пока не проверено, логично, что та же уязвимость существует и в watchOS, и в tvOS.

Похоже, что огромное количество невидимых символов просто заставляет движок обработки текста практически бесконечно обрабатывать строку, что затем приводит к блокировке всей операционной системы и приложений. Ошибка затрагивает iOS 11.3 и текущие бета-версии iOS 11.4. Теперь, когда проблема получила общественное внимание, мы ожидаем, что Apple оперативно выпустит исправления.

Вы можете увидеть демонстрацию в видео ниже:

Если кто-то отправит вам это, есть ли обходной путь? Как это исправить? Пока Apple не выпустит новую прошивку для устранения первопричины, вам просто нужно найти способ выйти из экрана с деталями сообщений. Вы можете попробовать принудительно закрыть приложение «Сообщения» и использовать 3D Touch, чтобы открыть окно «Новое сообщение». Затем вы можете вернуться к основному списку «Сообщения» и удалить вредоносный поток разговора. Вы также можете зайти на другое устройство с синхронизацией iCloud и удалить сообщение удаленно.

Unicode сложен и разнообразен. Поставщикам практически невозможно устранить все ошибки, связанные с текстом, сохранив при этом производительность системы. Сокращения, оптимизации и малоизвестные части спецификации открывают возможные векторы для эксплуатации. Мы в последний раз видели подобную ошибку со строкой телугу в феврале.

Для разработчиков ОС, таких как Apple и Google, это постоянная игра в кошки-мышки. Apple, без сомнения, будет работать над исправлением в предстоящем обновлении программного обеспечения.

Если вы заинтересованы в более подробном техническом объяснении того, что происходит в данном конкретном случае, ознакомьтесь с этим объяснением Тома Скотта.