На прошлой неделе пользователи Reddit нашли интересный баг, который действует во всех версиях iOS. Если на телефон отправить определённую комбинацию символов, то он уходит в «ребут».

Вот эта комбинация.

003

Данный баг подробно исследовали на Хабре. Автор перебрал все комбинации символов и нашёл минимальную, которая работает аналогично оригинальной, хотя, может быть, не так красива.

004

Неизвестно, кто изначально нашёл этот баг, но он не послал информацию в компанию Apple, и поэтому в ближайшее время пользователям продукции «яблочной компании» придётся страдать.

После перезагрузки Messages может снова демонстрировать это сообщение как последнее полученное и перезагружаться. Можно попробовать исправить уязвимость, послав на телефон нормальное сообщение и сдвинув старое. Сама Apple рекомендует сделать это с помощью голосового помощника Siri.

Многие сайты уже фильтруют «небезопасную» последовательность глифов из кириллицы/латинского, арабского, маратхи и китайского.

Из заметки пользователя iago:

  • UILabel ни при чем, он не может даже показать текст, останавливаясь на слове Power;
  • UITextField аналогично;
  • UITextView прекрасно отобразил полный текст;
  • UIButton сгенерировал bad access!

Крэш происходит внутри метода CopyFromStorage(TRunGlue&, long) и, судя по ассемблерному коду, в момент копирования байтов длиной long n из одной части памяти в другую (movq 0x90(%rax), %rdx).

Другой пользователь dns78 делится дополнительной информацией: «Всякий bidi процессинг (когда в тексте встречаются сразу символы left-to-right и right-to-left), арабские диалекты, хинди, кхмер и т. п. — поле непаханное для крэшей. Во всех операционных системах. Обработка [например двухбайтных] символов каждого типа естественного языка — это примерно как виртуальная машина. Символы — как опкоды. В сложных языках эти опкоды могут модифицировать на лету [сегмент кода] прочий текст. Правила этих модификаций не до конца внятны. Например, в Sinhala. Отсюда ошибки».



10 комментариев

  1. 01.06.2015 at 22:57

    Требуем комбинацию!

  2. 01.06.2015 at 23:06

    Сайт превращается в баяноплощадку?

  3. 02.06.2015 at 06:59

    а он и был по жизни баяноплощадкой

  4. Jeffrey Davis

    02.06.2015 at 10:57

    Даже баяны бывает приятно поперетирать.
    Признавайтесь, кто сколько айфонов уже отправил в перезагрузку?

  5. 02.06.2015 at 13:27

    Леха из загнувшейся вебпланеты как то на швабре втирал про бинарную смс с помощью которой можно взломать модем)

  6. Jeffrey Davis

    02.06.2015 at 16:36

    Баяны ещё тем хороши, что к моменту их публикации можно успеть глубже обдумать тему, чтоб было меньше эмоций и банальности.

  7. 02.06.2015 at 20:18

    аааа! как обратно вернуть? смс теперь не открывается…. Зачем, зачем я прочитал эту статью(

  8. 04.06.2015 at 21:03

    Минимизировал код: ع ॣ ॣ ॣ

  9. Evang

    10.06.2015 at 16:42

    Ладно проблемы с парсингом и представлением разных языков могут быть, но проблемы с определением длины буфера для сообщения — это действительно у кого-то проблемы…

  10. 16.06.2015 at 16:24

    Ну и ничего не выходит? Как работало, так и работает.

Оставить мнение