Blog

Revizija WordPressa? Počnite sa svojim dodacima

Prestanite revidirati WordPress jezgru i počnite revidirati svoje dodatke: praktična sigurnosna revizija usmjerena na dodatke za male timove.

Sažetak

Većina sigurnosnih revizija WordPressa je naopaka: naglašavaju ažuriranja jezgre i izvješća skenera, dok ranjivosti koje stvarno pogađaju žive u dodacima. Bijela knjiga SANS-a otkrila je da više od 96% ranjivosti ekosustava potječe iz dodataka trećih strana, a otprilike 43% njih ne zahtijeva autentifikaciju. Ovaj članak provodi vas kroz reviziju usmjerenu na dodatke za mali interni marketinški tim, koristeći priču o stranici koja je hakirana jer su svi skenirali pogrešan sloj. Naučit ćete inventarizirati i klasificirati svaki dodatak, testirati neautentificirane napadačke površine, ručno pregledati korisnike i zapise te prevesti nalaze u jezik rizika koji netehnički šef razumije. Rezultat je kvartalni ritual trijaže umjesto vježbe s kvačicama.

Većina sigurnosnih revizija WordPressa je farsa. Provedete popodne ažurirajući jezgru, mijenjajući administratorsku lozinku i pokrećući skener dodataka koji ponosno izvještava: 'Nema kritičnih problema.' U međuvremenu, dodatak koji je prihvaćao učitavanje datoteka i zadnji put ažuriran prije tri godine mirno sjedi u vašem direktoriju za učitavanje, čekajući nekoga tko nije na popisu gostiju.

Brojke to potvrđuju. Bijela knjiga SANS-a o skeniranju WordPress dodataka otkrila je da više od 96% ranjivosti u WordPress ekosustavu potječe iz dodataka trećih strana, pri čemu teme čine 4%, a jezgra manje od 1%. Otprilike 43% tih nedostataka može se iskoristiti bez ikakve autentifikacije. Dakle, kada vaša revizija troši najviše energije na jezgru, proučavate drveće dok u susjednom direktoriju dodataka počinje šumski požar.

Ovo nije poziv na paniku oko jezgre. Ranjivosti jezgre poput wp2shell RCE nedostataka koji su nedavno dobili javne exploite treba zakrpati istog dana kad su objavljeni. Ali dovoljno su rijetke da ne zaslužuju većinu vaših revizijskih sati. Većina pripada dodacima i tu počinje stvarni tijek rada.

Zamislite scenarij 'prije': nedjeljno jutro, vaša stranica preusmjerava na stranicu kasina, a šef vam piše e-poruku: 'Mislio sam da imamo sigurnost.' Imali ste sigurnost — imali ste reviziju s kvačicama. Scenarij 'poslije' je sustav trijaže koji dodatke tretira kao napadačku površinu kakva oni zapravo jesu, testira ih izvana i provjerava stvari koje skeneri ne mogu vidjeti.

Na malom ste marketinškom timu s WordPress stranicom koja radi od 2017. Ima prilagođeni dodatak za registraciju događaja koji je freelancer izradio 2019., dodatak za kontakt obrazac s poljem za učitavanje datoteka i dodatak za klizač koji je prodan i više nema javnu stranicu za ažuriranja. Ovo nije neuobičajen skup alata. Ovdje vaša revizija počinje.


Popis dodataka je vaša sigurnosna politika

Napravite popis svakog dodatka i teme. Zapišite verziju, datum zadnjeg ažuriranja, je li dobavljač još aktivan i koristi li je itko. Zatim svaki klasificirajte u kategoriju: održavan i korišten, održavan i nekorišten, napušten, ali korišten, napušten i nekorišten. Nekorištene odmah uklonite. Zanemarite obranu 'to je samo 50$ mjesečno' — nekorišteni dodatak je odgovornost, a ne značajka. Za one napuštene, ali korištene odlučite: zamijenite ih ili prihvatite rizik i zapišite ga u registar rizika koji je vaš šef vidio.

