Новый баг в Telegram Desktop позволяет прочитать последнее сообщение

Недавно я обнаружил в Telegram очень интересный баг. Он позволяет читать удалённые сообщения. И как сторонник и фанат культовых продуктов — тут же отправил сообщение о баге саппорту Telegram. Со спокойной совестью демонстрировал коллегам на работе, найденный баг. «Хочешь восстановлю твоё последнее сообщение в Telegram?» — говорил я и принимался за дело, наблюдая удивленные лица коллег.

Впрочем не будем медлить и перейдем к делу
Версия Telegram Desktop 1.6.3(последняя возможная на сегодня)

Шаги для воспроизведения

  • Отправляем «секретное» сообщение Бобу
  • Чистим чат сообщений с Бобом, кнопочка «Clear history»
  • Отправляем новое любое сообщение Бобу
  • Удаляем сообщение из контекстного меню «Delete message» (ставим галочку — удалить у Боба тоже)
  • Ожидания

    Все сообщения удалены и чат полностью пуст.

    Реальность

    Появилось наше «секретное сообщение», которое было удалено.

    Дальнейший ход моих мыслей
    Первым делом, хотелось понять — это сторона сервера или сторона клиента. Поэтому аналогичным образом я попытался воспроизвести багу на клиенте Telegram под Android. К сожалению, на сотовом бага не воспроизвелась и оптимизм уже поубавился. Стало понятно, что перед нами скорее всего косметический фикс: напутали с индексами и из локального кэша достается чуть больше записей.

    Так как Telegram Desktop является open source и лежит на github. Я нашёл свою версию Telegram, открыл код и попытался понять что к чему. Код оказался достаточно тривиальным и понятным. Всё начинается с подвешивания обработчика для команды. Он всего лишь показывает диалоговое окошечко с параметрами для удаления и дальше идёт очистка чата. Лично я визуально глазом ни за что не зацепился и вроде всё работает правильно. Нужно развернуть environment, отладить и сразу станет понятно, что к чему.

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

    Если вам понравится данная статья и будет много комментариев, я обязательно напишу следующую статью: «Как я исправил баг в Telegram». А так же расскажу подробно, как развернуть environment для desktop версии Telegram. Спасибо за внимание!

    Оставить комментарий