Всем привет! Сегодня я хочу поделиться историей одного странного и затянувшегося расследования, главным героем которого стал мой компьютер, а антагонистом — веб-версия Telegram. Эта история не только о поиске прожорливого процесса, но и о глубоких аномалиях в поведении современных веб-приложений, которые вызывают серьезные вопросы.

Пролог: Внезапный враг внутри Chrome

Я не системщик и не шарю особо в безопасности и в том как бы схватить за хвост призрака, даже если он майнер, думаю в комментариях умные люди раскроют ситуацию и дадут рекомендации как действовать.

Все началось буднично. Я заметил, что дома слишком жарко, а кулеры процессора вышли на взлетный режим. Беглый взгляд на диспетчер задач Windows показал, что один из процессов chrome.exe стабильно отъедает около 30% моего 16-ядерного процессора, работающего на частотах 5+ ГГц. Для понимания масштаба: это нагрузка, сопоставимая с рендерингом видео в After Effects, но сейчас я просто сидел в браузере и ни одна из моих вкладок не содержала анимаций или вычислений для такой нагрузки.

Первая мысль — найти виновную вкладку. Я обратился за помощью к ChatGPT, который любезно подсказал стандартный путь: встроенный диспетчер задач Chrome по Shift + Esc.

Диспетчер задач
Диспетчер задач

Проблема была идентифицирована практически сразу. Процесс с PID 7136, ответственный за львиную долю нагрузки, оказался Dedicated Worker: https://web.telegram.org/k/rlottie.worker-DkltbnkR.js. То есть, виновником была вкладка с Telegram Web (которую я закрыл дня 4 тому назад), т е среди активных вкладок виновников не было.

Злоумышленник найден по PID!)
Злоумышленник найден по PID!)

Казалось бы, инцидент исчерпан. Закрыть вкладку — и дело с концом. Но тут-то и началось самое интересное.

Акт I: Неубиваемый процесс и белый экран

Я попытался зайти в Telegram Web снова, но вместо привычного интерфейса меня встретил абсолютно белый экран. Вкладка была пуста. Но процесс-воркер никуда не делся и продолжал молотить на 30% CPU.

Что я только не делал:

  • Несколько раз перезагружал вкладку через Ctrl + Shift + R (жесткая перезагрузка с очисткой кэша).

  • Закрывал и открывал вкладку заново.

  • Пытался зайти по прямым ссылкам на чаты.

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

Это первая и главная аномалия. Поведение, абсолютно нетипичное для обычного веб-скрипта. Мои подозрения переросли в паранойю: а не майнер ли это, который так хитро маскируется под системный воркер Telegram?

Акт II: Расследование. Подозрительные улики

Я снова обратился к AI-помощнику с просьбой провести более глубокое исследование и помочь собрать доказательства. В ходе нашего диалога вскрылся целый пласт странностей в архитектуре Telegram Web.

Странность №1: Феноменальная персистентность Service Worker

В чем аномалия: Service Worker (SW) — это скрипт, который браузер запускает в фоновом режиме, отдельно от веб-страниц. Он нужен для пуш-уведомлений, фоновой синхронизации и работы в офлайне. По спецификации, SW должен выгружаться из памяти после короткого периода бездействия, чтобы не расходовать ресурсы. В моем случае воркер не просто жил, а активно работал несколько суток, переживая перезагрузки ОС, несколько сбоев электричества, полное отключение от сети два раза и один раз на 8 часов!

Техническое объяснение: Такое поведение может быть вызвано либо багом в самом воркере, который входит в бесконечный цикл, либо некорректной регистрацией, из-за которой Chrome не может его "усыпить". Когда вы запускаете Chrome, он проверяет зарегистрированные SW, и если SW подписан на события (например, fetch), он может активироваться даже без открытой вкладки, перехватывая сетевые запросы. Именно поэтому процесс возрождался снова и снова.

Странность №2: Белый экран при активных воркерах

В чем аномалия: Пользовательский интерфейс (UI) не отрисовывался во время попыток входа на сайт, но когда в хроме не было открыто вкладок Telegram - в фоне работали десятки процессов, связанных с Telegram: rlottie.worker (анимации), crypto.worker (шифрование), mtproto.worker (сетевой протокол).

Техническое объяснение: Это указывает на то, что жизненный цикл SW и UI полностью рассинхронизирован. SW успешно регистрируется и запускает свои дочерние воркеры, но основной скрипт, отвечающий за отрисовку интерфейса, по какой-то причине падает или не может выполниться. В итоге мы получаем "зомби-приложение": фронтенд мертв, а бэкенд в браузере жив и потребляет ресурсы.

Странность №3: Использование blob: URL для загрузки воркеров

