Популарни WordPress додатоци на скрипти изменети за поставување скриени backdoor пристапи на веб-страници

Напаѓач изменил доверливи JavaScript датотеки што ги користат WordPress сајтови со додатокот PushEngage, OptinMonster и TrustPulse, претворајќи ги тие датотеки во начин за пробивање на веб-страниците.

Кога администратор на сајтот бил најавен додека датотеката се вчитувала, кодот автоматски креирал администраторска сметка под контрола на напаѓачот и инсталирал скриен додаток кој овозможувал повторен пристап. Обичните посетители не го активирале овој механизам.

Секој сајт што бил погоден треба да се смета за компромитиран. Сите три додатоци се развиени од една компанија, Awesome Motive, која до 15 јуни сè уште не дала коментар за двата поголеми плагина.

Безбедносната компанија Sansec ја откри пошироката кампања на 13 јуни, при што пронашла ист злонамерен код во JavaScript што се испорачувал за сите три плагини.

PushEngage следниот ден објави сопствено известување за инцидентот, потврдувајќи дека напаѓач им сервирал изменети верзии од нивниот скрипт и дека сајтовите што ги вчитале можеле да бидат преземени.

PushEngage, кој е купен од Awesome Motive пред неколку години, засега е единствениот од трите додатока што има објавено насоки; корисниците на OptinMonster и TrustPulse сè уште немаат официјални информации.

Временските прозорци на нападот не биле исти за сите додатоци. Sansec забележал злонамерен код во OptinMonster и TrustPulse само околу 25 минути на 12 јуни, првпат околу 22:17 UTC и исчезнал до 22:42. Изложеноста на PushEngage траела подолго: неколку часа на 12 јуни, а неговиот скрипт сè уште бил испорачуван од некои CDN сервери и на 14 јуни.

Значи, двата додатока со најголем број на сајтови имале најкраток временски прозорец, додека PushEngage имал најдолг.

Sansec проценува дека овие три додатоци заедно се користат на повеќе од 1,2 милиони сајтови, при што најголемиот дел е OptinMonster, кој сам по себе има над еден милион активни инсталации. WordPress плагинoт PushEngage има повеќе од 9.000 инсталации. Оваа бројка претставува досег, а не реална штета — односно број на сајтови што го користат плагинoт, не број на компромитирани сајтови.

Како функционирал нападот

Заразената скрипта не правела ништо при обична посета на страница. Таа се активирала само кога најавен WordPress администратор ја вчитувал страницата, при што го користела неговиот сесија токен за преземање контрола над сајтот.

Токму поради ова, WordPress контролната табла не може лесно да покаже дали сте биле нападнати: backdoor-от е дизајниран да остане невидлив за административниот интерфејс, па единствен сигурен начин за проверка е директно на серверот.

Во случајот со PushEngage, изменетите датотеки биле нивните вообичаени скрипти pushengage-web-sdk.js и pushengage-subscription.js, сервирани од clientcdn.pushengage.com, CDN мрежата што ги дистрибуира нивните скрипти до клиентските сајтови. OptinMonster и TrustPulse биле погодени преку одделни CDN endpoints на Awesome Motive.

PushEngage наведува дека останатите негови системи не биле засегнати: не е пронајден никаков знак дека главната апликација или серверите што ги чуваат податоците на клиентите биле компромитирани.

Според сопствениот извештај на PushEngage, откако скриптата се извршила додека администратор бил најавен, таа:

  • ја користела сесијата на тој администратор за да извршува акции со целосни дозволи,
  • креирала нова администраторска сметка под контрола на напаѓачот,
  • инсталирала плагин кој не се прикажува во WordPress dashboard, и
  • ги испраќала новите податоци за најава и информации за сајтот на доменот tidio[.]cc, лажен домен направен да личи на вистинскиот tidio.com.

Sansec ја пронашол истата низа на активности кај сите три додатоци. Доменот tidio[.]cc бил регистриран на 28 април, неколку недели пред нападот, што укажува на планирана операција, а не на брз импровизиран напад.

Скриениот плагин е вистинската цел. Тој отвора таканаречен web shell — далечински канал за извршување команди: секој што го знае точниот URL може да извршува код на серверот без логирање. Оттаму напаѓачот може да чита или менува било која датотека, да ја копира базата на податоци, да поставува дополнителни backdoor механизми, да вметнува код за кражба на платежни картички, да пренасочува посетители или да краде податоци.

