Блог

Revizija WordPress-a? Počnite od svojih dodataka

Prestanite da revidirate WordPress jezgro i počnite da revidirate svoje dodatke: praktična revizija bezbednosti koja stavlja dodatke na prvo mesto, za male timove.

Sažetak

Većina WordPress revizija bezbednosti je unazad: one naglašavaju ažuriranja jezgra i izveštaje skenera, dok ranjivosti koje zaista pogađaju žive u dodacima. SANS bela knjiga je otkrila da preko 96% ranjivosti ekosistema potiče iz dodataka trećih strana, a otprilike 43% ne zahteva autentifikaciju. Ovaj članak vas vodi kroz reviziju koja stavlja dodatke na prvo mesto za mali interni marketinški tim, koristeći priču o sajtu koji je hakovana jer su svi skenirali pogrešan sloj. Naučićete da popišete i klasifikujete svaki dodatak, testirate neautentifikovane napadne površine, ručno pregledate korisnike i dnevnike, i prevedete nalaze u jezik rizika koji netehnički šef razume. Rezultat je kvartalni ritual trijaže umesto vežbe sa kliktanjem.

Većina WordPress revizija bezbednosti je pozorište. Provedete popodne ažurirajući jezgro, menjajući administratorsku lozinku i pokrećete skener dodataka koji ponosno izveštava "Nema kritičnih problema." U međuvremenu, dodatak koji je prihvatao otpremanje datoteka i poslednji put ažuriran pre tri godine tiho sedi u vašem direktorijumu za otpremanje, čekajući nekoga ko nije na listi gostiju.

Brojevi to potvrđuju. SANS bela knjiga o skeniranju WordPress dodataka otkrila je da više od 96% ranjivosti u WordPress ekosistemu potiče iz dodataka trećih strana, sa temama na 4% i jezgrom ispod 1%. Otprilike 43% tih grešaka može se iskoristiti bez ikakve autentifikacije. Dakle, kada vaša revizija troši većinu energije na jezgro, posmatrate drveće dok šumski požar počinje u susednom direktorijumu dodataka.

Ovo nije poziv na paniku zbog jezgra. Ranjivosti jezgra poput wp2shell RCE grešaka koje su nedavno dobijale javne eksploatacije treba zakrpati istog dana kad su objavljene. Ali one su dovoljno retke da ne zaslužuju većinu vaših sati revizije. Većina pripada dodacima, i tu počinje pravi radni tok.

Zamislite scenario pre: nedeljno jutro, vaš sajt preusmerava na kazino stranicu, a šef vam šalje imejl: "Mislio sam da imamo bezbednost." Imali ste bezbednost — imali ste reviziju sa kliktanjem. Scenario posle je sistem trijaže koji tretira dodatke kao napadnu površinu kakva jesu, testira ih spolja i proverava stvari koje skeneri ne mogu videti.

Vi ste u malom marketinškom timu sa WordPress sajtom koji radi od 2017. Ima prilagođeni dodatak za registraciju događaja koji je slobodnjak napravio 2019, dodatak za kontakt formu sa poljem za otpremanje datoteka, i dodatak za slider koji je prodat i više nema javnu stranicu za ažuriranja. Ovo nije neuobičajen skup. Ovde počinje vaša revizija.


Inventar dodataka je vaša bezbednosna politika

Popišite svaki dodatak i temu. Zapišite verziju, datum poslednjeg ažuriranja, da li je prodavac još aktivan i da li ga iko zaista koristi. Zatim svrstajte svaki u kategoriju: održavan i korišćen, održavan a nekorišćen, napušten ali korišćen, napušten i nekorišćen. Uklonite nekorišćene odmah. Ignorišite odbranu "to je samo $50 mesečno" — nekorišćeni dodatak je odgovornost, ne funkcija. Za napuštene ali korišćene odlučite: zamenite ga, ili prihvatite rizik i zapišite ga u registar rizika koji je šef video.