В чем аномалия: Многие воркеры (кроме rlottie и tinyld) загружались не с прямого URL вида https://web.telegram.org/worker.js, а через blob: ссылки.

Техническое объяснение: blob: URL — это ссылка на данные, которые сгенерированы динамически прямо в браузере из строки или массива байт. С одной стороны, это позволяет гибко управлять кодом. С другой — это усложняет аудит безопасности. Вы не можете просто посмотреть исходный код скрипта по ссылке. Он создается "на лету", и его содержимое может меняться, что является идеальной средой для маскировки вредоносного кода.

Странность №4: Активный крипто-воркер без секретных чатов

В чем аномалия: В диспетчере задач был замечен crypto.worker-BTYwgy7.js. Но ведь веб-версия Telegram не поддерживает сквозное шифрование (E2EE) и секретные чаты! Зачем ей крипто-воркер?

Техническое объяснение: Это подозрение оказалось ложным, но показательным. Как пояснил AI, протокол MTProto, на котором работает Telegram, использует шифрование не только для секретных чатов. Оно нужно для защиты канала между клиентом и сервером (шифрование Cloud Chats), для генерации ключей авторизации (обмен Диффи-Хеллмана), для шифрования медиафайлов при передаче и для проверки паролей двухфакторной аутентификации. Все эти операции ускоряются за счет выноса в WebAssembly-воркер. Так что его наличие оправдано, но для неискушенного пользователя выглядит подозрительно.

Странность №5: Неэффективность официальных каналов поддержки

В чем аномалия: Как правило техподдержка молчит. Жду их ответы на некоторые обращения уже лет 6, смысл обращаться если пользователь не из ФСБ (Французской Службы Безопасности)?

Техническое объяснение: Это, к сожалению, распространенная проблема крупных сервисов. Но когда речь идет о критическом баге, потребляющем огромное количество ресурсов и вызывающем подозрения в безопасности у обычного пользователя, такая неотзывчивость создает токсичную атмосферу недоверия. Надеюсь кто-то из команды ТГ это прочитает, Аминь!

Акт III: Вердикт — майнинг или чудовищный баг?

После глубокого анализа мы с ГПТ пришли к выводу, что это, скорее всего, не майнинг. Вот аргументы "против":

  1. Отсутствие сторонних подключений. Анализ сетевой активности не показал соединений с известными майнинг-пулами. Все запросы шли на поддомены telegram.org.

  2. Отсутствие кода майнера. Поиск по ключевым словам (mine, hash, nonce, coinhive, cryptonight) в коде самого rlottie.worker.js ничего не дал.

  3. Природа rlottie. Это библиотека от Samsung для рендеринга сложных векторных анимаций (Lottie). Они действительно очень ресурсоемкие, и при определенных условиях (отключенное аппаратное ускорение в браузере, баг в версии) могут вызывать колоссальную нагрузку на CPU.

Скорее всего, мы столкнулись с катастрофическим багом, усугубленным несколькими факторами:

  • "A"-версия Telegram Web, которая использует более тяжелый рендерер анимаций (в отличие от более легкой "K"-версии).

  • Баг в жизненном цикле Service Worker, который не позволял ему выгрузиться и приводил к зацикливанию.

Эпилог: Как победить монстра и что делать, если вы столкнулись с подобным

Вот пошаговый план, который помог окончательно решить проблему и который я рекомендую всем, кто столкнется с подобным поведением любого веб-приложения.

  1. Принудительно удалить Service Worker. Это самый важный шаг.

    • Откройте инструменты разработчика (F12 или Ctrl + Shift + I).

    • Перейдите на вкладку Application -> Service Workers.

    • Найдите в списке воркеры, связанные с web.telegram.org, и нажмите Unregister для каждого из них.

    • Как альтернатива, можно выполнить в консоли скрипт, который убьет всех воркеров на странице:

      navigator.serviceWorker.getRegistrations()
        .then(regs => regs.forEach(reg => reg.unregister()))
        .then(() => console.log('All service workers unregistered'));
      
  2. Полностью очистить данные сайта.

    • На той же вкладке Application перейдите в Clear storage.

    • Поставьте все галочки и нажмите Clear site data.

  3. Включить аппаратное ускорение (в моем случае было включено, что тоже странно).

    • Зайдите в Настройки Chrome -> Система.

    • Убедитесь, что включен параметр «Использовать аппаратное ускорение, если доступно».

  4. Перейти на K-версию Telegram.

    • Используйте адрес https://web.telegram.org/k/. Она значительно легче и оптимизированнее.

Заключение