Dodatak za registraciju događaja spada u kategoriju napuštenih, ali korištenih. Prima plaćanja i šalje potvrdne e-poruke, a zamjena je projekt, pa ga za sada zadržavate. Ali zapišete napomenu: 'ovo je najvjerojatniji izvor budućeg proboja' i dodate ga na vrh popisa za testiranje.

Napadačka površinaUdio poznatih ranjivosti WordPressaPrioritet revizije
Dodaci trećih stranaPreko 96%Najviši — popis, skeniranje, testiranje, zamjena
TemeOko 4%Srednji — samo ako su prilagođene ili zastarjele
WordPress jezgraIspod 1%Nizak — držite zakrpanu, idite dalje

Kada je SecurityWeek izbrojao više od 8.000 novih ranjivosti WordPressa u 2024., velika većina bila je upravo toga tipa: problemi s dodacima, a ne zakrpe za jezgru. Skener će vam reći o onima koje su objavljene i dobile CVE. Neće vam reći o prilagođenom freelancerskom kodu bez CVE-ja, jer ga nitko nikada nije pažljivo pogledao. Taj ručni pregled je vaš posao. Za detaljnije upute o provjerama specifičnim za dodatke pogledajte ovaj vodič o reviziji WordPress dodataka za ranjivosti.


Testirajte to kao stranac: 43% kojima ne treba lozinka

Vaš skener već vam je rekao da ništa nije u redu. Sada učinite ono što on ne može: ispitajte stranicu izvana, bez prijave. Počnite sa svakim poljem za učitavanje datoteka, svakim obrascem koji obrađuje POST, svakom admin-ajax krajnjom točkom. Provjerava li učitavanje stvarni sadržaj datoteke ili samo ekstenziju? Gdje završavaju učitane datoteke i može li web poslužitelj izvršavati PHP u tom direktoriju? 43% nedostataka dodataka koji ne zahtijevaju autentifikaciju obično se nalazi upravo na tim mjestima: neautentificirani pohranjeni XSS, proizvoljno učitavanje datoteka i PHP injekcija objekata.

Dodatak za kontakt obrazac posjetiteljima omogućuje prilaganje životopisa. Preimenuje datoteku koristeći izvorni naziv datoteke posjetitelja, pa ako prenesete 'resume.php', spremit će ga u mapu /uploads/contact/ koja je prema dizajnu zapisiva. Ako poslužitelj također dopušta izvršavanje PHP-a u tom direktoriju, napadač je upravo dobio webshell. Fastly je dokumentirao aktivno iskorištavanje neautentificiranog pohranjenog XSS-a u WordPress dodacima — to nije rizik koji se spominje samo na slajdovima. Vaš test je jednostavan: stvorite datoteku s poznatim sadržajem, prenesite je i provjerite vraća li se s izvornim nazivom i vrstom. Zatim pokušajte prenijeti .php datoteku. Ako se vrati kao .php, upravo ste pronašli eksploatabilnu rupu.

Tu se ruši i argument 'ali naš sigurnosni dodatak ima WAF'. WAF može blokirati poznati payload, ali pravila normalizacije putanje na koja se oslanja često odstupaju od onoga što poslužitelj stvarno radi. OWASP Web Security Testing Guide bolja je referenca od bilo koje nadzorne ploče: opisuje kako sustavno testirati nedostatke u učitavanju datoteka i pohranjeni XSS. A ako otkrijete da je dodatak napušten, vrijeme je da primijenite protokol čišćenja: skrivena opasnost napuštenih WordPress dodataka objašnjava zašto je ostavljanje mrtvog dodatka gore nego njegovo uklanjanje i prilagodba vašeg tijeka rada.


Ono što skener ne može vidjeti: korisnici, zapisi i stari kod

Dinamički testovi otkrivaju ono što je trenutno izloženo. Ručni pregled otkriva ono što je već unutra. Počnite s korisničkim računima: otvorite administratorski popis i potražite račune koje niste vi stvorili. Administrator imena 'support' s besplatnom e-porukom i bez osobe iza nje je stražnja vrata, a ne kolega. Provjerite vremenske oznake datoteka u wp-content/uploads za sve nedavno izmijenjeno što nije vaš sadržaj. Provjerite zapisnik pristupa poslužitelja za zahtjeve koji izgledaju kao botska curl naredba, a ne kao preglednik osobe.