Дополнителната администраторска сметка служи како едноставен „влез назад“ доколку додатокот се избрише, но сметката остане. И бидејќи напаѓачот може слободно да извршува код, отстранувањето само на плагинoт и сметката можеби не е доволно; и Sansec и PushEngage предупредуваат дека треба да се претпостави дека може да постојат и други скриени backdoor-и.

Како напаѓачот влегол

Овој дел е предмет на несогласување меѓу двете страни. PushEngage тврди дека напаѓачот прво го компромитирал серверот што ја хостира нивната маркетинг веб-страница, преку позната ранливост во UpdraftPlus, WordPress backup плагин. Тој сервер е одделен од системите што го управуваат производот и ги чуваат податоците на клиентите.

Клучниот момент не бил самиот сервер, туку клуч што се наоѓал на него: CDN API клуч. Со тој клуч, напаѓачот не морал да ги пробие главните системи на PushEngage — можел едноставно да ги менува датотеките што CDN мрежата ги испорачувала кон клиентските сајтови.

Sansec не е сигурен дека изворот на пробивот е дефинитивно утврден. Според нив, засега не е познат точниот влез, а најверојатни опции се: серверите на Awesome Motive, CDN сметката, или самата CDN инфраструктура (BunnyNet) — иако последната е оценета како малку веројатна.

Анализата на Sansec не ја потврдува ниту не ја отфрла теоријата за UpdraftPlus — таа доаѓа исклучиво од PushEngage. UpdraftPlus има посебна ранливост за заобиколување автентикација (CVE-2026-10795), оценета како високо ризична (8.1) од Wordfence; таа е закрпена, и веќе се забележани напади против неа, па препораката е секој што го користи да го ажурира плагинoт.

Дали таа ранливост навистина е користена во овој инцидент останува непотврдено. Во моментов, точката на влез треба да се смета за нерешена.

Што да проверите и што да направите

Според временската линија на Sansec, датотеките на OptinMonster и TrustPulse биле чисти до 13 јуни, додека скриптата на PushEngage останала на некои CDN сервери сè до 14 јуни. PushEngage наведува дека сè уште го утврдува точниот временски прозорец и дека во меѓувреме ги заменил лошите датотеки, го исчистил CDN кешот, го променил CDN клучот и сите поврзани креденцијали, како и дека ја преместил маркетинг страницата на нова инфраструктура.

Но, ништо од ова не чисти сајт кој веќе бил преземен.

Индикатори на компромитација (IoC) од Sansec

Бидејќи backdoor-от се крие од dashboard-от, не можеш да исклучиш компромитација само со проверка на WordPress. Ако твојата страница ги користела било кои од трите додатоци во ризичниот период, единствениот сигурен одговор е серверска (server-side) проверка.

Не обидувај се да заклучиш дали си бил логнат или не; повеќето сопственици не можат да го докажат тоа. Овие чекори подолу се основниот минимум.

Чекор 1: Направи серверска скенирање

Ако си имал активни PushEngage, OptinMonster или TrustPulse во тој период, мора да направиш директно скенирање на серверот. Преглед од прелистувач или преку dashboard може да пропушти злонамерен код што се активира само за најавени администратори. (Sansec забележал ист payload кај сите три плагини, но не потврдил дека OptinMonster и TrustPulse биле дистрибуирани на ист начин или во истиот период како PushEngage.)

Чекор 2: Провери го filesystem-от, не dashboard-от

Во wp-content/plugins, побарај папки со имиња како:

  • content-delivery-helper (“Content Delivery Helper”)
  • database-optimizer (“Database Optimizer”)

Верувај на тоа што е на диск, не на она што го прикажува WordPress. Избриши било кои админ корисници што не си ги креирал, особено developer_api1 или било што слично на dev_xxxxxx.

Чекор 3: Провери ги логовите

Прегледај ги access логовите на веб серверот од 12 до 14 јуни (UTC) за излезен сообраќај кон:

  • tidio.cc (вклучувајќи /cdn-cgi/ патеки)
  • IP адресата на напаѓачот: 84.201.6.54

Чекор 4: Ако најдеш нешто – третирај го како целосна компромитација

Ако има било какви знаци, сметај дека системот е пробиен и промени сè:

  • админ лозинки
  • API клучеви
  • database креденцијали
  • secret keys (salts) во wp-config.php

Ако има извршување на код на серверот, можно е да постои дополнителна перзистенција што не е веднаш видлива.

Извори:

  • The Hacker News – Popular WordPress Plugin Scripts Tampered to Plant Hidden Backdoors on Sites The Hacker News