Dodatak za registraciju događaja spada u kategoriju napušten ali korišćen. Prima plaćanja i šalje imejlove potvrde, a zamena je projekat, pa ga za sada zadržite. Ali zapišete belešku koja kaže: "ovo je najverovatniji izvor buduće povrede bezbednosti," i dodate ga na vrh liste za testiranje.

Napadna površinaUdeo poznatih WordPress ranjivostiPrioritet revizije
Dodaci trećih stranaPreko 96%Najviši — inventar, skeniranje, testiranje, zamena
TemeOko 4%Srednji — samo ako su prilagođene ili zastarele
WordPress jezgroIspod 1%Nizak — održavajte zakrpe, idite dalje

Kada je SecurityWeek izbrojao više od 8.000 novih WordPress ranjivosti u 2024, ogromna većina je bila ovog tipa: problemi sa dodacima, ne zakrpe jezgra. Skener će vam reći o onima koje su objavljene i dobile CVE. Neće vam reći o prilagođenom kodu slobodnjaka bez CVE, jer niko ga nikada nije pažljivo pregledao. Taj ručni pregled je vaš posao. Za detaljniji uvid u provere specifične za dodatke, pogledajte ovaj vodič o reviziji vaših WordPress dodataka za ranjivosti.


Testirajte ga kao stranac: 43% kojima nije potrebna lozinka

Vaš skener vam je već rekao da ništa nije u redu. Sada uradite ono što on ne može: ispitajte sajt spolja, bez prijave. Počnite sa svakim poljem za otpremanje datoteka, svakom formom koja obrađuje POST, svakim admin-ajax endpointom. Da li otpremanje zaista proverava sadržaj datoteke ili samo ekstenziju? Gde dospevaju otpremljene datoteke i može li veb server izvršiti PHP u tom direktorijumu? Onih 43% grešaka dodataka koje ne zahtevaju autentifikaciju obično se nalaze upravo na tim mestima: neautentifikovani sačuvani XSS, proizvoljno otpremanje datoteka i PHP objektna injekcija.

Dodatak za kontakt formu omogućava posetiocima da prilože biografiju. Preimenuje datoteku koristeći originalno ime posetioca, pa otpremite "resume.php" i ono se sačuva u /uploads/contact/ fasciklu koja je po dizajnu upisiva. Ako server takođe dozvoljava pokretanje PHP-a u tom direktorijumu, napadač je upravo dobio veb školjku. Fastly je dokumentovao aktivno iskorišćavanje neautentifikovanog sačuvanog XSS-a u WordPress dodacima — ovo nije nišna rizik sa slajdova. Vaš test je jednostavan: kreirajte datoteku sa poznatim sadržajem, otpremite je i proverite da li se vraća sa originalnim imenom i tipom. Zatim pokušajte da otpremite .php datoteku. Ako se vrati kao .php, upravo ste pronašli rupu koja se može iskoristiti.

Ovo je takođe mesto gde se argument "ali naš sigurnosni dodatak ima WAF" raspada. WAF može blokirati poznati payload, ali pravila normalizacije putanje na koja se oslanja često odstupaju od onoga što server zaista radi. OWASP Veb bezbednosni test vodič je bolja referenca od bilo koje kontrolne table: on opisuje kako metodično testirati greške pri otpremanju datoteka i sačuvani XSS. A ako otkrijete da je dodatak napušten, vreme je da primenite protokol čišćenja: skrivena opasnost od napuštenih WordPress dodataka objašnjava zašto je ostavljanje mrtvog dodatka gore od uklanjanja i prilagođavanja vašeg radnog toka.


Ono što skener ne vidi: korisnici, dnevici i stari kod

Dinamički testovi hvataju ono što je trenutno izloženo. Ručna provera hvata ono što je već unutra. Počnite sa korisničkim nalozima: otvorite administratorsku listu i potražite naloge koje niste vi kreirali. Administrator imena "support" sa besplatnom imejl adresom i bez čoveka iza njega je zadnja vrata, ne kolega. Proverite vremenske oznake datoteka u wp-content/uploads za bilo šta nedavno izmenjeno što nije vaš sadržaj. Proverite dnevnik pristupa servera za zahteve koji liče na botovu curl komandu, a ne na pregledač osobe.

