Blog

Auditujete WordPress? Začnite so svojimi doplnkami

Prestaňte auditovať jadro WordPressu a začnite auditovať svoje doplnky: praktický bezpečnostný audit zameraný na doplnky pre malé tímy.

Zhrnutie

Väčšina bezpečnostných auditov WordPressu je zameraná nesprávne: zdôrazňujú aktualizácie jadra a správy skenerov, zatiaľ čo zraniteľnosti, ktoré skutočne škodia, žijú v doplnkoch. Biela kniha spoločnosti SANS zistila, že viac ako 96 % zraniteľností ekosystému pochádza z doplnkov tretích strán a približne 43 % nevyžaduje žiadnu autentifikáciu. Tento článok vás prevedie audítom zameraným na doplnky pre malý interný marketingový tím, na príbehu webu, ktorý bol napadnutý, pretože všetci skenovali nesprávnu vrstvu. Naučíte sa inventarizovať a klasifikovať každý doplnok, testovať neautentifikované útočné povrchy, manuálne kontrolovať používateľov a protokoly a prekladať zistenia do jazyka rizika, ktorému rozumie aj netechnický šéf. Výsledkom je štvrťročný triážový rituál namiesto cvičenia so zaškrtávaním políčok.

Väčšina bezpečnostných auditov WordPressu je divadlo. Strávite popoludnie aktualizáciou jadra, zmenou administrátorského hesla a spustením skenera doplnkov, ktorý hrdo hlási „Žiadne kritické problémy.“ Medzitým doplnok, ktorý prijímal nahrávanie súborov a naposledy bol aktualizovaný pred tromi rokmi, ticho čaká vo vašom priečinku uploads na niekoho, kto nie je na zozname hostí.

Čísla to potvrdzujú. Biela kniha SANS o skenovaní doplnkov WordPressu zistila, že viac ako 96 % zraniteľností v ekosystéme WordPressu pochádza z doplnkov tretích strán, pričom témy tvoria 4 % a jadro menej ako 1 %. Približne 43 % týchto chýb je možné zneužiť bez akejkoľvek autentifikácie. Takže keď váš audit venuje väčšinu svojej energie jadru, skúmate stromy, zatiaľ čo v susednom priečinku doplnkov začína lesný požiar.

Toto nie je výzva na paniku ohľadom jadra. Zraniteľnosti jadra, ako sú chyby RCE wp2shell, ktoré nedávno získali verejné exploity, by mali byť opravené v deň, keď sú oznámené. Ale sú dosť zriedkavé na to, aby si nezaslúžili väčšinu vašich audítorských hodín. Väčšina patrí doplnkom, a tam začína skutočný pracovný postup.

Predstavte si scenár predtým: v nedeľu ráno sa váš web presmeruje na kasínovú stránku a váš šéf napíše: „Myslel som, že máme bezpečnosť.“ Mali ste bezpečnosť – mali ste audítorský checklist. Scenár potom je triážový systém, ktorý zaobchádza s doplnkami ako so skutočným útočným povrchom, testuje ich zvonku a kontroluje veci, ktoré skenery nevidia.

Ste v malom marketingovom tíme s webom na WordPress, ktorý beží od roku 2017. Má vlastný doplnok na registráciu udalostí, ktorý freelancer postavil v roku 2019, kontaktný formulár s poľom na nahrávanie súborov a doplnok na posúvač obrázkov, ktorý bol predaný a už nemá verejnú stránku s aktualizáciami. Toto nie je nezvyčajný stack. Tu váš audit začína.


Inventár doplnkov je vaša bezpečnostná politika

Zoberte inventúru každého doplnku a témy. Zapíšte si verziu, dátum poslednej aktualizácie, či je predajca stále aktívny a či ho niekto skutočne používa. Potom každý zaraďte do kategórie: udržiavaný a používaný, udržiavaný a nepoužívaný, opustený ale používaný, opustený a nepoužívaný. Nepoužívané okamžite odstráňte. Ignorujte argument „stojí to len 50 dolárov mesačne“ – nepoužívaný doplnok je zodpovednosť, nie funkcia. Pre opustené, ale používané, sa rozhodnite: nahradiť ho, alebo prijať riziko a zapísať ho do registra rizík, ktorý váš šéf videl.

