Инциденты

GhostPoster: 17 вредоносных расширений Firefox прятали код в картинках

Артем Сафонов
By Артем Сафонов , Аналитик угроз
GhostPoster: 17 вредоносных расширений Firefox прятали код в картинках
Image by Anonhaven

15 декабря 2025 компания Koi Security опубликовала разбор кампании GhostPoster, в которой злоумышленники спрятали вредоносный JavaScript внутри PNG-логотипов браузерных расширений. Под удар попали 17 дополнений для Firefox, суммарно их скачали более 50,000 раз. Трюк не новый по идее, но новый по исполнению: проверка кода расширений обычно смотрит на скрипты, а здесь основная нагрузка лежала в картинке, которая внешне выглядела нормально.

Koi вышла на проблему после того, как их AI-движок Wings заметил странное поведение расширения Free VPN Forever. Оно читало сырые байты собственного файла logo.png и искало в нем маркер. Для отображения иконки такое чтение не требуется, и дальнейший анализ показал, что расширение действительно вытаскивало скрытый код и запускало его. Free VPN Forever появилось в каталоге Firefox Add-ons в сентябре 2025 и успело набрать больше 16,000 установок. На момент публикации отчета оно все еще было доступно, но уже 16 декабря 2025 Mozilla удалила все 17 расширений из маркетплейса. При этом важная деталь осталась: то, что уже установлено у пользователей, продолжает работать, пока его не удалить вручную.

Как прятали код в PNG и почему это проходило проверки

Стеганография в этом контексте это не шпионская романтика, а метод обхода анализа. Расширение запрашивает свой logo.png, это выглядит как нормальная операция. Затем оно читает файл как набор байтов, ищет маркер ===, и все, что идет после, трактует не как часть изображения, а как JavaScript. Визуально PNG отображается как обычно, а сканеры, которые проверяют только файлы скриптов, не видят полезную нагрузку, потому что она лежит в картинке.

Извлеченный код работал как загрузчик. Он ждал 48 часов перед активацией, чтобы пройти модерацию и не проявить себя сразу. После задержки загрузчик обращался к серверам управления на доменах liveupdt.com и dealctr.com, причем второй использовался как запасной. Еще одна хитрость была в вероятности: основная нагрузка скачивалась только примерно в 10% случаев. Это снижало шанс, что исследователь или система мониторинга поймают подозрительный сетевой трафик в момент проверки.

Далее шла многоступенчатая расшифровка. Нагрузка была замаскирована сменой регистра букв, подменой цифр 8 и 9, декодированием Base64 и шифрованием XOR. Ключ для XOR вычислялся из идентификатора установленного расширения, то есть код подстраивался под конкретную установку. Такой прием усложняет расследование: один и тот же файл в разных экземплярах ведет себя похоже, но выглядит по-разному.

Что делали расширения после активации

После распаковки включался полноценный набор функций, рассчитанный на прибыль и контроль в браузере. Во-первых, злоумышленники перехватывали партнерские ссылки на крупных торговых площадках Taobao и JD.com, подменяя атрибуцию так, чтобы комиссия уходила им. Пользователь ничего не замечал: страница товара открывалась, покупка проходила, только выгоду получал другой.

Во-вторых, внедрялся код Google Analytics с идентификатором UA-60144933-8, чтобы отслеживать заражение, длительность активности, посещаемые партнерские сети и отпечатки браузера. В-третьих, расширения снимали защитные заголовки в ответах сайтов, в том числе Content-Security-Policy и X-Frame-Options. По сути, браузеру тихо выкручивали защитные механизмы прямо во время серфинга.

Дальше включались скрытые iframe для рекламного и кликового мошенничества. Такие iframe жили около 15 секунд и самоуничтожались, а политика referrer подправлялась так, чтобы скрывать источник трафика. И наконец, был реализован обход капчи: через наложения, через размещенные на GitHub решения по адресу refeuficn.github.io, а также через проверку статуса аккаунта Baidu. Это нужно, чтобы автоматическая активность выглядела как человеческая и не попадала под антибот-защиту.

Koidex report for Free VPN

Koi связала все 17 расширений одной инфраструктурой. При этом не все из них использовали именно PNG-стеганографию: часть могла подгружать JavaScript напрямую или прятать вызовы через скрытый eval с закодированными доменами управления. Это выглядит как эксперимент: злоумышленники проверяли, какой способ дольше живет в магазине расширений и приносит больше денег.

Главный вывод здесь в том, что экосистема расширений уязвима не из-за одной технологии. Она уязвима из-за комбинации приемов: задержка в 48 часов, редкая загрузка в 10% случаев и отсутствие явной вредоносной активности до 6 дней после установки. Классическая проверка по коду и ручная модерация плохо видят такой сценарий.

Если у вас стоит любое расширение из этой цепочки, особенно из категории бесплатный VPN, лучше относиться к нему не как к инструменту приватности, а как к потенциальному источнику наблюдения и подмен. И да, финальная мысль из этой истории довольно скучная, но верная: бесплатные VPN не существуют. Вместо приватности вы часто получаете чужую аналитику, чужие скрипты и чужую монетизацию вашего браузера.

Free VPN GhostPoster Mozilla Firefox Браузер Стеганография