{"id":20782,"date":"2026-06-19T10:36:24","date_gmt":"2026-06-19T07:36:24","guid":{"rendered":"https:\/\/sysadmin.courses\/%d0%bf%d0%bb%d0%b0%d1%82%d0%b8%d0%bb%d0%b8-%d0%b7%d0%b0-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c-%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d0%bb%d0%b8-%d0%b1%d1%8d\/"},"modified":"2026-06-19T11:03:10","modified_gmt":"2026-06-19T08:03:10","slug":"mokejai-uz-sauguma-gavai-backdoora-kaip-shapedplugin-surinkimo-konvejerio-kompromitavimas-smoge-mokiems-wordpress-klientams","status":"publish","type":"post","link":"https:\/\/sysadmin.courses\/lt\/mokejai-uz-sauguma-gavai-backdoora-kaip-shapedplugin-surinkimo-konvejerio-kompromitavimas-smoge-mokiems-wordpress-klientams\/","title":{"rendered":"Mok\u0117jai u\u017e saugum\u0105 \u2014 gavai backdoor&#8217;\u0105. Kaip ShapedPlugin surinkimo konvejerio kompromitavimas smog\u0117 mokiems WordPress klientams"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Sumok\u0117jai u\u017e Pro plagin\u0105, \u012fjungei automatinius atnaujinimus ir miegi ramiai \u2014 nes esi komercinio produkto klientas, o ne vartotojas, naudojantis nemokamu \u0161lam\u0161tu i\u0161 WordPress.org. Logi\u0161ka? Lygiai taip galvojo t\u016bkstan\u010diai WordPress administratori\u0173, naudojan\u010di\u0173 ShapedPlugin plagin\u0173. Ir b\u016btent jie gavo backdoor&#8217;\u0105 per oficial\u0173 atnaujinim\u0173 kanal\u0105 \u2014 t\u0105 pat\u012f, kuriuo pasitik\u0117jo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. gegu\u017e\u0117s 21 d. u\u017epuolikai \u012fterp\u0117 kenk\u0117ji\u0161k\u0105 \u012fkrovikl\u012f \u012f trij\u0173 komercini\u0173 ShapedPlugin plagin\u0173 paketus: Product Slider Pro WooCommerce (iki versijos 3.5.4), Real Testimonials Pro (versija 3.2.5) ir Smart Post Show Pro (iki versijos 4.0.2). Nemokamos versijos WordPress.org nenukent\u0117jo \u2014 ataka buvo tikslin\u0117 ir s\u0105moningai nukreipta prie\u0161 mokan\u010dius klientus. Incidentas registruojamas kaip CVE-2026-10735 su CVSS \u012fvertinimu 9.8 \u2014 tai Critical, suteikiantis backdoor prieig\u0105 prie u\u017ekr\u0117st\u0173 svetaini\u0173 be jokio autentifikavimo. CVE-2026-49777 priimtas kaip dublikatas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wordfence Threat Intelligence komanda gavo signal\u0105 apie incident\u0105 bir\u017eelio 11 d., patvirtino kompromitavim\u0105 bir\u017eelio 12 d. atsisiuntusi failus tiesiogiai i\u0161 ShapedPlugin svetain\u0117s, o bir\u017eelio 16 d. tiek\u0117jas pripa\u017eino pa\u017eeidim\u0105. Jei j\u016bs\u0173 svetain\u0117 naudojo bet kur\u012f i\u0161 trij\u0173 Pro plagin\u0173 2026 m. baland\u017eio\u2013bir\u017eelio laikotarpiu \u2014 laikykite j\u0105 kompromituota, kol ne\u012frodysite prie\u0161ingai.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAIP VEIKIA ATAKA<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Atakos mechanizmas yra dviej\u0173 etap\u0173 ir s\u0105moningai daugiasluoksnis \u2014 kiekvienas etapas slepia kit\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pirmasis etapas \u2014 failas <code>src\/Includes\/LicenseLoader.php<\/code>, \u012fterptas tiesiai \u012f plagino diegimo paket\u0105. Jis aktyvuojamas ant <code>admin_init<\/code> hook&#8217;o, tai yra paleid\u017eiamas automati\u0161kai tuo momentu, kai administratorius atidaro WordPress valdymo skydel\u012f. \u012ekroviklis u\u017emezga ry\u0161\u012f su C2 serveriu adresu <code>194[.]76[.]217[.]28:2871<\/code>, atsisiun\u010dia antr\u0105j\u012f etap\u0105 naudodamas standartin\u012f WordPress <code>Plugin_Upgrader<\/code> \u2014 kad diegimas atrodyt\u0173 kaip \u012fprastas plagino atnaujinimas \u2014 po to i\u0161trina save, fizi\u0161kai pa\u0161alindamas fail\u0105 ir palikdamas minimalius forensinius p\u0117dsakus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antrasis etapas \u012fdiegiamas \u012f direktorij\u0105 <code>wp-content\/plugins\/woocommerce-subscription\/<\/code> arba <code>wp-content\/plugins\/woocommerce-notification\/<\/code> \u2014 pavadinimai s\u0105moningai parinkti pana\u0161iai \u012f teis\u0117tus WooCommerce komponentus. Plaginas slepia save i\u0161 \u012fdiegt\u0173 plagin\u0173 s\u0105ra\u0161o per <code>all_plugins<\/code> filtr\u0105, tod\u0117l administravimo skydelyje jo nematyti. Viduje \u2014 paruo\u0161tas u\u017epuoliko arsenalo rinkinys: Tiny File Manager 2.6 (pilnavertis \u017einiatinklio fail\u0173 tvarkykl\u0117), Adminer 5.2.1 (duomen\u0173 baz\u0117s valdymas tiesiai per nar\u0161ykl\u0119), backdoor per REST API adresu <code>\/wp-json\/wc\/v3\/settings\/apply<\/code>, URL-parametrinis webshell&#8217;as ir autentifikavimo ap\u0117jimas naudojant hardcoded MD5 mai\u0161\u0105 <code>e268c35a06d85f672e70c9beecb4e5d1<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Grandin\u0117 trumpa: administratorius atidaro Dashboard \u2014 \u012fkroviklis suveikia, \u012fdiegia backdoor&#8217;\u0105, prane\u0161a aukos domen\u0105 \u012f C2, i\u0161nyksta. Backdoor lieka nematomas ir laukia komand\u0173.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAS BUVO VOGTA<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I\u0161filtruot\u0173 duomen\u0173 s\u0105ra\u0161as \u2014 tai b\u016btent tai, kas vertingiausia svetain\u0117je su realiais pirkimais. Backdoor buvo specialiai sukurtas i\u0161traukti vartotoj\u0173 prisijungimus ir slapta\u017eod\u017eius, aktyvi\u0173 sesij\u0173 cookie, vartotoj\u0173 vaidmenis su akcentu \u012f administratorius, WooCommerce u\u017esakym\u0173 duomenis per paskutinius tris m\u0117nesius \u012fskaitant mok\u0117jimo metod\u0173 informacij\u0105, SMTP kredencialus, WordPress saugumo raktus i\u0161 <code>wp-config.php<\/code> ir piln\u0105 svetain\u0117s administratori\u0173 s\u0105ra\u0161\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ypating\u0105 d\u0117mes\u012f nusipelno dviej\u0173 veiksni\u0173 autentifikavimo paslap\u010di\u0173 vagyst\u0117. Backdoor buvo specialiai sukurtas TOTP implementacijoms keturiuose populiariuose plaginuose: WP 2FA, Wordfence Login Security, Really Simple SSL ir Two-Factor. Jis i\u0161traukia TOTP seed \u2014 t\u0105 pat\u012f sekret\u0105, i\u0161 kurio generuojami vienkartiniai kodai. Gav\u0119s seed&#8217;\u0105, u\u017epuolikas pats generuoja galiojan\u010dius 2FA kodus ir visi\u0161kai apeina antr\u0105j\u012f faktori\u0173 \u2014 nepriklausomai nuo to, kaip atid\u017eiai vartotojas j\u012f nustat\u0117.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lygiagre\u010diai su duomen\u0173 rinkimu backdoor suteik\u0117 operatoriams galimyb\u0119 ra\u0161yti bet kokius failus \u012f server\u012f per Tiny File Manager arba webshell&#8217;\u0105. Prakti\u0161kai tai rei\u0161kia papildom\u0173 PHP shell&#8217;\u0173 ir bet kokio kito kodo patalpinim\u0105 bet kurioje \u017einiatinklio serveriui prieinamoje fail\u0173 sistemos vietoje. Duomenys pavogiami vien\u0105 kart\u0105; fail\u0173 tvarkykl\u0117 \u2014 tai nuolatinis \u012f\u0117jimo ta\u0161kas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAIP BUVO KOMPROMITUOTAS SURINKIMO KONVEJERIS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wordfence nerado \u012frodym\u0173, kad plagino failai buvo pakeisti po publikavimo. Laiko \u017eymi\u0173 analiz\u0117 parod\u0117: keturi failai buvo pakeisti per dviej\u0173 valand\u0173 lang\u0105 2026 m. gegu\u017e\u0117s 21 d. \u2014 elgesys, b\u016bdingas automatizuotam injekcijos procesui, o ne rankiniam redagavimui. Pasak Wordfence, plagino metaduomenyse buvo rasti nuorodos \u012f priva\u010dius Git saugyklas, o pakeitim\u0173 \u0161ablonas sutapo su ShapedPlugin leidim\u0173 darbo eiga.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Visa tai rodo kompromitavim\u0105 ne pa\u010di\u0173 plagino fail\u0173, o tiek\u0117jo surinkimo ir platinimo konvejerio \u2014 infrastrukt\u016bros, kuri renka leidim\u0173 ZIP archyvus ir pristato juos mokiems klientams per oficiali\u0105 svetain\u0119. Tod\u0117l nemokamos versijos WordPress.org liko \u0161varios: jos eina kitu publikavimo keliu. U\u017epuolikai tur\u0117jo prieig\u0105 prie abiej\u0173 kanal\u0173 ir s\u0105moningai liet\u0117 tik mokam\u0105j\u012f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tai klasikin\u0117 supply chain ataka per build pipeline. Ne konkre\u010dios svetain\u0117s kompromitavimas, ne pa\u017eeid\u017eiamumas plagino logikoje \u2014 o ta\u0161ko, i\u0161 kurio kodas vienu metu pasiekia t\u016bkstan\u010dius klient\u0173, kompromitavimas. Neseniai pana\u0161us incidentas buvo OptinMonster ataka per CDN rakt\u0105 2026 m. bir\u017eel\u012f. Skirtinga mechanika, tas pats rezultatas: kenk\u0117ji\u0161kas kodas ateina i\u0161 patikimo adreso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CHRONOLOGIJA<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. gegu\u017e\u0117s 21 d. \u2014 kenk\u0117ji\u0161kas kodas \u012fterptas \u012f Pro paketus per kompromituot\u0105 ShapedPlugin surinkimo konvejer\u012f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 10 d. \u2014 pirmieji klient\u0173 skundai d\u0117l \u012ftartin\u0173 atnaujinim\u0173.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 11 d. \u2014 Wordfence Threat Intelligence gauna prane\u0161im\u0105 apie galim\u0105 kompromitavim\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 12 d. \u2014 Wordfence tyr\u0117jai patvirtina pa\u017eeidim\u0105 atsisiunt\u0119 failus tiesiogiai i\u0161 ShapedPlugin svetain\u0117s. U\u017ekr\u0117stas Real Testimonials Pro versija 3.2.5 vis dar platinamas i\u0161 oficialaus atnaujinim\u0173 endpoint&#8217;o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 16 d. \u2014 ShapedPlugin pripa\u017e\u012fsta incident\u0105 ir prane\u0161a apie tyrimo prad\u017ei\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 17\u201318 d. \u2014 i\u0161leid\u017eiamos pataisytos versijos: Product Slider Pro 3.5.4, Smart Post Show Pro 4.0.2, Real Testimonials Pro 3.2.6.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KOD\u0116L TAI SVARBU<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mokami plaginai parduoda ne tik funkcionalum\u0105 \u2014 jie parduoda pasitik\u0117jim\u0105. Profesionali komanda, komercin\u0117 atsakomyb\u0117, oficialus atnaujinim\u0173 kanalas. ShapedPlugin parod\u0117, kad pats atnaujinim\u0173 kanalas gali b\u016bti kompromituotas nepaliesiant produkto. U\u017epuolikai nei\u0161naudojo pa\u017eeid\u017eiamumo plagino kode ar logikoje \u2014 jie pateko \u012f konvejer\u012f, kuris renka ir platina leidimus, o toliau pats WordPress pasir\u016bpino kenk\u0117ji\u0161ko kodo pristatymu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ypa\u010d reik\u0161mingas atakos selektyvumas. U\u017epuolikai tur\u0117jo prieig\u0105 prie abiej\u0173 kanal\u0173 \u2014 mokamo ir nemokamo \u2014 ir s\u0105moningai liet\u0117 tik pirm\u0105j\u012f. Nemokamo WordPress.org vartotojai \u0161\u012f kart\u0105 buvo saug\u016bs. Tie, kurie mok\u0117jo \u2014 ne. Operaciniu po\u017ei\u016briu tai suprantama: mokami klientai su aktyviais WooCommerce parduotuv\u0117mis rei\u0161kia korteli\u0173 duomenis, SMTP prieig\u0105 prie realaus domeno, paskyras su transakcij\u0173 istorija. \u017dymiai vertingiau nei bandomosios svetain\u0117s paskyra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CVSS 9.8 \u010dia n\u0117ra formalumas. Ataka nereikalauja jokio i\u0161ankstinio autentifikavimo \u2014 backdoor jau viduje, laukia tik pirmojo administratoriaus vizito \u012f Dashboard. Po to u\u017epuolikas turi Adminer duomen\u0173 bazei, Tiny File Manager fail\u0173 sistemai, webshell&#8217;\u0105 komand\u0173 vykdymui ir visus kredencialus \u012fskaitant TOTP seed&#8217;us. Visi\u0161kas svetain\u0117s valdymas be n\u0117 vieno nulau\u017eto slapta\u017eod\u017eio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>K\u0104 DARYTI<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pirmiausia \u2014 ir tai skubiai: atnaujinkite paveiktus plaginus. Product Slider Pro \u2014 bent iki 3.5.4, Smart Post Show Pro \u2014 iki 4.0.2, Real Testimonials Pro \u2014 iki 3.2.6. Ta\u010diau atnaujinimas tik u\u017edaro pristatymo kanal\u0105 \u2014 jis nepa\u0161alina backdoor&#8217;o, jei jis jau buvo \u012fdiegtas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Patikrinkite fail\u0173 sistem\u0105 d\u0117l netikr\u0173 plagin\u0173. Per Dashboard j\u0173 nematysite \u2014 backdoor slepia save per <code>all_plugins<\/code> filtr\u0105. \u017di\u016br\u0117kite tiesiogiai: ie\u0161kokite direktorij\u0173 pavadint\u0173 <code>woocommerce-subscription<\/code> (vienaskaita, ne <code>woocommerce-subscriptions<\/code>) ir <code>woocommerce-notification<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -la \/var\/www\/html\/wp-content\/plugins\/ | grep -E \"woocommerce-subscription$|woocommerce-notification\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jei direktorija rasta \u2014 svetain\u0117 buvo kompromituota. I\u0161trinkite j\u0105, bet atminkite: iki \u0161io momento per Tiny File Manager arba webshell&#8217;\u0105 gal\u0117jo b\u016bti patalpinti papildomi backdoor&#8217;ai bet kurioje fail\u0173 sistemos vietoje. Vienos direktorijos patikrinimas nesuteikia viso vaizdo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Atstatykite visus kredencialus: WordPress vartotoj\u0173 slapta\u017eod\u017eius, API raktus, SMTP slapta\u017eod\u017eius. Jei svetain\u0117 naudoja bet kur\u012f i\u0161 keturi\u0173 paveikt\u0173 2FA plagin\u0173 \u2014 WP 2FA, Wordfence Login Security, Really Simple SSL arba Two-Factor \u2014 panaikinkite TOTP seed&#8217;us ir i\u0161duokite juos i\u0161 naujo visiems vartotojams. Laikykite senus QR kodus kompromituotais.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Atnaujinkite WordPress slaptuosius raktus <code>wp-config.php<\/code> \u2014 tai i\u0161 karto invaliduos visas aktyvias sesijas. Naujus a\u0161tuoni\u0173 eilu\u010di\u0173 reik\u0161mes nuo <code>AUTH_KEY<\/code> iki <code>NONCE_SALT<\/code> imkite i\u0161 oficialaus generatoriaus: <code>https:\/\/api.wordpress.org\/secret-key\/1.1\/salt\/<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Patikrinkite administratori\u0173 s\u0105ra\u0161\u0105 \u2014 \u0161ioje atakoje paskyros nebuvo kuriamos automati\u0161kai (kitaip nei OptinMonster atveju, kur atsiradavo <code>developer_api1<\/code>), ta\u010diau \u012fra\u0161ai gal\u0117jo b\u016bti prid\u0117ti rankiniu b\u016bdu per gaut\u0105 prieig\u0105. Komanda i\u0161veda tik vartotojus su administratoriaus vaidmeniu, rodydama ID, prisijungim\u0105, el. pa\u0161t\u0105 ir registracijos dat\u0105. Paskutinis laukas \u2014 pagrindinis: nauja paskyra su registracijos data 2026 m. gegu\u017e\u0117s\u2013bir\u017eelio laikotarpiu yra raudonas signalas. V\u0117liav\u0117l\u0117 <code>--path<\/code> nurodo WP-CLI kur ie\u0161koti WordPress \u012fdiegimo \u2014 be jos komanda kris su klaida &#8222;This does not seem to be a WordPress installation&#8221;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wp user list --path=\/var\/www\/html --role=administrator --fields=ID,user_login,user_email,user_registered<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jei komanda neveikia d\u0117l <code>open_basedir<\/code> apribojim\u0173 \u2014 paleiskite kaip \u017einiatinklio vartotojas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -u www-data wp user list --path=\/var\/www\/html --role=administrator --fields=ID,user_login,user_email,user_registered<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">U\u017eblokuokite C2 adres\u0105 firewall lygmeniu. Taisykl\u0117 pridedama \u012f output grandin\u0119 ir atmeta visus i\u0161einan\u010dius paketus \u012f IP <code>194.76.217.28<\/code> \u2014 atakos komandinio serverio adres\u0105. Net jei serveryje liko neatrastas likutinis kodas, ry\u0161ys su C2 nebus u\u017emegztas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nft add rule inet filter output ip daddr 194.76.217.28 drop<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PREVENCIN\u0116 APSAUGA<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Konkretaus C2 adreso blokavimas u\u017edaro \u0161i\u0105 atak\u0105, bet ne kit\u0105. Tikroji apsauga \u2014 apriboti i\u0161einan\u010dius ry\u0161ius i\u0161 PHP proceso apskritai. \u012ekroviklis kaip LicenseLoader.php veikia kaip \u017einiatinklio vartotojas (www-data Debian\/Ubuntu sistemose) ir jungiasi prie C2 nestandartiniu portu \u2014 \u0161iuo atveju 2871. nftables taisykl\u0117 pagal uid sunaikina vis\u0105 \u0161i\u0105 atak\u0173 klas\u0119: PHP gal\u0117s daryti HTTP\/HTTPS u\u017eklausas \u012f i\u0161or\u0119, bet savavali\u0161ki TCP ry\u0161iai su atsitiktiniais portais bus atmesti:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nft add rule inet filter output skuid www-data tcp dport != { 80, 443 } drop<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jei WordPress teis\u0117tai reikia kit\u0173 i\u0161einan\u010di\u0173 port\u0173 \u2014 prid\u0117kite juos \u012f i\u0161im\u010di\u0173 s\u0105ra\u0161\u0105. Patikrinti \u017einiatinklio vartotojo uid: <code>id www-data<\/code>. Jei PHP-FPM pulas veikia kitu vartotoju \u2014 pakeiskite jo vard\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PHP-FPM lygmeniu galima i\u0161jungti funkcijas, kurias \u012fkroviklis naudoja tinklo ry\u0161iams atidaryti. WordPress pulo konfig\u016bracijos faile, pavyzd\u017eiui <code>\/etc\/php\/8.3\/fpm\/pool.d\/wordpress.conf<\/code>, prid\u0117kite:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php_admin_value&#91;disable_functions] = fsockopen,pfsockopen,stream_socket_client<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tai pa\u0161alina galimyb\u0119 atidaryti savavali\u0161kus TCP socket&#8217;us i\u0161 PHP kodo. Dauguma teis\u0117t\u0173 WordPress plagin\u0173 naudoja cURL arba wp_remote_get() HTTP u\u017eklausoms \u2014 jie nenukent\u0117s. Po pakeitimo paleiskite PHP-FPM i\u0161 naujo: <code>systemctl restart php8.3-fpm<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fail\u0173 sistemos steb\u0117jimas \u2014 vienintelis b\u016bdas pagauti 2-\u0105j\u012f etap\u0105 \u012fra\u0161ymo momentu, kol \u012fkroviklis dar nesitrin\u0117. inotifywait i\u0161 inotify-tools paketo stebi plagin\u0173 direktorij\u0105 ir i\u0161 karto u\u017era\u0161o \u012f \u017eurnal\u0105, kai atsiranda naujas failas ar direktorija:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>inotifywait -m -r -e create,moved_to --format '%T %w%f' \\\n  --timefmt '%Y-%m-%d %H:%M:%S' \\\n  \/var\/www\/html\/wp-content\/plugins\/ &gt;&gt; \/var\/log\/wp-plugins-monitor.log 2&gt;&amp;1 &amp;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nuolatiniam steb\u0117jimui sukurkite systemd servis\u0105 \u2014 kitaip procesas dings po perkrovimo. AIDE suteikia gilesn\u0119 patikr\u0105: ji \u012fra\u0161o fail\u0173 sistemos baseline ir kiekvieno paleidimo metu lygina su juo. Nauja direktorija <code>wp-content\/plugins\/<\/code> bus aptikta per kit\u0105 patikrinim\u0105, net jei \u012fkroviklis jau seniai i\u0161trintas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Inicializuoti baseline \u0161variai sistemai\naide --init\nmv \/var\/lib\/aide\/aide.db.new \/var\/lib\/aide\/aide.db\n\n# Patikrinti dabartin\u0119 b\u016bsen\u0105 su baseline\naide --check<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Paleiskite <code>aide --check<\/code> kasdien per systemd timer \u2014 bet koks nukrypimas nuo baseline pasirodys ataskaitoje. WordPress serveriui su realiais mok\u0117jimais tai n\u0117ra pasirinktin\u0117 priemon\u0117.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>I\u0160VADOS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ShapedPlugin \u2014 ne i\u0161skirtinis atvejis. Tai antras didelis supply chain incidentas WordPress ekosistemoje per vien\u0105 m\u0117nes\u012f, po OptinMonster. Vektorius per build pipeline arba platinimo infrastrukt\u016br\u0105 tampa standartiniu \u012frankiu \u2014 jis leid\u017eia vienu metu pasiekti visus tiek\u0117jo klientus, naudojant j\u0173 pa\u010di\u0173 pasitik\u0117jim\u0105 tiek\u0117ju.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Praktin\u0117 i\u0161vada ai\u0161ki: WordPress Dashboard n\u0117ra autoritetingas \u0161altinis apie tai, kas i\u0161 tikr\u0173j\u0173 \u012fdiegta serveryje. Plaginas gali neb\u016bti s\u0105ra\u0161e ir vis tiek veikti. AIDE fail\u0173 sistemoje, nauj\u0173 fail\u0173 steb\u0117jimas <code>wp-content\/plugins\/<\/code>, auditas per WP-CLI \u2014 tai ne paranojos priemon\u0117s. Tai minimumas kiekvienai svetainei su realiais mok\u0117jimais.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kompromitavimo langas \u2014 apie m\u0117nes\u012f: gegu\u017e\u0117s 21 d. \u2013 bir\u017eelio 16 d. Pataisytos versijos prieinamos. Jei naudojote bet kur\u012f i\u0161 trij\u0173 Pro plagin\u0173 tuo laikotarpiu \u2014 traktuokite savo svetain\u0119 kaip kompromituot\u0105 ir dirbkite remiantis \u0161ia prielaida, o ne viltimi, kad j\u016bs\u0173 nepaliet\u0117.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sumok\u0117jai u\u017e Pro plagin\u0105, \u012fjungei automatinius atnaujinimus ir miegi ramiai \u2014 nes esi komercinio produkto klientas, o ne vartotojas, naudojantis nemokamu \u0161lam\u0161tu i\u0161 WordPress.org. Logi\u0161ka? Lygiai taip galvojo t\u016bkstan\u010diai WordPress administratori\u0173, naudojan\u010di\u0173 ShapedPlugin plagin\u0173. Ir b\u016btent jie gavo backdoor&#8217;\u0105 per oficial\u0173 atnaujinim\u0173 kanal\u0105 \u2014 t\u0105 pat\u012f, kuriuo pasitik\u0117jo. 2026 m. gegu\u017e\u0117s 21 d. u\u017epuolikai \u012fterp\u0117 kenk\u0117ji\u0161k\u0105 \u012fkrovikl\u012f \u012f trij\u0173 komercini\u0173 ShapedPlugin plagin\u0173 paketus: Product Slider Pro WooCommerce (iki versijos 3.5.4), Real Testimonials Pro (versija 3.2.5) ir Smart Post Show Pro (iki versijos 4.0.2). Nemokamos versijos WordPress.org nenukent\u0117jo \u2014 ataka buvo tikslin\u0117 ir s\u0105moningai nukreipta prie\u0161 mokan\u010dius klientus. Incidentas registruojamas kaip CVE-2026-10735 su CVSS \u012fvertinimu 9.8 \u2014 tai Critical, suteikiantis backdoor prieig\u0105 prie u\u017ekr\u0117st\u0173 svetaini\u0173 be jokio autentifikavimo. CVE-2026-49777 priimtas kaip dublikatas. Wordfence Threat Intelligence komanda gavo signal\u0105 apie incident\u0105 bir\u017eelio 11 d., patvirtino kompromitavim\u0105 bir\u017eelio 12 d. atsisiuntusi failus tiesiogiai i\u0161 ShapedPlugin svetain\u0117s, o bir\u017eelio 16 d. tiek\u0117jas pripa\u017eino pa\u017eeidim\u0105. Jei j\u016bs\u0173 svetain\u0117 naudojo bet kur\u012f i\u0161 trij\u0173 Pro plagin\u0173 2026 m. baland\u017eio\u2013bir\u017eelio laikotarpiu \u2014 laikykite j\u0105 kompromituota, kol ne\u012frodysite prie\u0161ingai. KAIP VEIKIA ATAKA Atakos mechanizmas yra dviej\u0173 etap\u0173 ir s\u0105moningai daugiasluoksnis \u2014 kiekvienas etapas slepia kit\u0105. Pirmasis etapas \u2014 failas src\/Includes\/LicenseLoader.php, \u012fterptas tiesiai \u012f plagino diegimo paket\u0105. Jis aktyvuojamas ant admin_init hook&#8217;o, tai yra paleid\u017eiamas automati\u0161kai tuo momentu, kai administratorius atidaro WordPress valdymo skydel\u012f. \u012ekroviklis u\u017emezga ry\u0161\u012f su C2 serveriu adresu 194[.]76[.]217[.]28:2871, atsisiun\u010dia antr\u0105j\u012f etap\u0105 naudodamas standartin\u012f WordPress Plugin_Upgrader \u2014 kad diegimas atrodyt\u0173 kaip \u012fprastas plagino atnaujinimas \u2014 po to i\u0161trina save, fizi\u0161kai pa\u0161alindamas fail\u0105 ir palikdamas minimalius forensinius p\u0117dsakus. Antrasis etapas \u012fdiegiamas \u012f direktorij\u0105 wp-content\/plugins\/woocommerce-subscription\/ arba wp-content\/plugins\/woocommerce-notification\/ \u2014 pavadinimai s\u0105moningai parinkti pana\u0161iai \u012f teis\u0117tus WooCommerce komponentus. Plaginas slepia save i\u0161 \u012fdiegt\u0173 plagin\u0173 s\u0105ra\u0161o per all_plugins filtr\u0105, tod\u0117l administravimo skydelyje jo nematyti. Viduje \u2014 paruo\u0161tas u\u017epuoliko arsenalo rinkinys: Tiny File Manager 2.6 (pilnavertis \u017einiatinklio fail\u0173 tvarkykl\u0117), Adminer 5.2.1 (duomen\u0173 baz\u0117s valdymas tiesiai per nar\u0161ykl\u0119), backdoor per REST API adresu \/wp-json\/wc\/v3\/settings\/apply, URL-parametrinis webshell&#8217;as ir autentifikavimo ap\u0117jimas naudojant hardcoded MD5 mai\u0161\u0105 e268c35a06d85f672e70c9beecb4e5d1. Grandin\u0117 trumpa: administratorius atidaro Dashboard \u2014 \u012fkroviklis suveikia, \u012fdiegia backdoor&#8217;\u0105, prane\u0161a aukos domen\u0105 \u012f C2, i\u0161nyksta. Backdoor lieka nematomas ir laukia komand\u0173. KAS BUVO VOGTA I\u0161filtruot\u0173 duomen\u0173 s\u0105ra\u0161as \u2014 tai b\u016btent tai, kas vertingiausia svetain\u0117je su realiais pirkimais. Backdoor buvo specialiai sukurtas i\u0161traukti vartotoj\u0173 prisijungimus ir slapta\u017eod\u017eius, aktyvi\u0173 sesij\u0173 cookie, vartotoj\u0173 vaidmenis su akcentu \u012f administratorius, WooCommerce u\u017esakym\u0173 duomenis per paskutinius tris m\u0117nesius \u012fskaitant mok\u0117jimo metod\u0173 informacij\u0105, SMTP kredencialus, WordPress saugumo raktus i\u0161 wp-config.php ir piln\u0105 svetain\u0117s administratori\u0173 s\u0105ra\u0161\u0105. Ypating\u0105 d\u0117mes\u012f nusipelno dviej\u0173 veiksni\u0173 autentifikavimo paslap\u010di\u0173 vagyst\u0117. Backdoor buvo specialiai sukurtas TOTP implementacijoms keturiuose populiariuose plaginuose: WP 2FA, Wordfence Login Security, Really Simple SSL ir Two-Factor. Jis i\u0161traukia TOTP seed \u2014 t\u0105 pat\u012f sekret\u0105, i\u0161 kurio generuojami vienkartiniai kodai. Gav\u0119s seed&#8217;\u0105, u\u017epuolikas pats generuoja galiojan\u010dius 2FA kodus ir visi\u0161kai apeina antr\u0105j\u012f faktori\u0173 \u2014 nepriklausomai nuo to, kaip atid\u017eiai vartotojas j\u012f nustat\u0117. Lygiagre\u010diai su duomen\u0173 rinkimu backdoor suteik\u0117 operatoriams galimyb\u0119 ra\u0161yti bet kokius failus \u012f server\u012f per Tiny File Manager arba webshell&#8217;\u0105. Prakti\u0161kai tai rei\u0161kia papildom\u0173 PHP shell&#8217;\u0173 ir bet kokio kito kodo patalpinim\u0105 bet kurioje \u017einiatinklio serveriui prieinamoje fail\u0173 sistemos vietoje. Duomenys pavogiami vien\u0105 kart\u0105; fail\u0173 tvarkykl\u0117 \u2014 tai nuolatinis \u012f\u0117jimo ta\u0161kas. KAIP BUVO KOMPROMITUOTAS SURINKIMO KONVEJERIS Wordfence nerado \u012frodym\u0173, kad plagino failai buvo pakeisti po publikavimo. Laiko \u017eymi\u0173 analiz\u0117 parod\u0117: keturi failai buvo pakeisti per dviej\u0173 valand\u0173 lang\u0105 2026 m. gegu\u017e\u0117s 21 d. \u2014 elgesys, b\u016bdingas automatizuotam injekcijos procesui, o ne rankiniam redagavimui. Pasak Wordfence, plagino metaduomenyse buvo rasti nuorodos \u012f priva\u010dius Git saugyklas, o pakeitim\u0173 \u0161ablonas sutapo su ShapedPlugin leidim\u0173 darbo eiga. Visa tai rodo kompromitavim\u0105 ne pa\u010di\u0173 plagino fail\u0173, o tiek\u0117jo surinkimo ir platinimo konvejerio \u2014 infrastrukt\u016bros, kuri renka leidim\u0173 ZIP archyvus ir pristato juos mokiems klientams per oficiali\u0105 svetain\u0119. Tod\u0117l nemokamos versijos WordPress.org liko \u0161varios: jos eina kitu publikavimo keliu. U\u017epuolikai tur\u0117jo prieig\u0105 prie abiej\u0173 kanal\u0173 ir s\u0105moningai liet\u0117 tik mokam\u0105j\u012f. Tai klasikin\u0117 supply chain ataka per build pipeline. Ne konkre\u010dios svetain\u0117s kompromitavimas, ne pa\u017eeid\u017eiamumas plagino logikoje \u2014 o ta\u0161ko, i\u0161 kurio kodas vienu metu pasiekia t\u016bkstan\u010dius klient\u0173, kompromitavimas. Neseniai pana\u0161us incidentas buvo OptinMonster ataka per CDN rakt\u0105 2026 m. bir\u017eel\u012f. Skirtinga mechanika, tas pats rezultatas: kenk\u0117ji\u0161kas kodas ateina i\u0161 patikimo adreso. CHRONOLOGIJA 2026 m. gegu\u017e\u0117s 21 d. \u2014 kenk\u0117ji\u0161kas kodas \u012fterptas \u012f Pro paketus per kompromituot\u0105 ShapedPlugin surinkimo konvejer\u012f. 2026 m. bir\u017eelio 10 d. \u2014 pirmieji klient\u0173 skundai d\u0117l \u012ftartin\u0173 atnaujinim\u0173. 2026 m. bir\u017eelio 11 d. \u2014 Wordfence Threat Intelligence gauna prane\u0161im\u0105 apie galim\u0105 kompromitavim\u0105. 2026 m. bir\u017eelio 12 d. \u2014 Wordfence tyr\u0117jai patvirtina pa\u017eeidim\u0105 atsisiunt\u0119 failus tiesiogiai i\u0161 ShapedPlugin svetain\u0117s. U\u017ekr\u0117stas Real Testimonials Pro versija 3.2.5 vis dar platinamas i\u0161 oficialaus atnaujinim\u0173 endpoint&#8217;o. 2026 m. bir\u017eelio 16 d. \u2014 ShapedPlugin pripa\u017e\u012fsta incident\u0105 ir prane\u0161a apie tyrimo prad\u017ei\u0105. 2026 m. bir\u017eelio 17\u201318 d. \u2014 i\u0161leid\u017eiamos pataisytos versijos: Product Slider Pro 3.5.4, Smart Post Show Pro 4.0.2, Real Testimonials Pro 3.2.6. KOD\u0116L TAI SVARBU Mokami plaginai parduoda ne tik funkcionalum\u0105 \u2014 jie parduoda pasitik\u0117jim\u0105. Profesionali komanda, komercin\u0117 atsakomyb\u0117, oficialus atnaujinim\u0173 kanalas. ShapedPlugin parod\u0117, kad pats atnaujinim\u0173 kanalas gali b\u016bti kompromituotas nepaliesiant produkto. U\u017epuolikai nei\u0161naudojo pa\u017eeid\u017eiamumo plagino kode ar logikoje \u2014 jie pateko \u012f konvejer\u012f, kuris renka ir platina leidimus, o toliau pats WordPress pasir\u016bpino kenk\u0117ji\u0161ko kodo pristatymu. Ypa\u010d reik\u0161mingas atakos selektyvumas. U\u017epuolikai tur\u0117jo prieig\u0105 prie abiej\u0173 kanal\u0173 \u2014 mokamo ir nemokamo \u2014 ir s\u0105moningai liet\u0117 tik pirm\u0105j\u012f. Nemokamo WordPress.org vartotojai \u0161\u012f kart\u0105 buvo saug\u016bs. Tie, kurie mok\u0117jo \u2014 ne. Operaciniu po\u017ei\u016briu tai suprantama: mokami klientai su aktyviais WooCommerce parduotuv\u0117mis rei\u0161kia korteli\u0173 duomenis, SMTP prieig\u0105 prie realaus domeno, paskyras su transakcij\u0173 istorija. \u017dymiai vertingiau nei bandomosios svetain\u0117s paskyra. CVSS 9.8 \u010dia n\u0117ra formalumas. Ataka nereikalauja jokio i\u0161ankstinio autentifikavimo \u2014 backdoor jau viduje, laukia tik pirmojo administratoriaus vizito \u012f Dashboard. Po to u\u017epuolikas turi Adminer duomen\u0173 bazei, Tiny File Manager fail\u0173 sistemai, webshell&#8217;\u0105 komand\u0173 vykdymui ir visus kredencialus \u012fskaitant TOTP seed&#8217;us. Visi\u0161kas svetain\u0117s valdymas be n\u0117 vieno nulau\u017eto slapta\u017eod\u017eio. K\u0104 DARYTI Pirmiausia \u2014 ir tai skubiai: atnaujinkite paveiktus plaginus. Product Slider Pro \u2014 bent iki 3.5.4, Smart Post Show Pro \u2014 iki 4.0.2, Real Testimonials Pro \u2014 iki 3.2.6. Ta\u010diau atnaujinimas tik u\u017edaro pristatymo kanal\u0105 \u2014 jis nepa\u0161alina backdoor&#8217;o, jei jis jau buvo \u012fdiegtas. Patikrinkite fail\u0173 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":20779,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[202,199,155,151],"tags":[590,427,591,592,378,593,594,595,540,596,362,597,598,599],"class_list":["post-20782","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cve-lt","category-linux-lt","category-saugumas","category-wordpress","tag-2fa","tag-backdoor","tag-cve-2026-10735","tag-licenseloader","tag-nftables","tag-shapedplugin","tag-supply-chain","tag-totp","tag-woocommerce","tag-wordfence","tag-wordpress","tag-wp-cli","tag--wordpress","tag-599"],"_links":{"self":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts\/20782","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/comments?post=20782"}],"version-history":[{"count":4,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts\/20782\/revisions"}],"predecessor-version":[{"id":20791,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts\/20782\/revisions\/20791"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/media\/20779"}],"wp:attachment":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/media?parent=20782"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/categories?post=20782"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/tags?post=20782"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}