Emuārs
Vispirms prioritātes, pēc tam ielāpi: praktisks WordPress drošības audits
Pārstājiet vienādi uztvert visus spraudņu atjauninājumus. Apgūstiet uz prioritāšu noteikšanu balstītu WordPress drošības auditu, kas pievēršas neautentificētiem riskiem un skaidro atklājumus ne-tehniskām ieinteresētajām pusēm.
Kopsavilkums
Šajā rakstā ir izskaidrots, kāpēc visu WordPress spraudņu masveida ielāpošana ir neproduktīvs drošības ieradums, un piedāvāta mērķtiecīgāka, uz prioritāšu noteikšanu balstīta audita metode. Tajā uzsvērts, ka aptuveni 43% spraudņu ievainojamību var izmantot bez autentifikācijas, tāpēc tām ir jāpiešķir prioritāte. Kontrolsaraksts aptver ievainojamību šķirošanu, spraudņu inventāra samazināšanu, skenēšanas rezultātu lasīšanu ar veselīgu skepsi, lietotāju tiesību auditēšanu, vebšellu (webshell) un žurnālu anomāliju pārbaudi, kā arī audita atskaišu vienkāršošanu. Katrs solis ietver praktisku piemēru un brīdinājumu, kas rakstīts mārketinga speciālistiem, kuriem ir jāpamato drošības darbi ne-tehniskajam vadītājam. Ievērojot šo pieeju, jūs varat koncentrēt ierobežotos resursus uz riskiem, kam patiesībā ir nozīme, nevis dzīties pakaļ katram brīdinājumam.
Vienā dienā ielāpot visus spraudņus ir viens no tiem drošības ieradumiem, kas šķiet atbildīgs, bet patiesībā var būt neproduktīvs. Doma aiz tā ir loģiska: nozares pētījumi konsekventi attiecina vairāk nekā 96% WordPress ekosistēmas ievainojamību uz trešo pušu spraudņiem, un pēdējā laika atklājumu intensitāte liek bailēm šķist steidzamām — SecurityWeek ziņoja par 8000 jaunām WordPress ievainojamībām tikai 2024. gadā. Bet "atjaunināt visu vienādi" pret visām ievainojamībām izturas tā, it kā tās radītu vienādu risku, taču tās nerada. Liela daļa spraudņu trūkumu prasa, lai uzbrucējs vispirms būtu pieteicies; aplēses liecina, ka neautentificētā daļa ir aptuveni 43%. Tie ir trūkumi, kurus anonīms robots var sasniegt lielā apjomā, un tie ir pelnījuši pavisam citu reakciju nekā tie, kuriem nepieciešams esošs konts.
Šajā rakstā ir izklāstīts triāžas pirmais audits: kontrolsaraksts, kas veidots, ņemot vērā sasniedzamību, aktivitāti un atlikušo risku, nevis ielāpu ātrumu. Tas ir rakstīts, domājot par cilvēku, kuram jāpārvērš drošības atklājumi par budžeta sarunām ar ne-tehnisku lēmumu pieņēmēju, jo grūtākā WordPress audita daļa nav rīku darbināšana — tā ir izskaidrošana, kāpēc mierīgs, prioritizēts saraksts ir noderīgāks par dramatisku "ielāpojiet visu" trauksmi.
Šķirojiet savu ievainojamību sarakstu pēc "Kas tam var piekļūt bez pieteikšanās"
Ievainojamības smaguma pakāpe norāda, cik liels varētu būt bojājums; tā nenorāda, cik iespējams, ka kāds to izmantos. Autentifikācijas prasības ir pirmais filtrs, ko piemērot.
Iedomājieties, ka jūsu vietnē darbojas lapu veidotājs ar uzglabātu XSS trūkumu, kam nepieciešama administratora piekļuve, un neliels importa spraudnis, kas ļauj jebkuram apmeklētājam augšupielādēt failu pagaidu mapē. Lapu veidotāja ievainojamība varētu iegūt augstāku punktu skaitu CVSS skalā, bet uzbrucējam jau ir jābūt administratora kontam, lai to izmantotu. Importa spraudnis savukārt ir pieejams katram skenējošam robotam, kas iet garām. Lapu veidotāja ielāpošana vispirms, jo tas ieguva augstāku punktu skaitu, ir tāda veida kļūda, kas atstāj jūsu faktiskās durvis neaizslēgtas.
Izvelciet spraudņu ievainojamību sarakstu no sava drošības skenera vai paziņojumu plūsmām un sadaliet to divās kaudzēs: "attālināti, bez autentifikācijas" un "nepieciešama loma". Ielāpojiet bez-autentifikācijas kaudzi dažu stundu laikā — un, ja ievainojamība parādās CISA zināmo izmantoto ievainojamību katalogā, uzskatiet to par ārkārtas situāciju, jo šis katalogs izseko trūkumus, kas jau tiek izmantoti reālos uzbrukumos. Autentificētā kaudze kļūst par parastu uzturēšanas uzdevumu, ko plānojat kopā ar atjauninājumu testēšanu.
Vai tas nozīmē, ka varat ignorēt autentificētas ievainojamības? Nē. Bet tās pieder pie cita ritma, it īpaši, ja jūsu vietnē ir daudz autoru vai redaktoru. Triāža nav par riska ignorēšanu; tā ir par tā secību. Standarta spraudņu audits izseko versijas, bet ne sasniedzamību. Šis solis ir tas, kas maina lietu.
Izdzēsiet to, ko neizmantojat (vai vismaz paslēpiet)
Katrs jūsu instalētais spraudnis ir ceļš, pa kuru uzbrucējs var iekļūt, un neaktīvi spraudņi bieži ir vissliktākie: neviens tos neuzrauga, neviens tos neatjaunina, un tie atrodas zināmā direktoriju struktūrā, ko skeneri atpazīst.
Apsveriet ieplānoto publicēšanas spraudni, ko bijušais praktikants izmantoja divu nedēļu reklāmas kampaņai. Tas ir deaktivizēts, bet joprojām atrodas diskā, un piegādātājs trīs gadus nav izdevis atjauninājumu. Uzbrucējam ir vienalga, ka jūs to neizmantojat; viņam ir svarīgi, ka fails /wp-content/plugins/launch-scheduler/ajax.php pastāv un pieņem neautentificētus pieprasījumus. Deaktivizēti spraudņi ir bieži sastopams avots tēmai "mēs nedomājām, ka mums tas ir jāatjaunina" incidentu pārskatos. Spraudnis, kas pastāv, ir uzbrukuma virsma neatkarīgi no tā, vai tas ir aktīvs vai nē.
Izveidojiet inventarizāciju un apzīmējiet katru spraudni: "aktīvā lietošanā", "nepieciešams, bet neaktīvs" vai "vairs nav vajadzīgs". Visam pēdējā grupā — deaktivizējiet un izdzēsiet — ne tikai deaktivizējiet, jo spraudņa kods paliek lasāms, kamēr tas nav noņemts. Grupai "nepieciešams, bet neaktīvs" vismaz ierobežojiet piekļuvi spraudņa failiem vai pārvietojiet tā datus slēgtā vietā. Jūs būsiet pārsteigts, cik daudz spraudņu tika instalēti vienai kampaņai un nekad netika noņemti. Pamestiem spraudņiem ir tendence kļūt par saistībām, kā tas ir aprakstīts mūsu padziļinātajā analīzē par pamestiem WordPress spraudņiem.
Pat dzēšana rada risku. Ja spraudnis atbalstīja saturu, kas joprojām ir jūsu lapā, tā noņemšana var kaut ko salauzt. Tātad inventarizācijas solis nav pavēle dzēst neapdomīgi; tas ir iemesls rakstiski izlemt, ko jūs paturat un kāpēc.
Uztveriet skenēšanu kā sākumpunktu, nevis spriedumu
Automatizēta skenēšana ir parakstu salīdzināšanas vingrinājums: tā salīdzina jūsu vietnes zināmos modeļus ar zināmu sliktu modeļu datubāzi. Tā nevērtē jūsu konfigurāciju, lietotāju lomas vai pielāgotā koda mijiedarbību.
| Ko skenēšana atklāj | Ko tā parasti palaiž garām |
|---|---|
| Novecojušas spraudņu versijas ar zināmām CVE | Pārmērīgi piešķirtas lietotāju tiesības |
| Atklāti faili un noklusējuma administratora lietotājvārdi | Neregulāri pieteikšanās modeļi vai jauni administratori |
| Zināmas izmantošanas paraksti | Nepareizi konfigurētas failu atļaujas |
| Nesenā ļaunprogrammatūras modeļi | Loģikas kļūdas pielāgotā kodā un spraudņu mijiedarbībā |
Tādi ceļveži kā SANS Scanning WordPress Plugins for Vulnerabilities skaidri parāda, ka skenēšana ir speciālista darbība ar reālu metodiku, un OWASP tīmekļa drošības testēšanas ceļvedis uzskata statisko un dinamisko testēšanu (SAST un DAST) kā papildinošus slāņus, nevis aizvietotājus. Tīrs skenēšanas rezultāts vienkārši nozīmē, ka zināmie paraksti nesakrita; tas neko nepasaka par to, vai jūsu vietne patiešām ir droša.
Izmantojiet skenēšanu, lai ģenerētu potenciālos atklājumus, pēc tam manuāli pārbaudiet katru no tiem. Un pirms instalējat vēl vienu drošības skenēšanas spraudni, apsveriet, ka drošības spraudņu uzkrāšanās var atspēlēties un radīt aklās zonas. Ja atskaites tīrība kļūst svarīgāka par faktisko risku, jūs esat zaudējuši būtību.
Auditējiet lietotājus tā, kā tos uzskaita uzbrucējs
Neautentificētā uzbrukuma virsma saņem jūsu steidzamo uzmanību, bet autentificēti uzbrukumi ir pieejami arī uzbrucējiem — viņiem ir nepieciešami tikai akreditācijas dati. Lietotāji ir ceļš uz sistēmu, un jūsu lietotāju saraksts ir šī ceļa karte.
Jūsu WordPress lietotāju sarakstā, visticamāk, ir "admin" konts ar lietotājvārdu, piemēram, marketing, un paroli, piemēram, Marketing2020, bijušā ārštata darbinieka redaktora konts, kas nekad netika noņemts, un daži konti, kurus tik tikko atceraties, ka izveidojāt ārējiem piegādātājiem. Uzbrucēji izmanto publiskās e-pasta adreses un datu noplūžu datus, lai izveidotu kandidātu sarakstus, pēc tam izmēģina šos lietotājvārdus un paroles miljonos vietņu. Aizmirsts konts ar atkārtoti izmantotu paroli ir pilnīgi pietiekams pieteikšanās veids: viņiem nav jāuzlauž spraudņa ievainojamība, ja viņi var ienākt pa galvenajām durvīm.
Eksportējiet visu lietotāju sarakstu, atvēliet laiku tā pārskatīšanai un noņemiet vai pazeminiet kontus, kuriem vairs nav nepieciešama piekļuve. Pieprasiet divu faktoru autentifikāciju katram administratora kontam un mainiet jebkuru paroli, kas izskatās kā jūsu uzņēmuma nosaukuma variants. Pēc tam apsveriet minimālu tiesību struktūru: lielākajai daļai ikdienas satura redaktoru nepieciešama ne vairāk kā Redaktora loma — administratora lomas būtu jārezervē cilvēkiem, kuri faktiski instalē spraudņus vai maina kodu.
WordPress REST API pakļauj lietotāju ID ikvienam, tāpēc jūs nevarat pilnībā paslēpt lietotājvārdus. Bet jūs varat padarīt tos grūtāk uzminējamus, izvairoties no paredzamām nosaukumu konvencijām, un varat automātiski bloķēt acīmredzamus brutāla spēka mēģinājumus.
Meklējiet to, ko atstāj uzbrucēji
Kompromitācija nav viens mirklis; tas ir process. Ieejas punkts var tikt ielāpots, bet uzbrucējs, kurš izveidojis aizmugures durvis, joprojām saglabās piekļuvi pēc ievainojamības novēršanas. Noturības auditēšana atšķiras no ieejas auditēšanas.
Fastly drošības komanda rakstīja par aktīvu neautentificētu uzglabātu XSS izmantošanu WordPress spraudņos — skriptiem, kas ļauj uzbrucējam pārņemt sesiju no likumīga lietotāja pārlūkprogrammas. Neatkarīgi pētījumi no Invicti norāda uz PHP objektu injekciju pieaugumu — paņēmienu, kas bieži izvairās no uz parakstiem balstītiem skeneriem. Un augsta profila gadījumā WP2Shell pat WordPress kodolam bija RCE trūkumi ar publiskiem izmantošanas skriptiem. Neviens no šiem nav tas, ko vienkārša "zināmas ļaunprogrammatūras pārbaude" skenēšana ticami atklāj. Kopīgais ir tas, ka tie atstāj pēdas: papildu administratora lietotājs, PHP fails, kas augšupielādēts wp-content/uploads/, pieteikšanās 3:00 no jaunas IP adreses.
Vismaz reizi mēnesī pārskatiet piekļuves žurnālus, lai atrastu POST pieprasījumus uz .php failiem mapē uploads un administratora pieteikšanos no negaidītām vietām. Sekojiet lietotāju sarakstam, lai atrastu jaunus administratora kontus, kurus neesat izveidojis. Ja varat palaist failu integritātes monitoru, konfigurējiet to, lai tas brīdinātu par izmaiņām wp-admin un wp-includes; ja nē, vienas rindiņas failu modificēšanas laiku starpība ir pienācīgs zemu tehnoloģiju aizstājējs.
Žurnālu pārskatīšana rada viltus pozitīvus rezultātus. Triks ir definēt savu "normālā" bāzes līniju pirms incidenta, nevis pēc. Ja uzzināsiet, kā izskatās jūsu parastā trafika, anomālijas kļūs skaidrākas.
Uzrakstiet vienas lapas audita piezīmi, ko jūsu priekšnieks patiešām vēlas
Drošības padomi prezentācijas sanāksmes formātā ir bezvērtīgi, ja tie nepārvēršas prioritātēs. Mērķis nav pārliecināt priekšnieku, ka jums uzbrūk; tas ir parādīt, ka zināt, ko pārbaudījāt, ko izlabojāt un kāds lēmums vēl ir atklāts.
Kad vadītājs jautā "Vai mēs esam drošībā?", godīga atbilde nav viens vārds. Tā ir īsa stāstījuma forma: "Mēs pagājušajā nedēļā pārbaudījām spraudņu sarakstu un noņēmām četrus spraudņus, kurus neizmantojām. Mēs atradām vienu administratora kontu, kas piederēja bijušajam darbiniekam, un deaktivizējām to. Ir divi atklāti jautājumi: mums vēl jāizlemj, vai nomainīt mantotu spraudni, un mēs neesam ieviesuši 2FA vienam kontam. Mūsu nākamais pārskats pēc mēneša." Šī atbilde pārvērš jautājumu par bailēm jautājumā par procesu — un tā sniedz ne-tehniskam klausītājam kaut ko, ko viņš patiešām var pārstāstīt augstāk.
Pārbaudes sesijas beigās uzrakstiet vienas lapas audita piezīmi. Izmantojiet vienkāršu tabulu: pārbaudīts, izlabots, atklāts, nākamais pārskats. Vienkāršā valodā, nevis riska simbolos vai baiļu statistikā. Ja dodaties atvaļinājumā, piezīme kļūst par nodošanas dokumentu jebkuram citam, kam ir administratora piekļuve. Šī ir arī lieta, ko izvilksiet, kad priekšnieks pēc divām nedēļām pēkšņi jautās: "Vai mums viss ir kārtībā?". Ja tas kļūst par ikmēneša ritmu, jūs veicat proaktīvu drošības auditu, nevis vienreizēju skenēšanu.
Nepieblīvējiet piezīmi ar katru skenēšanas ievainojamības punktu skaitu. Mērķis ir parādīt, ka uzturat ritmu, nevis to, ka nakti kļuvāt par penetrācijas testētāju. Mierīga vienas lapas versija ir noderīgāka nekā satraucošs pilns ziņojums.
Visaugstāk aizsargātā WordPress vietne nav tā, kurā ir visvairāk spraudņu vai skaļākie skenēšanas ziņojumi; tā ir tā, kurā kāds ir pieņēmis apzinātus lēmumus par sasniedzamību, piekļuvi un noturību. Sāciet ar neautentificēto uzbrukuma virsmu, apgrieziet to, kas nav nepieciešams, uztveriet skenējumus kā potenciālos atklājumus, pārskatiet lietotāju lomas un plānojiet sekas. Ielāpojiet gudrāk, ne visu — un ļaujiet prioritizēšanai būt tam, ko aizstāvat nākamajā budžeta sarunā.
