(Varnostne) luknje naprodaj
Niso vsi hekerji plemeniti aktivisti, ki se zavzemajo za transparentnost in varnost ter vse ranljivosti javijo proizvajalcem in podrobnosti ne razkrivajo svetu, dokler niso popravljene. Niti niso vsi hekerji manijaki, ki želijo onesposobiti jedrske elektrarne in prebirati vojaške skrivnosti na domačih računalniki. Nekateri so zgolj oportunisti, ki odkrivajo in prodajajo varnostne ranljivosti, ki jih različne organizacije, države in kriminalno podzemlje bogato odkupujejo.
Pred štirimi leti je neimenovana hekerska skupina našla ranljivost v Applovem operacijskem sistemu iOS 9, ki je omogočala oddaljeni predvsem nadzora (in s tem tudi jailbreak) brez uporabnikove interakcije ali vednosti. Za svoje odkritje so bili nagrajeni z okroglim milijonom dolarjev, ki pa jih ni izplačal Apple, neprofitna organizacija ali nemara kakšna država, kot bi pričakovali. Nagrado je izplačalo zasebno podjetje Zerodium iz Washingtona, ki se ukvarja s kupovanjem, z zbiranjem in s preprodajo ranljivosti v programski opremi. Zerodium ranljivosti namreč še dražje prodaja naprej.
To ni bil prvi tovrstni primer. Leto pozneje je Zerodium za delujoč vdor v iPhone ponudil že poldrugi milijon dolarjev. Bogato nagrajujejo tudi ostale ranljivosti, denimo za neopazen vdor Android so ponujali 200.000 dolarjev, za že tako luknjičav Flash 80.000 dolarjev. Zerodium je bilo prvo podjetje, ki je leta 2015 javno objavilo celoten cenik, po katerem odkupujejo ranljivosti v večini priljubljene programske opreme. V današnji različici cene segajo od 10.000 dolarjev za izvajanje oddaljene kode (remote code execution) v Joomli ali phpBB ter do dveh milijonov dolarjev za oddaljeni, trajni jailbreak brez uporabnikove interakcije na iPhonu. Na spletni strani imajo v obliki dveh periodnih sistemov objavljenih 70 različnih kategorij, kupujejo pa seveda tudi zanimive ranljivosti za programe, ki jih ni na seznamu. Še pred desetletjem je bila zamisel o prodaji ranljivosti slišati kot znanstvena fantastika, danes pa je postala realnost z nakupovalnega seznama.
Zerodium je javno objavil cenik za odkup ranljivosti.
Ranljivosti zero-day
Tipična ranljivost ima življenjski cikel, ki ga sestavlja sedem dogodkov. Najprej se ranljivost rodi, ko jo proizvajalec zapiše v programsko kodo. Drugi, zelo pomemben dogodek je njeno odkritje, kar običajno sovpada z razvojem kode (ali pa vsaj delujočega koncepta) za njeno izrabo. Če proizvajalec ni obveščen o ranljivosti, nikoli ne nastopi tretja točka, to je njegova seznanitev z luknjo. Do tega trenutka se ranljivost imenuje zero-day, tj. ranljivost ničtega dne, ker proti njej ni učinkovite zaščite in ker je proizvajalcu znana nič dni.
Četrta prelomnica je javna objava ranljivosti, ki ji v petem koraku sledi vnos kode v knjižnice protivirusnih programov ter v šestem koraku izdaja popravka. Življenjska pot ranljivosti se sklene v sedmem koraku, ko uporabniki namestijo popravek oziroma posodobijo programsko opremo. Odgovorno razkritje pomeni, da je javnost o luknji obveščena šele tedaj, ko je proizvajalec že imel čas pripraviti popravek.
Ali je prekupčevanje z ranljivostmi legalno
Nepooblaščeno vdiranje v računalniške sisteme je v vsem razvitem svetu prepovedano, tudi pri nas. Slovenski kazenski zakon pa ima tudi zanimiv 306. člen, ki prepoveduje izdelovanje, posest, prodajo, uvoz, izvoz in ostale oblike zagotavljanja pripomočkov za vdor v informacijski sistem, če to počnemo z namenom storiti kaznivo dejanje. Sodne prakse na tem področju v Sloveniji ni.
V ZDA, ki je največji trg programske opreme in tudi ranljivosti, je prodaja informacij o znanih ranljivostih načelno zakonita, a obstaja cel kup izjem. Če ranljivost prodamo nekomu, ki namerava z njo storiti kaznivo dejanje (in v resnici je ranljivosti težko uporabljate kako drugače), je to nezakonito.
Prav tako ni zakonito vdiranje ali izsiljevanje. Kdor odkrije ranljivost in z njo potrka na vrata proizvajalca z zahtevo po nekem znesku (četudi je ta povsem razumen), se hitro lahko znajde v obtožnici za izsiljevanje. Prav tako lahko hekerji hitro prestopijo mejo zakona pri iskanju ranljivosti. Analiza kupljenih programov na lastnih računalnikih je dopustna, aktivno iskanje lukenj v postavljenih tujih sistemih pa seveda predstavlja vdor. Etično in najvarneje je odkrite ranljivosti prijaviti proizvajalcu v skladu z njegovim programom nagrajevanja. Prav tako je nezakonita prodaja narejenih orodij (exploit kits) za vdiranje v računalniške sisteme ali povzročanje škode.
Enostavnega odgovora ni tudi zato, ker lahko prodajalca preganja več držav: država, katere državljan je, država, v kateri izvede prodajo, in država, v kateri je tarča.
Največ so na sivem trgu seveda vredne ranljivosti, katerih obstoja proizvajalci programske opreme ne poznajo (zero-day). To pomeni, da ne razvijajo popravka in da lahko ranljivost potencialno izkoriščamo leta. To ni tako neverjetno, kot bi mislili. Leta 2017 so, na primer, v TLS odkrili 19 let staro ranljivost, leta 2010 pa v Windows 17 let staro luknjo v navideznem stroju za DOS. Omenjenih ranljivosti, tako se zdi, niso nikdar aktivno izrabljali, a to ne pomeni, da v današnjih programih ni drugih, starih ranljivosti, ki so jih zlikovci obdržali zase in jih s pridom izrabljajo.
Marsikdo predpostavlja, da je odprta koda zagotovilo, da ranljivosti ni, a to ne drži. Odprta koda pomeni le, da jo lahko vsakdo pogleda, ni pa nujno, da dejansko jo. Razlika je bistvena in kljub odprtosti kode poznamo posebne plačane preglede (audit), kot je bil primer odprtokodnega orodja za šifriranje VeraCrypt. Šele odtlej smo lahko resnično prepričani, da je orodje varno.
Če pregleda ni, se lahko zgodi, kar se je odprtokodni knjižnici GnuTLS. V njej so leta 2014 odkrili devet let staro luknjo, v OpenSSL pa zloglasnega hrošča HeartBleed. Bloomberg je pisal, da je luknjo izkoriščala vsaj ameriška agencija NSA, torej je mogoče sklepati, da jo je še kdo drug.
Žal pred ranljivostmi zero-day po definiciji ni učinkovitih rešitev, ker zanje ne vemo. Lahko si pomagamo s pasivno zaščito (dobrimi varnostnimi praksami, požarnimi zidovi, primerno segmentacijo sistemov in določanjem privilegijev), dolgoročno pa je še najbolj koristno, če raziskovalce motiviramo, da luknje odkrivajo in odgovorno prijavljajo.
Življenjski cikel ranljivosti.
Nagrajevanje najdenih hroščev
Podjetja, ki razvijajo programsko opremo, že zelo dolgo časa vedo, da kompleksne kode brez hroščev in lukenj ni. Kadar gre za varnostne ranljivosti, ki jih pred proizvajalcem odkrijejo hekerji in po jih možnosti začno izrabljajo, to ni le slaba publiciteta, temveč je lahko tudi resen problem. Ena izmed preprostih rešitev je nagrajevanje odkritih in odgovorno prijavljenih ranljivosti. Tem programom se pravi bug bounty in jih imajo danes vsa večja podjetja, čeprav ni bilo vedno tako. Dolgo časa so namreč podjetja vrhunske strokovnjake za ranljivosti raje poskušala zaposliti.
Prvi znani program nagrajevanja ranljivosti je imelo podjetje Hunter & Ready že leta 1983. Za prijavljene hrošče v operacijskem sistemu VRTX (Versatile Real-Time Executiv), ki je tekel na vgradnih sistemih, denimo Hubblovem teleskopu, so ponujali Volkswagnovega hrošča pod geslom Hrošč za hrošča.
Prvi znani program za nagrajevanje odkritih hroščev sega v leto 1983.
Množičnejši je bil Netscapov program, ki so ga zagnali leta 1995 in je prvi uporabil frazo bug bounty. Na voljo je bilo 50 tisoč dolarjev, ki so jih počasi delili za odkrite ranljivosti v (zdaj že izumrlem) brskalniku Netscape Navigator. Čeprav je to danes vsakdanja praksa, so nekateri vodje v Netscapu programu nasprotovali in inženir Jarrett Ridlinghafer je potreboval dlje časa, da je vse prepričal. Ostala podjetja pa so se temu pristopu ogibala še nekaj let.
Kdo bo koga
Ranljivosti v programski opremi odkrije tudi konkurenca, ki včasih ne izkoristi priložnosti za nagajanje. Posebej živahen odnos imata Microsoft in Google, ki redno odkrivata luknje v kodi drug drugega, potem pa tu in tam kakšno obelodanita, preden jo konkurent zakrpa.
Ni namreč predpisano, koliko časa mora odkritelj ranljivosti dati proizvajalci na voljo za izdajo popravka, preden sme nanj pritisniti tudi tako, da jo javno priobči na svetu. Google meni, da je 90 dni dovolj, in razkriva luknje po treh mesecih, Microsoftu pa včasih ne uspe tako hitro, ker popravki izhajajo enkrat mesečno. Microsoft je potem večkrat Googlu tudi vrnil, ko je izpostavil kakšno ranljivost v kakšni malo starejši (a še vedno izjemno popularni) različici Androida, ki je Google ni želel zakrpati, ker je pač popravljena v novi verziji. Toda na številne telefone najnovejše inačice Androida sploh ni mogoče namestiti.
Šele na prelomu tisočletja se jih je opogumilo več. Leta 2002 je tak program uvedel iDefense (kot posrednik za ostala podjetja), kmalu sta sledila še Mozilla Foundation in iDefensov konkurent TippingPoint. Ponujali so piškavih 500 dolarjev. Mozillin program teče še danes, vmes pa so zneski narasli do 5000 dolarjev za najhujše ranljivosti. TippingPoint je leta 2005 ustanovil ZDI (Zero Day Initiative), ki poteka danes in, na primer, organizira tekmovanje Pwn2Own, o katerem pišemo v sosednjem članku. Pwn2Own teče od leta 2007 in vsako leto pritegne številne hekerje. Razlog za njegovo ustanovitev je bilo razočaranje nad Applom, ki je včasih malomarno jemal varnost, zato so na prvem Pwn2Own napadali Mac OS X. ZDI je po več lastnikih danes v rokah TrendMicra.
Leta 2010 je Google ugotovil, da bi se izplačalo ponuditi nagrade za prijavljene ranljivosti v Googlovi in Chromiumovi kodi. Tistega leta so nagrade začela razpisovati tudi podjetja, ki se ne ukvarjajo primarno z razvojem programske kode, na primer Deutsche Post. Leto pozneje je sledil Facebook in do danes so se pridružili vsi veliki igralci.
Še leta 2013 je Yahoo menil, da so strokovnjaki pripravljeni delati zastonj in ranljivosti razkrivati povsem altruistično. Septembra tistega leta so v podjetju High-Tech Bridge odkrili vrsto ranljivosti XSS v Yahoojevi kodi, kar so podjetju sporočili. Nagradili so jih s kuponoma za 12,5 dolarja, ki ju je bilo moč unovčiti le v Yahoojevi trgovini z majicami, s skodelicami, čepicami ipd. To je na internetu sprožilo ogromno nezadovoljstva. Kmalu se je oglasil Ramses Martinez, ki je v Yahooju vodil oddelek za varnost, in pojasnil, da uradne politike sploh ni. Majice in kasneje kupone, ker so nekateri majice že imeli, je plačal s svojim denarjem, ker se mu je zdelo prav, da bi poleg uradnega elektronskega sporočila poslal še manjšo pozornost. Do konca leta je Yahoo ugotovil, da bo treba uvesti sistem nagrajevanja s plačilom, in to tudi storil.
Danes finančno nagrado za odkrito ranljivost ponuja več kot 500 podjetij, med katerimi so tudi Microsoft, Mozilla, Intel, Apache, Apple, Facebook, Google, HP, Twitter, Yahoo in drugi. Tudi višina finančnih nagrad se je zvišala. Microsoft je lani izplačal dva milijona dolarjev, najvišje izplačilo pa je znašalo 200.000 dolarjev. Google je lani izplačal 3,4 milijona dolarjev (skupno pa že 15 milijonov dolarjev), najvišja nagrada je znašala 41.000 dolarjev. Facebook je doslej izplačal 7,5 milijona dolarjev, največja posamična nagrada pa je bila lani 50.000 dolarjev. Včasih nagrade niso finančne. United Airlines je lani podaril milijon milj nizozemskemu študentu, ki je v njegovih sistemi odkril 20 resnih lukenj.
Podjetja so spoznala, da morajo biti s svojimi nagradami konkurenčna prekupčevalcem z ranljivostmi, ki jim ni težko ponuditi več sto tisoč dolarjev, v izjemnih primerih pa tudi milijon ali dva.
Črni trg
Pri prijavljanju napak proizvajalcem po programih bug bounty so odkritelji v resnici prepuščeni dobri volji podjetja. To lahko mirno ranljivost razglasi za že znano, manj pomembno ali poišče kakšen drug izgovor, da nagrade ne izplača. V takem primeru se odkritelj nima kam zateči. Da podjetje sploh začne razmišljati o izplačilu, vsi programi bug bounty najprej zahtevajo polno razkritje, kakršnokoli pogojevanje tega pa je izsiljevanje in kaznivo. Včasih uspe tudi to, kot na primer leta 2016 neimenovanemu hekerju, ki je z vdorom v Uber dobil podatke o 57 milijonih uporabnikov. V zameno za razkritje ranljivosti in izbris svoje kopije podatkov je zahteval 100.000 dolarjev, ki jih je Uber tudi izplačal. A v resnici podjetja v takih primerih največkrat pokličejo organe pregona.
Hekerji se zato pogosto obrnejo na sivi oziroma črni trg. V zadnjih petnajstih letih smo bili priče spremembi v organiziranosti, saj hekerji niso več osamljeni jezdeci, temveč se združujejo v skupine. Tudi trgi so postali učinkovitejši, razmere na njih pa zahtevnejše. Ko so leta decembra 2013 hekerji napadli verigo trgovin Target in ukradli bančne podatke 70 milijonov strank, so se ti v nekaj dneh pojavili na spletnih črnih tržnicah.
Ločiti je treba črni in sivi trg. Prvi so nezakonite tržnice, forumi in druga zbirališča, kjer se prodajajo orodja za vdore, botneti, napadi DDoS, storitve drugih napadov in ukradeno (prijavni podatki, osebni podatki, bančni podatki). Sodelovanje na črnem trgu je nezakonito. Po statistikah RAND Corporation je na črnem trgu 70 odstotkov posameznikov ali majhnih skupin, 20 odstotkov večjih združb, pet odstotkov teroristov, štiri odstotke državnih služb in odstotek aktivistov. V preteklosti je bilo denarno poslovanje večji problem, kjer so pogosto uporabljali mule (posameznike, ki so odstopili svoje transakcijske račune za prejem denarja), dandanes pa to vlogo bolje opravljajo kriptovalute.
Igralci na črnem trgu. Shema: RAND Corporation
Večina igralcev na črnem trgu prihaja iz Kitajske, Južne Amerike in vzhodne Evrope. Po kakovosti prednjači Rusija, zanimiv pa je tudi razrez glede na tarče. Medtem ko se azijske skupine osredotočajo na trgovce, se vzhodnoevropske skupine na finančne institucije. V zadnjem času se meje brišejo, skupine več sodelujejo in se lotevajo tudi področij, ki se jih včasih niso.
Komunikacija, ki je včasih potekala prek IRC, ICQ, Jaberrja, QQ in podobno, se je danes v glavnem preselila na forume, do katerih je dostop mogoč le prek omrežja Tor, in v šifrirane (end-to-end) pogovore v aplikacijah za hipno sporočanje. Angleščina tam ni univerzalni jezik, saj obstajajo ločeni forumi za angleško, rusko, kitajsko, nemško, vietnamsko govoreče skupine in druge. Medtem ko je pri vdorih najpogosteje uporabljana ruščina, je pri ribarjenju in drugih tehnikah družbenega inženiringa to angleščina.
O cenah na črnem trgu je težko dobiti realne podatke. Načelno so ti trgi precej učinkoviti, kar pomeni, da se cene hitro prilagajajo ponudbi in povpraševanju. Medtem ko posamezne kreditne kartice z visokim limitom stanejo nekaj deset dolarjev in hitro izgubljajo ceno, saj so običajno kmalu preklicane, gredo cene res dobrih ranljivosti v več deset ali sto tisoč dolarjev. Odvisno je od tega, ali se najde pravi kupec.
Zanimivo je, da na črnem trgu običajno ni veliko zero-day ranljivosti. Te so redke, dragocene in predvsem hitro pokvarljivo blago, saj jih neprevidno razkritje hitro spremeni v znane ranljivosti. Bistveno več pa je na črnem trgu half-day ranljivosti. O teh so bili avtorji programske opreme že obveščeni in so morda že izdali popravek, a ga večina uporabnikov še ni namestila. Običajno te ranljivosti, običajen malware ali ribarjenje povsem zadostujejo.
Sivi trg
Sivi trgi pa so po definiciji omejeni na legalno izmenjavo informacij o ranljivostih in načinih izrabe. Na njih sodelujejo proizvajalci programske opreme, ki kdaj odkupijo kakšno lastno ranljivost, posredniki (npr. Zerodium), ponudniki orodij za varovanje ter tudi obveščevalne službe in druge državne agencije. Raziskave kažejo, da se vrhunskim hekerjem bistveno bolj izplača prodajati ranljivosti podjetjem na sivem trgu kakor na črnem. Poleg tega, da je možnosti za prevaro bistveno manj, so s tem še na pravi strani zakona, lahko pa dobijo celo kakšno ponudbo za zaposlitev.
Komponente trgov ranljivosti
– Blago: digitalne dobrine z nizkimi stroški distribucije, ki pa ob razkrivanju hitro izgubijo vrednost, a ta ne pade povsem na ničlo.
– Valuta: posli se v glavnem poravnavajo s kriptovalutami, redkeje prek ukradenih kreditnih kartic. Vrednost pa je zaradi volatilnosti kriptovalut običajno denominirana v dolarjih.
– Trg: črne tržnice ali legalni sivi trg. Na njem pogosto sodelujejo državni organi.
– Ponudba: na vrhu piramide sedijo administratorji, pod njimi pa tehnični strokovnjaki, ki jim sledijo posredniki in prodajalci.
– Povpraševanje: kriminalci kupujejo na črnem trgu, podjetja in državne službe pa navadno na sivem trgu. Cene so nekajkrat višje od zneskov, ki jih ponujajo proizvajalci za odkrite ranljivosti v lastni kodi.
Zerodium je medijsko najbolj izpostavljeno podjetje, ki odkupuje ranljivosti, ni pa edino. Pred štirimi leti je zaslovelo že leta 2003 ustanovljeno milansko podjetje Hacking Team, ki se ukvarja s prodajo informacij o ranljivostih in hroščih vladam, organom pregona in podjetjem. Neznani hekerji so namreč vdrli v Hacking Team in na internetu objavili 400 gigabajtov podatkov: elektronsko pošto, račune, izvorno kodo itd. S tem so odstrli dotlej slabo poznan svet prodajanja ranljivosti.
Izkazalo se je, da je imel Hacking Team 70 aktivnih strank, med katerimi so bili tako napadalci kakor podjetja, ki se želijo braniti. Med prvimi so bili, denimo, FBI, CIA, turška policija, mehiška vlada, obveščevalna agencija Savdske Arabije in italijanska policija, med drugimi pa Deutsche Bank, British Telecom, Barclay's Bank itd.
Ko postane ranljivost znana, je v resnici kratek čas še bolj nevarna. Dokler uporabniki ne namestijo popravkov, so še vedno ranljivi. Raziskave pa kažejo, da se tedaj število kosov zlonamerne programske opreme za to ranljivost poveča za vsaj 200-krat, število napadov pa do 100.000-krat.
Uporaba
Motivi iskalcev in prodajalcev ranljivosti so torej jasni. Kaj pa konkretno z ranljivostmi naredijo kupci? NSA je znana po tem, da ranljivosti potihoma skladišči za prihodnjo rabo. S tem posredno ogroža vse, ker programska oprema ostaja nezakrpana, kar se lahko maščuje. To najlepše ilustrira zgodba o ranljivosti SMB, ki jo najdemo pod oznakama CVE-2017-0143 in CVE-2017-0144.
Symantec je letos maja razkril zgodbo o hekerski skupini Buckeye (poimenovana tudi APT3, Gothic Panda), ki najverjetneje dela za kitajsko vlado. Ranljivost je najprej odkrila ali na sivem trgu kupila NSA, najverjetneje pred letom 2016, česar uradno ne priznajo. Marca 2016 je do ranljivosti z vdorom v NSA prišla kitajska skupina Buckeye, ki jo je uporabljala za vohunjenje. Buckeye je ranljivost uporabljala za širjenje prisluškovalne opreme DoublePulsar, ki je nastala v NSA. Ni jasno, kako so jo Kitajci dobili. V poldrugem letu je Symantec po svetu zabeležil vsaj pet velikih vdorov (operaterji, univerze in inštituti v Belgiji, Hongkongu, Luksemburgu, Vietnamu in na Filipinih), kjer so uporabljali luknjo v SMB in DoublePulsar.
Aprila 2017 se je zgodil znameniti hek Shadow Brokers, ko je istoimenska skupina vdrla v NSA in na internetu objavila kopico izvorne kode, med njimi EternalBlue, EternalRomance, EternalSynergy in tudi DoublePulsar. Kako so vdrli v NSA, ni znano; bodisi jim je kodo nekdo predal bodisi so naleteli na zunanji nezaščiten strežnik. Microsoft je šele tik pred tem dobil opozorilo od NSA, da je ranljivost aktivna, in izdal popravek.
Kljub temu je Severna Koreja dva meseca pozneje napisala WannaCry, ki je pustošil po svetu, še mesec dni kasneje pa so Rusi izdelali Mimikatz, ki je v Ukrajini onesposobil 10 odstotkov računalnikov, kmalu pa se je še razširil. Ohromil je velikane, kot so Maersk, FedEx, Merck. Škode je bilo za 10 milijard dolarjev.
WannaCry se je širil z ranljivostjo, ki jo je poznala NSA in so jo v svet odnesli hekerji.
NSA je sicer tik pred javno objavo ranljivosti, ko je že bilo jasno, da so jo hekerji odnesli, Microsoftu pomagala zakrpati luknjo, a je bilo prepozno. Vsi računalniki niso bili posodobljeni pravočasno, zato sta se WannaCry in Mimikatz razširila kot ogenj.
Omenjena zgodba je med bolj nenavadnimi, saj običajne ranljivosti nimajo tako burnega življenja. Kaže pa, da je povsem mogoče, da proizvajalec programske opreme ne ve za luknjo, čeprav jo leta uporabljajo številne obveščevalne službe in kriminalci. Z ranljivostmi, ki so resnično poznane le enemu igralcu, je še slabše. Zanje morda nikoli ne izvemo. Vsi, ki skladiščijo ranljivosti za lastno uporabo (ofenzivno ali defenzivno) in o njih ne obveščajo proizvajalcev ter kasneje javnosti, so krivi, da smo vsi manj varni.