{"id":100,"date":"2026-01-19T15:50:24","date_gmt":"2026-01-19T14:50:24","guid":{"rendered":"https:\/\/helloblog.io\/hr\/kriticna-ranjivost-wordpress-modular-ds-cve-2026-23550\/"},"modified":"2026-01-20T06:33:03","modified_gmt":"2026-01-20T05:33:03","slug":"kriticna-ranjivost-wordpress-modular-ds-cve-2026-23550","status":"publish","type":"post","link":"https:\/\/helloblog.io\/hr\/kriticna-ranjivost-wordpress-modular-ds-cve-2026-23550\/","title":{"rendered":"Kriti\u010dna ranjivost u WordPress pluginu Modular DS aktivno se zloupotrebljava za admin pristup (CVE-2026-23550)"},"content":{"rendered":"\n<p>Patchstack je prijavio da se kriti\u010dna ranjivost u WordPress pluginu <strong>Modular DS<\/strong> aktivno iskori\u0161tava \u201cu divljini\u201d. Rije\u010d je o <strong>CVE-2026-23550<\/strong> s maksimalnim <strong>CVSS 10.0<\/strong>, a scenarij napada je posebno neugodan: <strong>napada\u010d bez ikakve autentikacije mo\u017ee eskalirati privilegije i do\u0107i do administratorskog pristupa<\/strong>.<\/p>\n\n\n\n<p>Problem poga\u0111a <strong>sve verzije do i uklju\u010duju\u0107i 2.5.1<\/strong>, a zakrpa je objavljena u <strong>2.5.2<\/strong>. Prema navodima, plugin ima <strong>vi\u0161e od 40.000 aktivnih instalacija<\/strong>, \u0161to ga \u010dini vrlo privla\u010dnom metom za automatizirane skenere i masovne kampanje.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0160to se to\u010dno doga\u0111a: neautenticirana eskalacija privilegija kroz routing<\/h2>\n\n\n\n<p>U osnovi, gre\u0161ka je u na\u010dinu na koji plugin rje\u0161ava <strong>routing<\/strong> (usmjeravanje) prema internim API rutama. Plugin izla\u017ee svoje rute pod prefiksom <code>\"\/api\/modular-connector\/\"<\/code> i poku\u0161ava osjetljive rute staviti iza autentikacijskog sloja (middleware).<\/p>\n\n\n\n<p>Me\u0111utim, Patchstack opisuje kombinaciju dizajnerskih odluka koje u praksi otvaraju vrata zaobilasku za\u0161tite: <strong>previ\u0161e permisivan matching ruta<\/strong>, mogu\u0107nost tzv. <strong>&#8220;direct request&#8221;<\/strong> moda, i logika koja povjerenje temelji na tome je li web ve\u0107 spojen na Modular (npr. postoje tokeni koji se mogu obnavljati), bez kriptografske veze izme\u0111u dolaznog zahtjeva i stvarnog Modular servisa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kako se zaobilazi za\u0161tita (u kratkim crtama)<\/h2>\n\n\n\n<p>Prema objavljenim detaljima, za\u0161titni sloj se mo\u017ee zaobi\u0107i kad je omogu\u0107en \u201cdirect request\u201d na\u010din, tako da se u zahtjev doda:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>parametar <code>origin<\/code> postavljen na <code>mo<\/code><\/li>\n\n\n<li>parametar <code>type<\/code> postavljen na bilo koju vrijednost (npr. <code>xxx<\/code>)<\/li>\n\n<\/ul>\n\n\n\n<p>Takav zahtjev plugin tretira kao Modular \u201cdirect request\u201d, \u0161to omogu\u0107uje prolaz kroz auth middleware u situaciji kad je web ve\u0107 ranije povezan s Modularom.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Za\u0161to je ovo opasno<\/h4>\n\n\n<p>Ovdje se ne radi o klasi\u010dnom &#8220;bugu u jednoj liniji&#8221;, nego o lancu odluka: URL-based route matching, permisivan direct mode, autentikacija vezana uz stanje konekcije weba i login flow koji mo\u017ee zavr\u0161iti auto-loginom u admin kontekst.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Koje rute su izlo\u017eene i \u0161to napada\u010d dobiva<\/h2>\n\n\n\n<p>Patchstack navodi da propust otvara vi\u0161e ruta koje mogu odraditi vrlo osjetljive operacije, uklju\u010duju\u0107i:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>\/login\/<\/code> (daljinski login tok)<\/li>\n\n\n<li><code>\/server-information\/<\/code> (potencijalno osjetljive informacije o sustavu)<\/li>\n\n\n<li><code>\/manager\/<\/code><\/li>\n\n\n<li><code>\/backup\/<\/code><\/li>\n\n<\/ul>\n\n\n\n<p>Najkriti\u010dniji dio je da napada\u010d mo\u017ee iskoristiti rutu <code>\"\/login\/{modular_request}\"<\/code> kako bi do\u0161ao do administratorskog pristupa, \u0161to onda otvara put punoj kompromitaciji: ubacivanje zlonamjernih promjena, postavljanje malwarea, preusmjeravanje korisnika na prijevare i sli\u010dno.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Indikatori napada (\u0161to tra\u017eiti u logovima)<\/h2>\n\n\n\n<p>Prema Patchstacku, napadi su prvi put detektirani <strong>13. sije\u010dnja 2026. oko 02:00 UTC<\/strong>, i uklju\u010divali su HTTP GET pozive prema endpointu <code>\"\/api\/modular-connector\/login\/\"<\/code>, nakon \u010dega su slijedili poku\u0161aji kreiranja admin korisnika.<\/p>\n\n\n\n<p>U izvje\u0161taju su spomenute i IP adrese s kojih su dolazili napadi (korisno za brzu korelaciju u WAF-u \/ access logovima):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>45.11.89[.]19<\/li>\n\n\n<li>185.196.0[.]11<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0160to napraviti odmah (prioriteti sanacije)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li><strong>A\u017euriraj Modular DS na verziju 2.5.2<\/strong> (ili noviju) \u0161to je prije mogu\u0107e.<\/li>\n\n\n<li>Provjeri ima\u0161 li <strong>neo\u010dekivane admin korisnike<\/strong> (posebno one kreirane u zadnje vrijeme) i auditiraj promjene privilegija.<\/li>\n\n\n<li>Pregledaj access logove\/WAF doga\u0111aje za zahtjeve prema <code>\"\/api\/modular-connector\/login\/\"<\/code> i sumnjive kombinacije parametara <code>origin<\/code>\/<code>type<\/code>.<\/li>\n\n\n<li>Ako sumnja\u0161 na kompromitaciju, napravi korake koje preporu\u010duje Modular DS: regeneriraj <strong>WordPress salts<\/strong> (poni\u0161tava postoje\u0107e sesije), regeneriraj <strong>OAuth credentials<\/strong>, te skeniraj web za zlonamjerne plugine\/datoteke\/kod.<\/li>\n\n<\/ol>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Prakti\u010dna napomena za timove<\/h4>\n\n\n<p>Ako odr\u017eava\u0161 vi\u0161e WP instanci, ovo je dobar kandidat za \u201cfleet\u201d update (bulk), uz paralelnu provjeru korisnika i brzi grep po logovima za <code>\/api\/modular-connector\/<\/code> zahtjeve.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Kontekst za developere: za\u0161to routing sloj mo\u017ee biti najslabija karika<\/h2>\n\n\n\n<p>Odr\u017eavatelji plugina naveli su da je ranjivost bila u <strong>custom routing layeru<\/strong> koji pro\u0161iruje Laravelovu funkcionalnost matchanja ruta. Kad se u WordPress pluginu implementira vlastiti mini-framework za rute, lako se dogodi da pravila matchanja postanu pre\u0161iroka, a autentikacija se ve\u017ee uz \u201cstate\u201d (npr. site je povezan) umjesto uz \u010dvrstu verifikaciju svakog zahtjeva.<\/p>\n\n\n\n<p>U takvim integracijama je posebno rizi\u010dno imati \u201cinternal\u201d putanje koje su zapravo izlo\u017eene javnom internetu, a zatim ih \u0161tititi implicitnim povjerenjem (npr. parametarima u URL-u) umjesto kriptografski potpisanim zahtjevima i striktno definiranom autorizacijom po ruti.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sa\u017eetak<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>CVE-2026-23550 (CVSS 10.0) poga\u0111a Modular DS do 2.5.1 i omogu\u0107uje neautenticiran admin pristup.<\/li>\n\n\n<li>Eksploatacija je aktivna; uo\u010deni su zahtjevi prema <code>\/api\/modular-connector\/login\/<\/code> i poku\u0161aji kreiranja admin korisnika.<\/li>\n\n\n<li>Rje\u0161enje je update na 2.5.2 (ili novije) i brza provjera kompromitacije: korisnici, logovi, salts, OAuth, skeniranje datoteka.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Reference \/ Izvori<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/thehackernews.com\/2026\/01\/critical-wordpress-modular-ds-plugin.html\" target=\"_blank\" rel=\"noopener noreferrer\">Critical WordPress Modular DS Plugin Flaw Actively Exploited to Gain Admin Access<\/a><\/li><li><a href=\"https:\/\/patchstack.com\/articles\/critical-privilege-escalation-vulnerability-in-modular-ds-plugin-affecting-40k-sites-exploited-in-the-wild\/\" target=\"_blank\" rel=\"noopener noreferrer\">Critical privilege escalation vulnerability in Modular DS plugin affecting 40k+ sites exploited in the wild<\/a><\/li><li><a href=\"https:\/\/help.modulards.com\/en\/article\/modular-ds-security-release-modular-connector-252-dm3mv0\/\" target=\"_blank\" rel=\"noopener noreferrer\">Modular DS Security Release: Modular Connector 2.5.2<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Ako na WordPressu koristi\u0161 Modular DS, ovo je jedan od onih hitnih updateova koje ne odga\u0111a\u0161. Kriti\u010dna ranjivost (CVSS 10.0) omogu\u0107uje neautenticirano podizanje privilegija do admina i ve\u0107 se aktivno iskori\u0161tava.<\/p>\n","protected":false},"author":43,"featured_media":99,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[58,57,56,33,10],"class_list":["post-100","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sigurnost","tag-cve","tag-patch-management","tag-ranjivosti","tag-sigurnost","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/users\/43"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/comments?post=100"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts\/100\/revisions"}],"predecessor-version":[{"id":134,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts\/100\/revisions\/134"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/media\/99"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/media?parent=100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/categories?post=100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/tags?post=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}