Če vas zanima kibernetska varnost, ste zagotovo že slišali za izraz »ranljivost programske opreme«. Vendar se lahko hitro zgodi, da se nam ta izraz danes včasih zdi samoumeven. Zato sem se odločil napisati ta članek, v katerem bom ponovno pregledal terminologijo, ki se skriva za ranljivostmi programske opreme, in kako te vplivajo na področje kibernetskih groženj.
Kaj so ranljivosti v programski opremi?
Predvidevam, da se precej dobro zavedamo besede ranljivost in njenega pomena. Brez iskanja bi rekel, da je ranljivost programske opreme posledica napake v kodi, ki omogoča nenamerno obnašanje.
Zdaj si bom izposodil definicijo od NIST, ki ima enako opredelitev ranljivosti v programski opremi:
To je varnostna napaka, pomanjkljivost ali slabost, ki je bila ugotovljena v programski kodi in jo lahko izkoristi napadalec (vir grožnje).
V redu, to je smiselno – zdaj bi torej morali vedeti, zaradi česa je programska oprema ranljiva. Vendar kako zdaj to ranljivost izkoristiti in kaj točno je izkoriščanje? To bomo izvedeli s pomočjo življenjskega cikla ranljivosti. Upoštevajte, da tu ne bomo razpravljali o življenjskem ciklu upravljanja ranljivosti.
Življenjski cikel ranljivosti
Pri opisovanju življenjskega cikla ranljivosti lahko pride do različnih interpretacij, vendar bom s svojim pristopom prikazal različne faze življenjskega cikla ranljivosti. Ni nujno, da si sledijo po vrstnem redu, temveč so bolj opisne narave, kako ta življenjski cikel deluje. Začnimo z opredelitvijo različnih stopenj.
- Razkritje ranljivosti
- Popravljena ranljivost
- Na voljo je preizkusna koda koncepta
- Razpoložljiva koda za izkoriščanje
- Uporaba orožja
Če bi večina ranljivosti sledila stopnjam, opisanim na zgornjem seznamu, bi bil kibernetski svet bistveno boljši. Žal pa ta vrstni red ne velja vedno. Poglobimo se v vsako posamezno stopnjo.
Razkritje ranljivosti
Obstajata dve različni vrsti razkritja ranljivosti.
- Ena je seveda javna, pri kateri proizvajalec običajno poroča o ranljivosti. To se pogosto zgodi, ko je popravek za odpravo pomanjkljivosti pripravljen za objavo.
- Druga je tista, za katero ne slišimo – to je faza, ko ranljivost odkrije, upajmo, dober akter, ki jo sporoči proizvajalcu. Lahko pa se zgodi, da akterji groženj odkrijejo ranljivost, ki se lahko nato razkrije na temnem spletu za prodajo.
Obstaja tudi srednja stopnja, ko je proizvajalec obveščen o ranljivosti, vendar traja zelo dolgo, preden lahko zagotovi popravek zanjo (če sploh), in tako jo odkrije akter grožnje ali pa informacije nekako uidejo v javnost.
Popravljena ranljivost
Faza, ko proizvajalec, ki je lastnik ranljivega izdelka, izda popravek za napako, ki povzroča ranljivost. To lahko traja nekaj dni od razkritja, bolj verjetno pa tedne ali več mesecev.
Koda za dokazovanje koncepta
Koda za dokazovanje koncepta (ali Proof of Concept, PoC) je eksperimentalna koda, ki lahko izkorišča razkrito ranljivost. Pomembno je razlikovati med kodami PoC in dejanskimi kodami za izkoriščanje. Kode PoC so pogosto tudi orodje za prevaro tistih, ki želijo kupiti kodo za izkoriščanje določene ranljivosti, saj večina od njih dejansko ne deluje.
Izkoriščanje kode
Na tej stopnji imamo pravi posel. Izkoriščanje je preizkušena in dokazano delujoča koda za zlorabo pomanjkljivosti v programski opremi. Ni nujno, da je zlonamerna; to je odvisno od načina uporabe tega orodja/kode.
Oborožitev
Oborožitev je faza v življenjskem ciklu ranljivosti, ki nastopi na koncu, ko akterji groženj pričnejo uporabljati izkoriščevalsko kodo kot orožje. Izkoriščajoča koda sama po sebi ne počne ničesar; izvesti jo je treba v določenem okolju z več različnimi parametri in zahtevami. Zato obstaja faza oboroževanja, kjer se to tudi zgodi.
Dobro, zdaj, ko smo seznanjeni z življenjskim ciklom ranljivosti, si oglejmo primer, ki sem ga pripravil. Ogledali si bomo ranljivost CVE-2023-3436, bolj znano kot ranljivost MOVEit File Transfer, ki jo je in jo še vedno pogosto izkorišča zloglasna skupina CL0P Ransomware.
Življenjski cikel ranljivosti pri prenosu datotek MOVEit
V nadaljevanju bomo prikazali časovni prikaz, ki prikazuje različne faze življenjskega cikla ranljivosti, opisane v prejšnjem poglavju. Opozoriti je treba, da zaradi obsežnih virov obveščevalnih podatkov ne jemljite vsakega kazalnika na grafu kot samoumevnega; poskusite prezreti nekatere očitno izstopajoče vrednosti in se osredotočiti na večino.
Kot je razvidno, sta v primeru CVE-2023-3436 razkritje in popravek na voljo približno istočasno, kar je pričakovano.
Vendar pa želim vašo pozornost usmeriti na fazo izkoriščanja in uporabe orožja. Jasno lahko opazite, da je bilo pred razkritjem ranljivosti in popravkom nekaj dejavnosti z razvojem kode za izkoriščanje in uporabo orožja.
Če se spomnite na razmah kampanje skupine CL0P Ransomware Group, ki je izkoriščala to ranljivost, si morate zapomniti, da se je tudi njihova kampanja izkoriščanja začela pred datumom razkritja.
S pomočjo takšnih podatkov o življenjskem ciklu ranljivosti lahko bolje razumemo, da se izkoriščanje in oboroževanje pogosto lahko zgodita veliko pred razkritjem in popravki – vendar je to pogosto skrito pred javnostjo, saj se dogaja na temnem spletu in podzemnih forumih, kjer lahko potekajo takšni pogovori in prodaja taktik izkoriščanj.