Tinklaraštis
Audituojate WordPress? Pradėkite nuo savo įskiepių
Nustokite audituoti WordPress branduolį ir pradėkite audituoti savo įskiepius: praktinis, įskiepiais pagrįstas saugumo auditas mažoms komandoms.
Santrauka
Dauguma WordPress saugumo auditų yra atvirkščiai: jie akcentuoja branduolio atnaujinimus ir skaitytuvo ataskaitas, o pažeidžiamumai, kurie iš tikrųjų kandžioja, gyvena įskiepiuose. SANS baltoji knyga nustatė, kad daugiau nei 96% ekosistemos pažeidžiamumų kyla iš trečiųjų šalių įskiepių, o maždaug 43% nereikalauja autentifikacijos. Šis straipsnis apžvelgia įskiepiais pagrįstą auditą mažai vidinei rinkodaros komandai, pasitelkdamas istoriją apie svetainę, kuri buvo nulaužta, nes visi skenavo netinkamą sluoksnį. Sužinosite, kaip inventorizuoti ir klasifikuoti kiekvieną įskiepį, išbandyti neautentifikuotus atakos paviršius, rankiniu būdu peržiūrėti vartotojus ir žurnalus bei paversti išvadas rizikos kalba, kurią supranta netechniškas bosas. Rezultatas — ketvirtinis triažo ritualas, o ne formalumo pratimas.
Dauguma WordPress saugumo auditų yra teatras. Jūs praleidžiate popietę atnaujindami branduolį, keisdami administratoriaus slaptažodį ir paleidžiate įskiepių skaitytuvą, kuris išdidžiai praneša: „Nėra kritinių problemų.“ Tuo tarpu įskiepis, kuris priėmė failų įkėlimus ir paskutinį kartą buvo atnaujintas prieš trejus metus, ramiai sėdi jūsų uploads kataloge, laukdamas žmogaus, kurio nėra svečių sąraše.
Skaičiai tai patvirtina. SANS baltoji knyga apie WordPress įskiepių skenavimą parodė, kad daugiau nei 96% pažeidžiamumų WordPress ekosistemoje kyla iš trečiųjų šalių įskiepių, temos sudaro 4%, o branduolys — mažiau nei 1%. Maždaug 43% šių trūkumų gali būti išnaudojami be jokios autentifikacijos. Taigi, kai jūsų auditas daugiausia dėmesio skiria branduoliui, jūs tiriate medžius, o visai šalia, įskiepių kataloge, prasideda miško gaisras.
Tai nėra raginimas panikuoti dėl branduolio. Branduolio pažeidžiamumai, tokie kaip wp2shell RCE trūkumai, kuriems neseniai buvo viešai paskelbti išnaudojimai, turėtų būti pataisyti tą pačią dieną, kai apie juos pranešama. Tačiau jie yra pakankamai reti, kad nenusipelnytų didžiosios jūsų audito valandų dalies. Didžioji dalis tenka įskiepiams, ir būtent čia prasideda tikrasis darbo srautas.
Įsivaizduokite „prieš“ scenarijų: sekmadienio rytą jūsų svetainė nukreipia į kazino puslapį, o viršininkas rašo el. laišką: „Maniau, kad turime saugumą.“ Jūs tikrai turėjote saugumą — turėjote formalų auditą. „Po“ scenarijus yra triažo sistema, kuri į įskiepius žiūri kaip į realų atakos paviršių, bando juos iš išorės ir tikrina tai, ko skaitytuvai nemato.
Jūs esate mažoje rinkodaros komandoje, atsakingoje už WordPress svetainę, veikiančią nuo 2017 metų. Joje yra individualus renginių registracijos įskiepis, kurį 2019 m. sukūrė laisvai samdomas programuotojas, kontaktų formos įskiepis su failo įkėlimo lauku ir slankiklio įskiepis, kuris buvo parduotas ir nebeturi viešo atnaujinimų puslapio. Tai nėra neįprasta technologijų rinkinys. Būtent čia ir prasideda jūsų auditas.
Įskiepių inventorius yra jūsų saugumo politika
Inventorizuokite kiekvieną įskiepį ir temą. Užsirašykite versiją, paskutinio atnaujinimo datą, ar tiekėjas vis dar aktyvus, ir ar kas nors iš tikrųjų jį naudoja. Tada suskirstykite kiekvieną į kategoriją: prižiūrimas ir naudojamas, prižiūrimas ir nenaudojamas, apleistas, bet naudojamas, apleistas ir nenaudojamas. Nenaudojamus pašalinkite nedelsiant. Neklausykite pasiteisinimo „tai tik 50 USD per mėnesį“ — nenaudojamas įskiepis yra našta, o ne funkcija. Dėl apleistų, bet naudojamų įskiepių nuspręskite: pakeiskite jį arba prisiimkite riziką ir įrašykite ją į rizikų registrą, kurį matė jūsų viršininkas.
Renginių registracijos įskiepis patenka į apleistų, bet naudojamų kategoriją. Jis priima mokėjimus ir siunčia patvirtinimo el. laiškus, o jo pakeitimas yra projektas, todėl kol kas jį paliekate. Bet užsirašote pastabą: „tai yra labiausiai tikėtinas būsimo pažeidimo šaltinis“, ir įtraukiate jį į testavimo sąrašo viršų.
| Atakos paviršius | WordPress žinomų pažeidžiamumų dalis | Audito prioritetas |
|---|---|---|
| Trečiųjų šalių įskiepiai | Daugiau nei 96% | Aukščiausias — inventorizuoti, skenuoti, testuoti, pakeisti |
| Temos | Maždaug 4% | Vidutinis — tik jei individualūs ar pasenę |
| WordPress branduolys | Mažiau nei 1% | Žemas — palaikyti atnaujintą, judėkite toliau |
Kai SecurityWeek suskaičiavo daugiau nei 8 000 naujų WordPress pažeidžiamumų 2024 m., didžioji dauguma buvo šio tipo: įskiepių problemos, o ne branduolio pataisos. Skaitytuvas jums pasakys apie tuos, kurie buvo atskleisti ir gavo CVE. Jis nepasakys apie individualų laisvai samdomo programuotojo kodą be CVE, nes niekas niekada jo atidžiai neperžiūrėjo. Tas rankinis peržiūrėjimas yra jūsų darbas. Dėl išsamesnės įskiepių patikrų apžvalgos žr. šį vadovą: kaip audituoti WordPress įskiepius dėl pažeidžiamumų.
Išbandykite kaip nepažįstamasis: tie 43%, kuriems nereikia slaptažodžio
Jūsų skaitytuvas jau pasakė, kad viskas gerai. Dabar padarykite tai, ko jis negali: ištirkite svetainę iš išorės, be prisijungimo. Pradėkite nuo kiekvieno failo įkėlimo lauko, kiekvienos formos, kuri apdoroja POST užklausas, kiekvieno admin-ajax galinio taško. Ar įkėlimas iš tikrųjų tikrina failo turinį, ar tik plėtinį? Kur patenka įkelti failai ir ar žiniatinklio serveris gali vykdyti PHP tame kataloge? Tie 43% įskiepių trūkumų, kuriems nereikia autentifikacijos, dažniausiai slypi būtent šiose vietose: neautentifikuotas saugomas XSS, savavališkas failo įkėlimas ir PHP objektų injekcija.
Kontaktų formos įskiepis leidžia lankytojams prisegti gyvenimo aprašymą. Jis pervadina failą naudodamas lankytojo originalų pavadinimą, todėl įkeliate „resume.php“, o jis išsaugo jį /uploads/contact/ aplanke, kuris yra įrašomas pagal dizainą. Jei serveris taip pat leidžia vykdyti PHP tame kataloge, atakuotojas ką tik gavo žiniatinklio šelį. Fastly dokumentavo aktyvų neautentifikuoto saugomo XSS išnaudojimą WordPress įskiepiuose — tai nėra nišinė rizika iš skaidrių rinkinio. Jūsų testas paprastas: sukurkite failą su žinomu turiniu, įkelkite jį ir pažiūrėkite, ar jis grįžta su savo originaliu pavadinimu ir tipu. Tada pabandykite įkelti .php failą. Jei jis grįžta kaip .php, ką tik radote išnaudojamą skylę.
Čia taip pat žlunga argumentas „bet mūsų saugumo įskiepis turi WAF“. WAF gali užblokuoti žinomą naudingąjį krovinį, tačiau jo naudojamos kelio normalizavimo taisyklės dažnai skiriasi nuo to, ką serveris iš tikrųjų daro. OWASP žiniatinklio saugumo testavimo vadovas yra geresnė nuoroda nei bet koks valdymo skydelis: jis metodiškai aprašo, kaip išbandyti failų įkėlimo trūkumus ir saugomą XSS. Ir jei pastebite, kad įskiepis yra apleistas, laikas taikyti valymo protokolą: paslėptas apleistų WordPress įskiepių pavojus paaiškina, kodėl palikti negyvą plėtinį vietoje yra blogiau nei jį pašalinti ir pritaikyti savo darbo eigą.
Ko skaitytuvas nemato: vartotojai, žurnalai ir pasenęs kodas
Dinaminiai testai pagauna tai, kas yra atvira dabar. Rankinė peržiūra pagauna tai, kas jau yra viduje. Pradėkite nuo vartotojų paskyrų: atidarykite administratorių sąrašą ir ieškokite paskyrų, kurių jūs nesukūrėte. Administratorius, vardu „support“, su nemokamo el. pašto adresu ir be žmogaus už jo, yra užpakalinės durys, o ne kolega. Patikrinkite failų laiko žymes wp-content/uploads kataloge, ar nėra ką nors neseniai pakeisto, kas nėra jūsų turinys. Patikrinkite serverio prieigos žurnalą, ar nėra užklausų, kurios atrodo kaip boto curl komanda, o ne žmogaus naršyklė.
Renginių įskiepis turi „pranešėjo nuotraukos“ įkėlimą, kuris išsaugo failus uploads/event-headshots/ kataloge. Testo metu randate failą, kuris nėra jūsų — mažą PHP failą atsitiktinai atrodančiu pavadinimu. Tai jūsų žiniatinklio šelis. Jis ten pateko per tą patį įkėlimo trūkumą, kurį išbandėte prieš dvi savaites, o dabar skaitytuvas vis tiek jo „nematytų“, nes tai nėra įskiepių pažeidžiamumas; tai jo įrodymas. Rankinė peržiūra jį randa, pašalina ir patikrina žurnalą, ar nėra IP adreso, kuris jį ten įdėjo. Invicti pažymėjo, kad PHP objektų injekcija įskiepiuose auga, ir ji beveik nematoma juodosios dėžės skenavimams, nes kenkėjiškas objektas materializuojasi tik vykdymo metu. Vienintelis būdas jį pastebėti — skaityti kodą ir ieškoti pavojingų modelių, tokių kaip unserialize() iškvietimas su vartotojo pateiktais duomenimis. Perskaityti kelis šimtus individualaus įskiepio eilučių pigiau nei mokėti už incidentų reagavimo paslaugą.
Čia taip pat pasiekiama standartinio patarimo „tiesiog įdiekite daugiau saugumo įskiepių“ riba. Sudėjus tris saugumo įskiepius, gausite persidengiančias WAF taisykles, kurios blokuoja viena kitą, daugybę dublikatų el. laiškų žurnaluose ir retkarčiais klaidą „esate užblokuotas“ jūsų pačių administratoriaus prisijungime. Vieno aktyvaus saugumo įskiepio, tinkamai sukonfigūruoto, pakanka. Paskaitykite apie kodėl per daug saugumo įskiepių atsisuka prieš jus prieš įtraukdami ką nors dar į krūvą.
Kaip pasakyti viršininkui tiesą nesukeliant panikos
Jūsų viršininkui nerūpi CVSS balai ar PHP objektų injekcija. Jam rūpi svetainės gedimas, parduotuvės nepriimami užsakymai ir IT biudžetas. Vertimas paprastas: „Šis įskiepis turi žinomą neautentifikuotą nuotolinio kodo vykdymo trūkumą. Svetimas žmogus gali ištrinti mūsų svetainės turinį arba įdiegti užpakalines duris. Turime jį pakeisti šį ketvirtį.“ Tada parodykite prioritetinį sąrašą: pakeiskite renginių įskiepį, išjunkite kontaktų formos failų įkėlimą, kol ji tinkamai patvirtins failų tipus, pakeiskite visus administratorių prisijungimo duomenis ir suplanuokite kitą ketvirtinę peržiūrą.
Taip pat turite kalbos pranašumą: CISA tvarko žinomų išnaudojamų pažeidžiamumų katalogą, kuris tiksliai nurodo, kurie paskelbti trūkumai aktyviai naudojami laukinėje aplinkoje. Jei kuris nors jūsų įskiepis ten yra, argumentas nebėra teorinis — žinomas išnaudojimas egzistuoja, ir jūs esate priversti skubėti. Jei jų nėra, vis tiek naudokite jį kaip „skubu“ reikšmės standartą. CISA stebėsena palengvina įtikinti netechnišką viršininką, kad tai ne sukčiavimo el. laiškas; tai viešoji duomenų bazė, rodanti, ką atakuotojai daro dabar. Kai ketvirtis baigiasi, turėsite pataisų darbo eigą, o ne vienkartinį formalų pratimą. Darbo eiga, paverčianti pažeidžiamumus pataisų ciklu palaiko įprotį gyvą.
„Prieš“ buvo sugedusi svetainė, pašėlęs el. laiškas ir švari skaitytuvo ataskaita, kuri sakė, kad nieko blogo. „Po“ yra ketvirtinis ritualas: inventorizuoti, klasifikuoti, testuoti iš išorės, peržiūrėti vartotojus ir žurnalus, užsirašyti priimtus sprendimus ir prisiimtą riziką. Skaitytuvas tampa žemėlapiu, kur reikia ieškoti, o ne sveikatos pažymėjimu. Įskiepiai tampa sąrašu, kurį žinote vardais. Ir kai kitą kartą viršininkas paklaus apie auditą, turėsite atsakymą, kuriam nereikia laikyti pirštų sukryžiavus.
