Как отправка ~4000 смайликов может крашить WhatsApp

Что произошло
Исследователь Индраджит Бхуян (Indrajeet Bhuyan) сообщил в публикации и через The Hacker News об ошибке в WhatsApp: при получении сообщения, содержащего почти 4 000 эмодзи, приложение (и веб-клиент) может аварийно завершать работу. Это не требует специального «упаковочного» формата — достаточно последовательности стандартных смайликов.
В прошлом году тот же исследователь обнаружил похожую уязвимость, когда достаточно было отправить ≈2 000 слов в особой кодировке, что приводило к крашу приложения; тогда WhatsApp ограничил длину текстовых сообщений, но, по наблюдению Бхуяна, лимиты для эмодзи не были учтены.
Как это работает (кратко)
По словам исследователя, при вставке примерно 4 200–4 400 эмодзи браузер и/или приложение начинает замедляться. Поскольку ограничение внутренне не блокирует такой ввод, при получении сообщения происходит переполнение буфера и сбой процесса. Это типичный пример ошибки обработки больших входных данных.
Цитата из публикации исследователя:
В WhatsApp Web приложение позволяет вводить большое количество символов, но после набора примерно 4 200–4 400 смайликов браузер начинает тормозить. Так как лимит не достигнут, WhatsApp допускает дальнейшее вставление… когда сообщение получает приложение, происходит переполнение и краш.
На кого влияет
- WhatsApp на Android (включая версии, упомянутые исследованием, такие как Marshmallow, Lollipop и KitKat). Поменяйте только в рамках заявленного — не делаем допущений о других версиях.
- WhatsApp Web в браузерах Chrome, Opera и Firefox, по сведениям исследователя.
- Любые пользователи, получившие подобное сообщение — особенно те, кто не знает, как быстро удалить разговор.
Как защититься — простые шаги для пользователей
- Не открывайте подозрительные сообщения и предварительно не прокручивайте чат с большим количеством эмодзи.
- Если получили сообщение и приложение падает при открытии, удалите разговор целиком с отправителем (инструкция ниже).
- Сделайте резервную копию важных переписок заранее (если не хотите потерять сообщения при удалении чата).
- Обновляйте WhatsApp и браузеры по мере выхода исправлений от разработчика.
Важно: удаление разговора без резервной копии приведёт к потере истории переписки с этим контактом.
Что делать, если вы стали жертвой (пошагово)
Android (если приложение падает при открытии чата):
- Откройте WhatsApp, но не переходите в проблемный чат.
- На главном экране найдите контакт в списке бесед, нажмите и удерживайте (не открывая чат).
- Выберите «Удалить чат» (Delete chat) или «Удалить беседу» — таким образом вы удалите сообщение с эмодзи и избежите повторного краша.
- Если удаление через интерфейс невозможно, воспользуйтесь резервным копированием и восстановлением: удалите приложение, установите заново и восстановите резервную копию, сделав при этом выбор не восстанавливать проблемный диалог.
WhatsApp Web (если браузер тормозит):
- Не открывайте проблемный поток; закройте вкладку сервиса.
- Удалите чат через мобильное приложение (синхронизация удалит его и в Web).
Если вы хотите посмотреть доказательство концепции, видео доступно по ссылке: https://youtu.be/hEMD5y3WGt4
Безопасное воспроизведение (мини-методология для исследователей)
- Повторять только в изолированной тестовой среде — не в продакшене.
- Использовать тестовый аккаунт и виртуальную машину/эмулятор Android с отключёнными персональными данными.
- Собрать пакет эмодзи в текстовый файл и отправить его контролируемому аккаунту.
- Наблюдать поведение приложения и собирать логи (логкат для Android, консоль браузера для Web).
- Зафиксировать версии приложения и среды.
Критерии приёмки: приложение аварийно завершается или перестаёт реагировать после открытия сообщения; поведение воспроизводимо на нескольких устройствах/браузерах.
Когда этот приём не сработает (контрпримеры)
- Если WhatsApp обновлён и патч уже закрывает ограничение для эмодзи.
- Если на устройстве включены ограничения входящих сообщений/фильтры, которые блокируют длинные сообщения.
- Если сообщение прошло через промежуточный сервис (например, некоторые шлюзы мессенджеров), который нормализует или обрезает вход.
Роль‑ориентированные чеклисты
Для обычного пользователя:
- Не открывать подозрительные сообщения.
- Создать резервную копию чатов.
- Удалять разговор с отправителем, если при открытии происходят сбои.
Для ИТ‑администратора компании:
- Развернуть политику обновлений для пользователей.
- Информировать сотрудников о риске и поведении при получении таких сообщений.
- При необходимости — временно блокировать передачи мультимедийных сообщений или ограничить размер входящих сообщений на уровне шлюза.
Для разработчика WhatsApp/клиента:
- Ввести и проверить ограничения по количеству эмодзи в сообщении.
- Обработать границы буферов и добавить проверки длины входных данных.
- Провести нагрузочное тестирование и fuzzing для обработки ограничений юникода.
План инцидентного реагирования и откат
- Зафиксировать инцидент: версия приложения, устройство/браузер, шаги воспроизведения.
- Приоритет: опубликовать обходной путь для пользователей и выпустить временное предупреждение.
- Разработать патч для проверки лимита эмодзи при приёме сообщений и на этапе рендеринга.
- Развернуть обновление и мониторить отчёты об ошибках.
- Для отката: если патч вызывает регрессии, откатите на предыдущую стабильную версию и примените промежуточную серверную фильтрацию входящих сообщений.
Рекомендации по безопасности для разработчиков
- Всегда валидируйте длину и состав входных сообщений на сервере и клиенте.
- Обрабатывайте юникодные символы и смешанные составные эмодзи корректно; учитывайте их кодовые точки и последовательности.
- Используйте защиту от переполнения буфера и лимитирование памяти при рендеринге сообщений.
- Логируйте ошибки рендеринга, но не выводите конфиденциальные данные в логах.
Примечания по конфиденциальности и соответствию GDPR
Если вы удаляете переписку пострадавшего пользователя, предупредите его о возможной потере данных. При массовых инцидентах обеспечьте прозрачное уведомление затронутым пользователям и предложите инструкции по восстановлению и бэкапам.
Итоговая сводка
Этот баг показывает, как даже простые элементы интерфейса (эмодзи) могут стать источником критических ошибок, если входные данные не ограничены и не проверяются должным образом. Пользователям следует проявлять осторожность, а разработчикам — внедрять жёсткие границы и тестирование.
Важно: пока разработчик не выпустит патч, главный способ защититься — удалять проблемные разговоры и поддерживать резервные копии.
Ключевые выводы:
- Отправка примерно 4 000 эмодзи может приводить к крашу WhatsApp на некоторых версиях.
- Лучший обход — удалить разговор и восстановить важные данные из бэкапа.
- Разработчикам нужно ограничить входные данные и провести тестирование рендеринга эмодзи.
Примечание: следите за официальными обновлениями WhatsApp и установите их сразу после выпуска исправлений.
Похожие материалы

Музыкальная библиотека TikTok для продвижения бренда

Признаки неисправности SD‑карты и как диагностировать

Как воспроизводить YouTube в фоне на смартфоне

Ошибка 0x8007012a в Windows — как исправить

Как посмотреть понравившиеся посты в Instagram