Doplnok na registráciu udalostí spadá do kategórie opustený, ale používaný. Prijíma platby a posiela potvrdzovacie e-maily a jeho nahradenie je projekt, takže ho zatiaľ ponecháte. Ale napíšete si poznámku: „toto je najpravdepodobnejší zdroj budúceho útoku“ a pridáte ho na začiatok zoznamu testov.

Útočný povrchPodiel známych zraniteľností WordPressuPriorita auditu
Doplnky tretích stránViac ako 96 %Najvyššia – inventarizácia, skenovanie, testovanie, výmena
TémyPribližne 4 %Stredná – iba ak sú vlastné alebo zastarané
WordPress jadroMenej ako 1 %Nízka – udržiavať opravené, ísť ďalej

Keď SecurityWeek v roku 2024 napočítal viac ako 8 000 nových zraniteľností WordPressu, drvivá väčšina bola tohto typu: problémy s doplnkami, nie záplaty jadra. Skener vám povie o tých, ktoré boli zverejnené a dostali CVE. Nepovie vám o vlastnom kóde freelancera bez CVE, pretože sa naň nikto nikdy poriadne nepozrel. Ten manuálny pohľad je vaša práca. Pre hlbší návod na kontroly špecifické pre doplnky si pozrite tohto sprievodcu auditovaním vašich doplnkov WordPressu pre zraniteľnosti.


Testujte to ako cudzinec: tých 43 %, ktoré nepotrebujú heslo

Váš skener vám už povedal, že nie je nič zlé. Teraz urobte to, čo nevie: prehľadajte web zvonku, bez prihlásenia. Začnite s každým poľom na nahrávanie súborov, každým formulárom, ktorý spracováva POST, každým admin-ajax endpointom. Skontroluje nahrávanie skutočne obsah súboru, alebo iba príponu? Kam idú nahrané súbory a môže webový server spúšťať PHP v tomto priečinku? Tých 43 % zraniteľností doplnkov, ktoré nevyžadujú autentifikáciu, sa zvyčajne nachádza presne na týchto miestach: neautentifikované uložené XSS, ľubovoľné nahrávanie súborov a PHP objektová injekcia.

Kontaktný formulár umožňuje návštevníkom priložiť životopis. Premenuje súbor pomocou pôvodného názvu návštevníka, takže nahrajete „resume.php“ a on ho uloží do priečinka /uploads/contact/, ktorý je zámerne zapisovateľný. Ak server tiež umožňuje spúšťanie PHP v tomto priečinku, útočník práve získal webshell. Fastly zdokumentoval aktívne zneužívanie neautentifikovaného uloženého XSS v doplnkoch WordPressu – toto nie je riziko z okrajovej prezentácie. Váš test je jednoduchý: vytvorte súbor so známym obsahom, nahrajte ho a zistite, či sa vráti s pôvodným názvom a typom. Potom skúste nahrať súbor .php. Ak sa vráti ako .php, práve ste našli zneužiteľnú dieru.

Tu tiež zlyháva argument „ale náš bezpečnostný plugin má WAF“. WAF môže zablokovať známy payload, ale pravidlá normalizácie ciest, na ktoré sa spolieha, sa často líšia od toho, čo server skutočne robí. OWASP Web Security Testing Guide je lepší referenčný bod než akýkoľvek dashboard: popisuje, ako metodicky testovať chyby pri nahrávaní súborov a uložené XSS. A ak zistíte, že doplnok je opustený, je čas aplikovať protokol čistenia: skryté nebezpečenstvo opustených doplnkov WordPressu vysvetľuje, prečo je ponechanie mŕtveho rozšírenia horšie ako jeho odstránenie a prispôsobenie pracovného postupu.


Čo skener nevidí: používatelia, protokoly a starý kód

Dynamické testy zachytávajú to, čo je práve vystavené. Manuálna kontrola zachytáva to, čo je už vo vnútri. Začnite s používateľskými účtami: otvorte zoznam administrátorov a hľadajte účty, ktoré ste nevytvorili. Administrátor s menom „support“ s e-mailom na bezplatnej doméne a bez človeka za ním sú zadné dvierka, nie kolega. Skontrolujte časové pečiatky súborov v wp-content/uploads na čokoľvek nedávno upravené, čo nie je váš obsah. Skontrolujte protokol prístupu servera na požiadavky, ktoré vyzerajú ako botov príkaz curl, nie ako prehliadač človeka.

