Utocnici si nejprve obhlednou teren, nez vystreli -- pruzkum mireny na JCE zachyceny v jedinem dni pristupovych logu
Nedavno jsem analyzoval 30 dni pristupovych logu sveho webu a referoval, ze automatizovane utoky mirene na CVE-2026-48907, kritickou zranitelnost v rozsireni editoru JCE (Joomla Content Editor) pro Joomlu, prichazely kazdy jednotlivy den bez prestavky. Toto je pokracovani. Tentokrat vyjmu jediny den -- 8. cervence -- a prohlednu si jej zblizka. Zuzeni na jediny den ostre zaostrilo neco, co 30denni souhrny pohrbily: metodu utocniku.
Nejprve zaver: ani v tento den nebyla zadna stopa po prolomeni. Ale logy tohoto dne jasne zaznamenaly tah, kteremu jsem dosud nevenoval pozornost -- pruzkum, ktery predchazi utoku. Proc jsou weby ponechane na starych verzich vybirany jako terc? Surove logy vam umozni ten duvod precist.
Uvodem: nejsem bezpecnostni odbornik. Nasleduje muj pokus postavit vedle sebe primarni data z mych vlastnich pristupovych logu a verejne informace o zranitelnosti.
Nejprve naproste minimum o teto zranitelnosti
CVE-2026-48907 je zranitelnost typu neautentizovaneho vzdaleneho spusteni kodu (RCE) v JCE. Jeji skore CVSS je maximum, 10.0. Bez overeni totoznosti a bez interakce uzivatele umoznuje utocnikovi zapsat a spustit na serveru libovolny PHP kod. Utok ma dve faze: nejprve vytvori falesny profil editoru, ktery umoznuje neautentizovane nahravani souboru, pak tento profil pouzije k nahrani webshellu `.php` nebo `.phtml` na server a jeho spusteni z webu.
Dotcene jsou verze JCE od 1.0.0 az po 2.9.99.4. Opravene verze jsou k dispozici od 2.9.99.5 a verze, kterou vyvojar aktualne doporucuje pro vsechny weby, je 2.9.99.9. Americka agentura CISA 16. cervna oznacila tuto chybu za znamou zneuzivanou zranitelnost a ulozila federalnim uradum neobvykle kratkou tridenni lhutu k naprave -- protoze funkcni exploit kod je verejny a utoky jsou automatizovane.
Na okraj: tato doporucena verze 2.9.99.9 byla shodou okolnosti vydana prave onoho 8. cervence, ktery tento clanek zkouma. V presne ten den, kdy utoky prichazely bez prestavky, vyvojar vydal nejnovejsi opravu. Tichy zavod mezi obranci a lovci se odehrava prave zde.
Obsahlejsi pozadi ponecham predchozimu clanku. Odtud se obracim k pozorovanim onoho jednoho dne, 8. cervence.
Logy toho dne, 31 260 radku
8. cervence citaly pristupove logy meho webu (tri property dohromady) 31 260 radku. Naprosta vetsina je bezny provoz. Uspesne odpovedi serie 200 tvorily vice nez 70 % celku a zaznamy o odrazeni utoku a sondovani (403, 404, 401) byly malym zlomkem. Zaznamu o uspesnem sondovani citlivych souboru byla i tento den nula.
V tomto malem zlomku byly obvykle utoky -- a jeden novy objev.
Obvykle utoky -- stale prichazely, nezmenene
Utocne POSTy mirene na JCE a podobne komponenty typu page builder prichazely i tento den z vice zdroju. Metoda je totozna s tim, co jsem pozoroval drive: davka POSTu snazicich se zneuzit funkci importu profilu, nasledovana pokusy umistit soubory podobne webshellu. Nazvy souboru obsahovaly vzory, ktere koluji v znamych utocich, napriklad nazvy zacinajici na `nx`.
Vysledek: same miny vedle. Utocne POSTy skoncily po presmerovani na chybovych strankach a kazdy pokus o umisteni webshellu byl zablokovan. Protoze cilene komponenty nejsou na frontendu meho webu vubec vystaveny, nebylo nic, na co by utok mohl dopadnout.
Jinymi slovy, zatimco toto pisu, ona kampan stale probiha v pritomnem case. Neni to zvlastni udalost konkretniho dne; stalo se to kazdodennim sumem v pozadi.
Novy objev -- pred utokem byla "obhlidka terenu"
V tento den bylo jasne zaznamenano chovani, ktereho jsem si dosud nebyl vedom. Neslo jen o hrube POSTy.
Nekolik zdroju se pred zahajenim utoku pokousely precist manifestove soubory jednotlivych komponent. Konkretne pristupovaly k XML souborum jako `com_jce/jce.xml`, `com_sppagebuilder/sppagebuilder.xml` a `com_pagebuilderck/pagebuilderck.xml`.
Co je v techto XML souborech napsano? Cislo verze daneho rozsireni. Rozsireni Joomly kazde zaznamenava svuj nazev a verzi v XML zvanem manifest, a pokud jej lze precist, utocnik na prvni pohled vidi, zda ma web nainstalovane JCE, a pokud ano, zda jde o zranitelnou verzi pred zaplatou.
Co to znamena? Utocnici nestreli naslepo. Nejprve obhlednou teren, identifikuji weby, ktere maji nainstalovanou zranitelnou komponentu -- a jeji starou verzi -- a teprve pak prikroci k samotnemu utoku. Zamerit, pak stisknout spoust. Logy toho dne zachytily prave onen okamzik mireni.
Na mem webu byl pristup k temto manifestum rovnez v kazdem pripade zablokovan a verze nebyla prectena. Ale pouha pritomnost tohoto pruzkumu nese tezky vyznam. Weby ponechane na starych verzich jsou vybirany jako terc utoku. Odkladat aktualizaci neni jen "nechat diru otevrenou" -- rovna se to sdeleni utocnikovi, ze ta dira tam je.
Co nam tento jeden den rika
Prectete si peclive logy jedineho dne a uvidite, ze utok postupuje ve fazich: pruzkum, pak samotny utok. A protoze cilem pruzkumu je zjistit verzi, prvni tah obrany je rovnez jasny.
Aktualizujte JCE na 2.9.99.9. Pokud jej nepouzivate, odstrante jej. To je cele. Dokud necháte verzi starou, chytnete se do pruzkumu a zustanete na seznamu tercu. Naopak jakmile aktualizujete az na nejnovejsi verzi, i kdyz vam nekdo precte manifest, je slusna sance, ze budete preskocen jako "web, ktery nestoji za utok". Nemuzete zabranit tomu, aby si vas obhledli, ale muzete ucinit vysledek te obhlidky neskodnym.
Jeste jedna vec. I kdyz utoky skonci minami vedle, jako na mem webu, neni to dukaz, ze k prolomeni nedoslo. To, co muze rici analyza logu, saha jen po "nebyla nalezena zadna stopa po uspesnem prolomeni". Prave proto vedle aktualizace doporucuji jednou zkontrolovat vlastnima ocima. Zde jsou konkretni znaky, ktere vyvojar uvadi.
Otevrete "Komponenty -> JCE Editor -> Editor Profiles" v administracni konzoli a hledejte jakykoli profil, ktery si nepamatujete, ze jste vytvorili. Skodlive profily vytvorene utokem mivaji nesmyslne automaticky generovane nazvy a byvaji serazeny tak, aby se objevily na zacatku seznamu. Krome toho zkontrolujte, zda slozky `images`, `media` a `tmp` neobsahuji nejaky soubor `.php`, ktery jste tam neumistili (vcetne souboru s php v nazvu, jako `foo.php.xml`). Tyto slozky by za normalnich okolnosti nemely obsahovat zadne PHP soubory. Kdyz profil neurcuje cil nahravani, vychozim umistenim je slozka images, takze zacit tam je efektivni. Jako dalsi znak: pokud panel nastroju frontendoveho editoru zmizel a zbyl jediny knoflik nebo vubec nic, i to je vystrazny signal. Sam o sobe neni dukazem, ale v prekryvu s neznamym profilem je to silny ukazatel.
A co vyvojar zduraznuje nejvice, je poradi. Aktualizace zavre vstupni bod, ale neuklidi web, ktery uz byl prolomeny. Pokud je prolomeni mozne, udelejte si kopii podezrelych profilu a souboru pred jejich smazanim, nejprve zavrete diru aktualizaci, pak je odstrante a pote zmente hesla k administraci, databazi a hostingu -- v tomto poradi.
Zaverem
Logy jednoho dne ukazuji neco jineho nez 30denni souhrny. Udalost, ktera se v souhrnu stava mnozstvim -- "utoky prichazeji kazdy den" -- se pri zuzeni na jediny den zvedne jako kvalita: "protejsek nejprve obhledne teren, zkontroluje verzi a teprve pak vystreli".
Skutecnost, ze utocici strana dba na verzi, je -- obraceno -- nejjasnejsim voditkem pro stranu branici. Zvednete verzi. To je nejjistejsi jediny tah, jak nechat obhlizece, ktery se prisel porozhlednout, odejit s prazdnou.
O zverejneni teto informace
Napisu to uprimne. Ma to duvod, proc takovou informaci poskytuji. Mel by nekdo na pouze bezne uzivatelske urovni jako ja tohle vubec zverejnovat? -- to jsem si zpocatku lamal hlavu. Presto pisu jen v nadeji, ze doporucim to malo informaci, ktere mam, co nejvetsimu poctu provozovatelu webu na Joomle v Japonsku; neni to zadna povinnost, kterou by mi nekdo ulozil.
Budu tedy uprimny i ohledne presnosti. V teto oblasti jsou spolehlive primarni informace v soucasnosti temer vsechny na zahranicnich webech a nezbyva nez se na ne podivat vlastnima ocima a posoudit je. I tento clanek byl napsan takto -- postavenim verejnych informaci o zranitelnosti vedle logu meho vlastniho webu. Pokud v tom, co jsem napsal, najdete cokoli zastaraleho nebo mylneho, dejte prednost oficialnim informacim od vyvojare a od CISA. Presto, pokud se tento clanek muze stat prvnim voditkem byt pro jedineho cloveka, ktery se jeste nedostal k anglicky psanym informacim, pak melo smysl jej napsat.
*Tento clanek vychazi z primarnich dat pristupovych logu meho vlastniho webu. Nejsem bezpecnostni odbornik a casti tohoto vykladu obsahuji odhad. Pri reseni vlastniho webu vzdy nahlednete i do oficialnich informaci od vyvojare a od CISA.*