Dodatak za događaje ima učitavanje 'fotografije govornika' koje sprema u uploads/event-headshots/. Tijekom testa pronađete datoteku koja nije vaša — malu PHP datoteku s nasumičnim nazivom. To je vaš webshell. Tamo je dospjela kroz isti nedostatak u učitavanju koji ste testirali prije dva tjedna, a skener je i dalje ne bi 'vidio' jer to nije ranjivost dodatka; to je dokaz ranjivosti. Ručni pregled ju pronalazi, briše i provjerava zapisnik za IP adresu koja ju je tamo postavila. Invicti je primijetio da PHP injekcija objekata u dodacima raste i gotovo je nevidljiva za crno-kutijska skeniranja jer se zlonamjerni objekt materijalizira tek tijekom izvršavanja. Jedini način da je uočite je da pročitate kod tražeći opasne obrasce poput pozivanja unserialize() na korisnički uneseni unos. Čitanje nekoliko stotina redaka prilagođenog dodatka jeftinije je od plaćanja ugovora za odgovor na incidente.

Tu dolazi do granice i standardni savjet 'samo instalirajte više sigurnosnih dodataka'. Slaganje tri sigurnosna dodatka daje vam preklapajuća WAF pravila koja se međusobno blokiraju, poplavu dupliciranih log e-poruka i povremenu pogrešku 'isključeni ste' na vlastitoj administratorskoj prijavi. Jedan aktivan sigurnosni dodatak, dobro konfiguriran, dovoljan je. Pročitajte o tome zašto previše sigurnosnih dodataka izaziva kontraefekt prije nego što dodate bilo što drugo na hrpu.


Recite šefu istinu bez izazivanja panike

Vaš šef ne mari za CVSS bodove ili PHP injekciju objekata. Mari za to da stranica ne padne, da trgovina ne prestane primati narudžbe i za IT proračun. Prijevod je jednostavan: 'Ovaj dodatak ima poznati nedostatak neautentificiranog udaljenog izvršavanja koda. Stranac može obrisati sadržaj naše stranice ili instalirati stražnja vrata. Moramo ga zamijeniti ovaj kvartal.' Zatim pokažite popis prioriteta: zamijenite dodatak za događaje, onemogućite učitavanje datoteka u kontakt obrascu dok ne počne ispravno validirati vrste datoteka, rotirajte sve administratorske vjerodajnice i zakažite sljedeću kvartalnu reviziju.

Također imate jezičnu prednost: CISA održava katalog poznatih iskorištenih ranjivosti koji vam točno govori koje su objavljene greške aktivno iskorištene u divljini. Ako se neki od vaših dodataka tamo pojavi, argument više nije teoretski — poznati exploit postoji i vrijeme vam istječe. Ako se ne pojave, svejedno ga koristite kao standard za ono što znači 'hitno'. CISA-ino praćenje olakšava uvjeravanje netehničkog šefa da ovo nije phishing e-poruka; to je javna baza podataka o tome što napadači rade upravo sada. Kada kvartal završi, imat ćete tijek rada za sanaciju, a ne jednokratnu vježbu s kvačicama. Tijek rada za pretvaranje ranjivosti u ciklus zakrpa održava naviku živom.


Prije je bilo slomljena stranica, očajna e-poruka i čisto izvješće skenera koje je govorilo da ništa nije u redu. Poslije je kvartalni ritual: popis, klasifikacija, testiranje izvana, pregled korisnika i zapisa te zapisivanje odluka koje ste donijeli i rizika koje ste prihvatili. Skener postaje mapa gdje treba gledati, a ne potvrda zdravlja. Dodaci postaju popis koji poznajete po imenu. I sljedeći put kad vas šef pita o reviziji, imat ćete odgovor koji ne uključuje držanje palčeva.

Sources (5)