В Chrome Web Store обнаружено вредоносное расширение под видом YouTube-панели

от автора

Поставил расширение Youside — боковая панель YouTube (Chrome ID: mmecpiobcdbjkaijljohghhpfgngpjmk). Описание — стандартное: встроенный плеер, подписки, быстрый доступ. На практике — код не про YouTube.

Разбор userpage.js.

Сетевой слой: внешний control-plane

await fetch("https://mines.cloudapi.stream/user\_info", {  method: "POST",  headers: { "Content-Type": "application/json" },  body: JSON.stringify({    user_id: localStorage.getItem("user_id"),    type: "game_new"  })});

Что важно:

  • жёстко задан внешний API (cloudapi.stream)

  • используется user_id из localStorage (персистентный идентификатор)

  • параметр type=game_new не связан с YouTube

Ответ сервера (result) полностью определяет поведение UI.

Серверная модель управления

Используемые поля:

  • success

  • is_valid

  • rating

  • protxt

Дальше клиент просто применяет это к DOM.

Гейтинг интерфейса

if (result.is_valid) {  proplansID.classList.add('h_');  playBtn.classList.remove('h_');} else {  playBtn.classList.add('h_');}

Фактически feature-флаги приходят с сервера.

Инъекция HTML

if (result.protxt) {  proplansID.innerHTML = result.protxt;}
  • прямой innerHTML

  • без фильтрации

  • сервер может вернуть любой контент

Монетизация через подмену ссылок

document.querySelectorAll('.buyBtn').forEach(btn => {  btn.setAttribute(    'href',    `https://topup.cloudapi.stream/?user\_id=${encodeURIComponent(localStorage.getItem("user\_id"))}&type=game`  );});
  • все .buyBtn переписываются

  • внешний домен

  • user_id передаётся в query

В описании расширения про это ничего нет.

Сбор идентификаторов

const langCode = (navigator.language || navigator.userLanguage).split('-')[0];const extensionId = chrome.runtime.id;

Используется:

Комбинация достаточна для стабильного трекинга.

Поведение Play

playBtn.addEventListener("click", () => {  window.location = "https://youtube.com/";});
  • никакого плеера

  • никакого embed

  • просто редирект

Чего нет в коде

При заявленных функциях отсутствует:

  • YouTube IFrame API

  • любые запросы к youtube.com

  • логика подписок / поиска

  • работа с видеопотоком

Архитектура по факту

  1. Генерируется/читается user_id

  2. Клиент ходит в внешний API

  3. Получает конфигурацию

  4. Сервер управляет UI

  5. Внедряются ссылки монетизации

Это не YouTube-клиент, а thin-client для стороннего backend.

IOC

Extension ID:

  • mmecpiobcdbjkaijljohghhpfgngpjmk

Domains:

Hashes:

  • SHA256: 3de1a05b26284c0e3dcc81e2e4b9ba4e99e1ce1245a9c57718b28ce111c9dfd9

  • MD5: 8ac5dcbd91b84f083feb813021d9223d

Итог

Код показывает:

  • привязку пользователя к внешнему сервису через user_id

  • удалённое управление интерфейсом

  • внедрение HTML с сервера

  • скрытую подмену ссылок

При этом отсутствует заявленный YouTube-функционал.
По совокупности это выглядит как вредоносное/нежелательное расширение, замаскированное под утилиту для работы с YouTube.

ссылка на оригинал статьи https://habr.com/ru/articles/1024996/