Dodatak za događaje ima otpremanje "fotografije govornika" koje čuva u uploads/event-headshots/. Tokom testa pronađete datoteku koja nije vaša — malu PHP datoteku sa nasumičnim imenom. To je vaša veb školjka. Dospela je kroz istu grešku pri otpremanju koju ste testirali pre dve nedelje, i do sada skener i dalje ne bi "video" jer to nije ranjivost dodatka; to je dokaz ranjivosti. Ručna provera je pronalazi, briše je i proverava dnevnik za IP adresu koja ju je postavila. Invicti je primetio da PHP objektna injekcija u dodacima raste i gotovo je nevidljiva za crne kutije skeniranje jer se zlonamerni objekat materijalizuje samo tokom izvršavanja. Jedini način da je uočite je da čitate kod za opasne obrasce poput pozivanja unserialize() na korisnički unos. Čitanje nekoliko stotina linija prilagođenog dodatka jeftinije je od plaćanja zadržavanja za odgovor na incident.

Ovo je takođe mesto gde standardni savet "samo instalirajte više sigurnosnih dodataka" dostiže svoju granicu. Slaganje tri sigurnosna dodatka daje vam preklapajuća WAF pravila koja blokiraju jedna druga, poplavu duplih imejl dnevnika i povremenu grešku "banovani ste" na sopstvenoj administratorskoj prijavi. Jedan aktivni sigurnosni dodatak, dobro konfigurisan, dovoljan je. Pročitajte o zašto previše sigurnosnih dodataka ima kontraefekat pre nego što dodate bilo šta drugo na gomilu.


Reci šefu istinu bez izazivanja panike

Vašeg šefa nije briga za CVSS ocene ili PHP objektnu injekciju. Njemu je stalo do toga da sajt ne padne, prodavnica ne prima porudžbine i IT budžeta. Prevod je jednostavan: "Ovaj dodatak ima poznatu neautentifikovanu grešku daljinskog izvršavanja koda. Stranac može obrisati sadržaj našeg sajta ili instalirati zadnja vrata. Treba da ga zamenimo ovog kvartala." Zatim pokažite listu prioriteta: zamenite dodatak za događaje, onemogućite otpremanje datoteka u kontakt formi dok se pravilno ne validiraju tipovi datoteka, rotirajte sve administratorske akreditive i zakažite sledeći kvartalni pregled.

Takođe imate jezičku prednost: CISA održava katalog poznatih iskorišćenih ranjivosti, koji vam tačno govori koje su objavljene greške aktivno korišćene u divljini. Ako se bilo koji od vaših dodataka tamo pojavi, argument više nije teoretski — poznati exploit postoji i vreme vam ističe. Ako se ne pojave, svejedno ga koristite kao standard za to šta "hitno" znači. CISA praćenje olakšava ubeđivanje netehničkog šefa da ovo nije phishing imejl; to je javna baza podataka o tome šta napadači rade upravo sada. Kada se kvartal završi, imaćete proces sanacije, a ne jednokratnu vežbu s kliktanjem. Proces za pretvaranje ranjivosti u ciklus zakrpa održava naviku živom.


Pre je bila pokvaren sajt, očajnički imejl i čist izveštaj skenera koji je rekao da ništa nije u redu. Posle je kvartalni ritual: inventar, klasifikacija, testiranje spolja, pregled korisnika i dnevnika i zapisivanje odluka koje ste doneli i rizika koje ste prihvatili. Skener postaje mapa gde da gledate, a ne potvrda zdravlja. Dodaci postaju lista koju znate po imenu. I sledeći put kada vas šef pita o reviziji, imaćete odgovor koji ne uključuje držanje palčeva.

Sources (5)