Хотя прямых доказательств майнинга найдено не было (в силу моей слабой компетентности в этом деле), подозрение есть и эта история — яркий пример того, как совокупность багов, непрозрачной архитектуры (blob: URL) и неотзывчивой поддержки может породить обоснованные подозрения и доставить массу головной боли. Поведение Telegram Web было аномальным, неинтуитивным и враждебным по отношению к пользователю и его ресурсам. Дамп памяти процессора я снял, но разбираться в нем - надо найти время и в принципе большинству пользователей врядли это захочется делать. А от ТГ хотелось бы исправления багов, вместо пукающих и какающих эмоджи.

Надеюсь, мое расследование будет полезно тем, кто столкнется с необъяснимой нагрузкой от браузера. Будьте бдительны и не бойтесь копать глубоко!

Комментарии (21)


  1. diakin
    27.06.2025 16:52

    Эмм.. Так кто виноват все-таки?
    В ЯБ такого не наблюдал никогда.


    1. dartraiden
      27.06.2025 16:52

      <sarcasm>Спросите у ChatGPT, тут вся статья это пересказ его ответов</sarcasm>


    1. EvilTeacher
      27.06.2025 16:52

      Скорее всего - это Хром, он сам по себе любит откушать памяти полной ложкой. А вот в веб-версии Телеграма для Оперы - ничего подобного не наблюдается. И в версии для Vivaldi - тоже.


      1. asuzena
        27.06.2025 16:52

        чего по klar


  1. Y_Koval
    27.06.2025 16:52

    rlottie - очень сложная библиотека, и она нужна для рендеринга анимодзи, тех самых эмодзи, которые пользователи создают сами. Возможно, клиент не учитывает, что нужно их рендерить только тогда, когда они находятся в зоне видимости, из-за этого рендерятся все сообщения с анимодзи, которые получил клиент, а если вы подписаны на множество Telegram-каналов или часто используете анимодзи в личных беседах, это приводит к высокой нагрузке на процессор, к тому же стоит учесть, что браузерное приложение - крайне ужасная вещь. Хорошего использования ресурсов от него ждать не стоит, это все-таки не нативное приложение.


    1. ThingCrimson
      27.06.2025 16:52

      Неужели нет возможности отключить эти самые «анимодзи» совсем напрочь навсегда? Грустно, если так — даже простые статичные «эмодзи», как по мне, излишнее и ненужное украшательство; а уж с анимацией, да ещё создаваемые пользователями…

      Глянул в приложении для iOS (Settings / Appearance / Animations) — выставлено "Always On" для Power Saving Mode, что приводит к отключению всех Resource Intensive Process (7 штук). При случае попробую в веб-версии поискать.


    1. flowerlilian0 Автор
      27.06.2025 16:52

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


  1. Chirkovol_2025
    27.06.2025 16:52

    А Вам лучше проверить ПК на вирусы ! И обновить Хром.


  1. goone777
    27.06.2025 16:52

    Используйте адрес https://web.telegram.org/k/. Она значительно легче и оптимизированнее.

    Да, но нет. Пользуюсь уже более 5 лет на ПК web-версией телеграмма и раз в несколько месяцев данные сайта разрастаются до 20гб+ на системном диске.
    Долго не мог понять, куда место уходит.

    Я так понимаю какого-то лимита на занимаемое место для данных с сайтов не предусмотрено, что странно.
    Буду благодарен, если кто подскажет, как этот лимит установить, или как не позволить web-верcии TG сжирать более 8-10гб.


  1. darkrain
    27.06.2025 16:52

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


  1. drr8593
    27.06.2025 16:52

    Вопрос к аудитории: упомянутый ТГ-софт автором — это серверная часть или клиентская у Телеги? Если клиентская, то разве это не с открытым исходным кодом, чем бахвалился господин Дуров, то есть где-то долны быть исходники Телеграм, комьюнити, программисты, патчи, проблемы, как это бывает в Open Source. Им и надо сообщать, разве не так это работает, когда не работает, как надо.


    1. flowerlilian0 Автор
      27.06.2025 16:52

      Как бы всё так, но.
      В официальном баг-трекере Telegram Web отмечено, что на версии 1.9.0 действительно был баг, из-за которого при просмотре каналов с фотографиями и видео потребление CPU доходило до 100 % — именно то, что вы видите в Dedicated Worker. С выпуском “K-версии” этот кейс был помечен как «Fixed».


      1. verssetty
        27.06.2025 16:52

        Тг время от времени выжирает проц несколько лет уже, больше 5 точно


  1. Wesha
    27.06.2025 16:52

    (Со вздохом:) Эх, молодьож...


    1. fhunter
      27.06.2025 16:52

      Ещё надо запретить хрому работать в фоне после закрытия своего окна.


    1. ifap
      27.06.2025 16:52

      Воу, в хромом наконец запилили about:config! /sarcasm


      1. Wesha
        27.06.2025 16:52

        chrome://flags?