Doplnok na udalosti má nahrávanie „fotografie rečníka“, ktoré ukladá do uploads/event-headshots/. Počas testu nájdete súbor, ktorý nie je váš – malý PHP súbor s náhodne vyzerajúcim názvom. To je váš webshell. Dostal sa tam cez rovnakú chybu pri nahrávaní, ktorú ste testovali pred dvoma týždňami, a skener by ho stále „nevidel“, pretože to nie je zraniteľnosť doplnku; je to dôkaz jednej. Manuálna kontrola ho nájde, vymaže a skontroluje protokol pre IP adresu, ktorá ho tam umiestnila. Invicti poznamenal, že PHP objektová injekcia v doplnkoch je na vzostupe a je takmer neviditeľná pre black-box skeny, pretože škodlivý objekt sa materializuje iba počas vykonávania. Jediný spôsob, ako ju odhaliť, je čítať kód a hľadať nebezpečné vzory, ako je volanie unserialize() na vstup od používateľa. Prečítať niekoľko stoviek riadkov vlastného doplnku je lacnejšie ako platiť retainera za incident response.

Tu tiež naráža na svoje limity štandardná rada „stačí nainštalovať viac bezpečnostných doplnkov“. Naskladanie troch bezpečnostných doplnkov vám dá prekrývajúce sa pravidlá WAF, ktoré sa navzájom blokujú, príval duplicitných e-mailov z protokolov a občasnú chybu „máte zákaz“ pri vašom vlastnom administrátorskom prihlásení. Jeden aktívny bezpečnostný doplnok, dobre nakonfigurovaný, stačí. Prečítajte si o tom, prečo príliš veľa bezpečnostných doplnkov zlyháva, predtým než pridáte čokoľvek ďalšie na kopu.


Povedať šéfovi pravdu bez vyvolania paniky

Váš šéf sa nestará o CVSS skóre alebo PHP objektovú injekciu. Záleží mu na tom, či web spadne, či obchod neprijíma objednávky a na IT rozpočte. Preklad je jednoduchý: „Tento doplnok má známu neautentifikovanú chybu vedúcu k vzdialenému spusteniu kódu. Cudzinec môže vymazať obsah nášho webu alebo nainštalovať zadné dvierka. Musíme ho nahradiť tento štvrťrok.“ Potom ukážte zoznam priorít: nahradiť doplnok na udalosti, zakázať nahrávanie súborov v kontaktnom formulári, kým poriadne neoveruje typy súborov, otočiť všetky administrátorské poverenia a naplánovať ďalší štvrťročný prehľad.

Máte tiež jazykovú výhodu: CISA udržiava katalóg Known Exploited Vulnerabilities, ktorý vám presne povie, ktoré zverejnené chyby sa v súčasnosti aktívne zneužívajú vo voľnej prírode. Ak sa tam objaví niektorý z vašich doplnkov, argument už nie je teoretický – existuje známy exploit a vy ste pod časovým tlakom. Ak sa tam neobjavia, použite ho aj tak ako štandard pre to, čo znamená „naliehavé“. Sledovanie CISA uľahčuje presvedčiť netechnického šéfa, že toto nie je phishingový e-mail; je to verejná databáza toho, čo útočníci práve robia. Keď štvrťrok skončí, budete mať pracovný postup na nápravu, nie jednorazové cvičenie so zaškrtávaním. A pracovný postup na premenu zraniteľností na cyklus záplat udržiava návyk nažive.


Predtým bol rozbitý web, zúfalý e-mail a čistá správa skenera, ktorá hovorila, že nič nie je zlé. Potom je štvrťročný rituál: inventarizácia, klasifikácia, testovanie zvonku, kontrola používateľov a protokolov a zapísanie rozhodnutí, ktoré ste urobili, a rizík, ktoré ste prijali. Skener sa stáva mapou, kde hľadať, nie certifikátom zdravia. Doplnky sa stávajú zoznamom, ktorý poznáte po mene. A keď sa váš šéf nabudúce spýta na audit, budete mať odpoveď, ktorá nezahŕňa kríženie prstov.

Sources (5)