Koordinirano razkrivanje ranljivosti
Če ste odkrili tehnično ranljivost v spletni aplikaciji, kakšnem drugem programskem produktu ali omrežni napravi in ta pomeni varnostno tveganje, potem o tem obvestite Nacionalni odzivni center za kibernetsko varnost (SI-CERT). V tem primeru bo SI-CERT opravljal vlogo koordinatorja in predal potrebne informacije upravljalcem sistema ali razvijalcem, pri čemer ne bo razkril identitete prijavitelja. Neposredno razkritje ranljivosti še preden proizvajalec da na voljo popravke, lahko povzroči škodo uporabnikom produkta ali naprave.
SI-CERT uporablja model koordiniranega razkrivanja ranljivosti, kjer se v posameznem primeru stranke dogovorijo za razumen rok, v katerem lahko skrbnik sistema poskrbi za odstranitev ranljivosti z nadgradnjo, razvijalec pa lahko v tem časovnem roku popravljen produkt distribuira svojim strankam.
Prijavo podate po elektronski pošti na naslov cert@cert.si, pri čemer sledite enakim navodilom, kot za sporočanje incidenta. Pri razkritju ranljivosti podajte naslednje informacije (v kolikor so vam znane):
- točen spletni naslov, če gre za spletno aplikacijo,
- par IP naslov:vrata, če gre za strežniško aplikacijo,
- vrsta ranljivosti in kratek opis ozadja, kako ste ranljivost odkrili,
- ali želite ranljivost po preteku določenega roka javno objaviti.
Podrobneje o razkrivanju ranljivosti
Z digitalizacijo družbe narašča število naprav, povezanih v globalno omrežje, kot tudi število programskih aplikacij, ki obdelujejo različne podatke in jih posredujejo po omrežju. Vključitev informacijskih sistemov v proces delovanja s seboj pogosto prinese tudi napake in pomanjkljivosti, nekatere od teh pa se lahko izrazijo kot varnostne ranljivosti, ki ogrozijo delovanje aplikacij, vplivajo na naše delo in podatke. Zavedati se moramo namreč, da popolne zanesljivosti (in posledično tudi varnosti) programske in strojne opreme žal skoraj nikoli ne moremo zagotoviti. Dnevno so odkrite nove in nove ranljivosti, napak pa bi bilo misliti, da se to dogaja le neizkušenim razvijalcem aplikacij, saj vsi dobro poznamo mesečno nameščanje popravkov za operacijski sistem računalnika – veliko popravkov odpravlja prav varnostne ranljivosti.
Takorekoč celotna industrija proizvajalcev digitalnih rešitev je sprejela model odgovornega ali koordiniranega razkrivanja ranljivosti, s katerim se zmanjša škodljivi vpliv ranljivosti za prizadete uporabnike. Med procesom razkritja informacij o varnostnih ranljivostih različni deležniki včasih sledijo različnim nenapisanim ali neformalnim smernicam o tem, kako se med seboj povezujejo in izmenjujejo informacije. V posamičnem primeru se vpleteni morda sploh ne zavedajo, da kakršnekoli smernice obstajajo, nekateri posamezniki pa jih celo namerno zanemarjajo ali zaobidejo. V teh primerih so možne dodatne škodljive posledice, čas odpravljanja ranljivosti pa se lahko celo podaljša. Namen tega dokumenta je predstaviti smernice in priporočila za koordinacijo v primeru odgovornega razkrivanja ranljivosti in vključuje poročevalce ranljivosti, skrbnike sistemov, razvijalce ter nenazadnje tudi uporabnike.
Kaj je ranljivost?
Ranljivost je niz različnih pogojev, ki omogočajo kršitev varnostne politike. Ranljivost lahko povzročijo napake programske opreme, napačna konfiguracija ali nepričakovane interakcije med sistemi. Uspešno izkoriščanje ranljivosti ima lahko za posledico tehnična tveganja kot tudi tveganja, ki lahko ogrozijo celoten sistem. V sistemih za obdelavo informacij se lahko ranljivosti pokažejo v fazi načrtovanja, kot tudi kasneje v fazi produkcije.
NIST opredeljuje med drugim naslednje razlage pojma ranljivost:
- Slabost v informacijskem sistemu, varnostnih postopkih sistema, notranjem nadzoru ali izvajanju, ki bi ga lahko izkoristil ali sprožil kdorkoli.
- Slabost v sistemu, aplikacijah ali omrežju, ki je lahko predmet izkoriščanja ali zlorabe.
Ranljivost se razume neželena in ponavadi nenamerna značilnost programske ali strojne opreme, ki se lahko izkoristi in napadalcu omogoča izvaje dejanj izven načrtovanega namena. Vpliv takih ranljivosti je lahko različen: od nepooblaščenega dostopa do storitve ali sistema, do povzročanja izpada delovanja sistema in s tem povzročenih posledic.
Kaj je razkrivanje ranljivosti?
Razkrivanje ranljivosti lahko poteka v številnih oblikah, od ciljnega preizkušanja programske opreme do enostavne uporabe sistema s strani posameznika, ki opazi funkcionalnosti, ki se mu zdijo neustrezne. Da bi bila odkrita ranljivost lahko tudi uspešno odpravljena, pa mora imeti za posledico poročilo o razkritju.
Vrste razkritja
Poročanje ranljivosti predstavlja in opisuje model razkritja ranljivosti, pri čemer poznamo tri vrste poročanja odkrite ranljivosti.
Brez razkritja – Non-disclosure
Odkritje ranljivosti brez razkritja pomeni, da tisti, ki odkrije ranljivost, le-to obdrži zase in je ne deli z javnostjo, kot tudi ne s tistimi, pri katerih je bila ranljivost odkrita. Največkrat se tega poslužujejo “black hat” hackerji, ki potem takšno ranljivost izkoristijo za penetracijo v sistem in njeno izkoriščanje za lastno korist.
Razkritje v celoti – Full disclosure
Ko varnostni raziskovalec odkrije ranljivost, to v celoti objavi javnosti brez predhodnega obveščanja proizvajalca. Pri takšnem razkritju se pogosto da razbrati način izkoriščanja, kar storitev, opremo ali aplikacijo izpostavi širokemu izkoriščanju ranljivosti.
Koordinirano razkritje ranljivosti – Coordinated vulnerability disclosure
(Odgovorno razkrivanje – Responsible disclosure)
Koordinirano razkrivanje ranljivosti poznano tudi pod izrazom odgovorno, delno ali omejeno razkrivanje, pri čemer varnostni raziskovalec odkrito ranljivost sporoči razvijalcu, le-ta varnostno verzel odpravi, šele nato se ranljivost razkrije javnosti.
Kaj je koordinirano razkrivanje ranljivosti?
Koordinirano razkrivanje ranljivosti (CVD, Coordinated Vulnerability Disclosure) je proces zbiranja informacij s strani raziskovalcev, ki ranljivosti odkrivajo, koordiniranje izmenjave potrebnih informacij med strankami, ki se jih ranljivost tiče, ter nato tudi razkritje ranljivosti javnosti, ko je ta odpravljena.
Cilji koordiniranega razkrivanja ranljivosti so:
- Zagotoviti, da se ranljivost lahko identificira in učinkovito odpravi.
- Zmanjšanje tveganja za vse udeležene stranke, katerim bi ranljivost lahko povzročila škodo.
- Zagotoviti vsem vpletenim strankam dovolj informacij za ocenitev stanja.
- Omogočiti razvijalcem dovolj časa za razvoj ustrezno zaščite in popravkov, ter s tem bistveno zmanjšati tveganja za izkoriščanje ranljivosti.
Koordinirano razkrivanje ranljivosti predvideva, da oseba, ki odkrije ranljivost, to sporoči proizvajalcu, skrbniku sistema ali razvijalcu programske opreme, lahko neposredno, ali pa preko neodvisne tretje osebe, koordinatorja. Koordinirano razkrivanje je ustaljen postopek sodelovanja neodvisnih raziskovalcev pri izboljševanju zaščite računalniških sistemov in je del EU Direktive NIS2.
Kadar ranljivost razkriva osebne podatke, je potrebno uporabnike o tem nemudoma obvestiti, saj je po Splošni uredbi o varstvu podatkov (GDPR), ta je stopila v v veljavo 25.05.2018, njihova pravica biti obveščen, če so njihovi podatki ukradeni ali izgubljeni, dolžnost upravitelja teh podatkov pa je, da jih o tem obvesti. Ravno tako je potrebno o kraji podatkov, katere omogočajo izvedbo goljufije ali krajo identitete ter predstavlja resno tveganje za pravice in svoboščine posameznikov, obvestiti Informacijskega pooblaščenca RS. Upravljavec mora o kršitvi obvestiti Informacijskega pooblaščenca brez odlašanja, najkasneje pa v 72 urah po zaznani kršitvi.
Proces odgovornega razkrivanja ranljivosti
Osnove faze odgovornega razkrivanja ranljivosti, nekatere od teh faz se lahko v določenih situacijah tudi preskoči, odvisno od primera, so:
- Ranljivost. Nastane lahko med oblikovanjem, specifikacijo, razvojem, namestitvijo ali pa je del privzetega sistema.
- Odkritje ranljivosti. Eden ali več posameznikov, lahko tudi organizacija, odkrije napako med običajnim pregledom, po naključju ali pa je le-ta rezultat namenske analize in testiranja.
- Obvestilo o odkriti ranljivosti. Raziskovalec, ki je ranljivost odkril ali koordinator obvesti upravljalca sistema o odkriti ranljivosti, ter mu poda podrobne informacije. Koordinator v tem primeru prijavitelju odkrite ranljivosti zagotavlja anonimnost.
- Potrditev. Upravljalec sistema, kjer je bila ranljivost odkrita preveri in potrdi odkrito ranljivost.
- Odprava ranljivosti. Upravljalec sistema odkrite ranljivosti poskušajo le-to identificirati, ter razviti popravek, ki odpravijo ali zmanjšajo tveganje za izrabo odkrite ranljivosti.
- Objava ranljivosti. Upravljalec sistema, koordinator in poročevalec se dogovorijo za javno objavo informacij o odkriti ranljivosti sistema.
- Nadaljnji ukrepi. Upravljalec sistema, koordinator, poročevalec ali drugi posamezni varnostni raziskovalci, lahko opravijo dodatno analizo ranljivosti in kvaliteto izdane rešitve.
Vloge
Pri odgovornem razkrivanju ranljivosti se srečamo s sledečimi vlogami:
- Najditelj – je posameznik ali organizacija, ki identificira oziroma odkrije ranljivost in pripravi natančno poročilo o odkriti ranljivosti.
- Prijavitelj – je posameznik ali organizacija, ki o odkriti ranljivosti obvesti upravljalca sistema. Zelo pogosto je najditelj ranljivosti tudi prijavitelj.
- Koordinator – je posameznik ali organizacija, ki koordinira proces odgovornega razkrivanja, pri tem pa najditelju in prijavitelju nudi anonimnost.
- Upravljalec sistema – to je lahko proizvajalec, skrbnik nekega sistema ali razvijalec programske opreme, nenazadnje tudi upravljalec podatkov.
- Razvijalec – posameznik ali organizacija, ki izda popravek za odkrito ranljivost.
Odgovornosti najditelja / prijavitelja
- Najditelj ranljivosti naj po načelu odgovornega razkrivanja to prijavi neposredno upravljalcu sistema odkrite ranljivosti ali koordinatorju (SI-CERT). S tem ima najditelj tudi vlogo prijavitelja. S pomočjo koordinatorja v dogovoru z upravljalcem sistema, se lahko prijavitelj dogovori v kakšnem roku bo zaznano ranljivost morebiti razkril tretjim osebam ali javnosti.
- Če upravljalec sistema ne uspe odpraviti ranljivost v dogovorjenem časovnem roku, potem lahko upravljalec sistema zahteva podaljšanje časovnega roka za objavo ranljivosti, pri tem pa je prijavitelj dolžan to upoštevati.
- Prijavitelj lahko po pretečenem dogovorjenem roku za razkritje ranljivosti, v dogovoru s koordinatorjem in upravljalcem sistema, razkrije ranljivost tretjim osebam ali javnosti, pri čemer ne sme razkriti načina kako se lahko odkrita ranljivost izrabi.
- Če upravljalec sistema ne odpravi ranljivosti v dogovorjenem časovnem roku kot je bilo dogovorjeno in ne zahteva podaljšanja časovnega roka za odpravo ranljivosti, potem lahko prijavitelj, v dogovoru s koordinatorjem, razkrije odkrito ranljivost tretjim osebam in javnosti.
- Če prijavitelj ne upošteva načela odgovornega razkrivanja in odkrito ranljivost objavi, preden jo je upravljalec sistema uspel odpraviti, prijavitelj nosi posledice razkritja.
Odgovornosti koordinatorja
- Koordinator razkritja prijavo po morebitnem preverjanju posreduje upravljalcu sistema, na katerega se nanaša, pri čemer zakrije identiteto prijavitelja.
- Koordinator poskuša rešiti navzkrižja in tehnična nesoglasja, ki se pojavijo med prijaviteljem in upravljalcem sistema.
- Če se upravitelj sistema ne odziva, ali se zdi, da ne deluje v smeri odprave ranljivosti, potem koordinator po različnih komunikacijskih kanalih (el. pošta, telefonsko) poskuša prepričati upravitelja sistema v odpravo odkrite ranljivosti.
- Koordinator sodeluje s prijaviteljem in upraviteljem sistema, da se določi časovni okvir za odpravo odkrite ranljivosti ter določi datum, po katerem se ranljivost lahko razkrije tretjim osebam in javnosti.
- Pred dogovorjenim datumom za razkritje ranljivosti, prijavitelj in koordinator ne smeta razkriti narave ranljivosti in drugih okoliščin odkritja ranljivosti tretjim osebam ali javnosti.
- Če upravljalec sistema zahteva podaljšanje časovnega roka za odpravo ranljivosti, je to potrebno upoštevati, na strani koordinatorja pa je, da se s prijaviteljem dogovori za podaljšanje datuma, po katerem se ranljivost lahko razkrije tretjim osebam in javnosti.
- Koordinator varuje anonimnost prijavitelja in lahko razkrije identiteto prijavitelja le na podlagi odredbe sodišča.
Odgovornosti upravljalca sistema
- Upravljalec sistema sodeluje s prijaviteljem oziroma koordinatorjem, kjer se dogovori za datum do katerega bo odkrito ranljivost odpravil.
- Upravljalec lahko zaprosi prijavitelja oziroma koordinatorja za podaljšanje časovnega okvirja za odpravo ranljivosti do 30 dni. V tem času prijavitelj niti koordinator ne smeta objaviti podrobnosti odkrite ranljivosti tretjim osebam in javnosti.
- Če prijavitelj ne sledi načelu odgovornega razkrivanja in javno objavi odkrito ranljivost, potem se upravitelj sam odloči kako bo v tem primeru ukrepal. Koordinator v tem primeru ne prevzema odgovornosti za dejanja prijavitelja. Vsekakor pa je pravilno, da upravitelj sistema poda odgovor, ter javnost v tem primeru opozori, da so z ranljivostjo seznanjeni in pripravljajo rešitev.
- Upravljalec sistema mora ustrezno digitalno podpisati vse popravke, da se s tem zagotovi legitimnost izdanega popravka za odkrito ranljivost.
- Upravljalec sistema po izdanem popravku za odkrito ranljivost o tem obvesti javnost.
Najditelj odkrite ranljivosti, ki je v večini primerov tudi prijavitelj, pripravi podrobno poročilo. Prijavitelj neposredno ali preko koordinatorja uskladi predajo informacij in časovne okvire za izdelavo popravkov in nadgradenj. Hkrati se obe strani uskladita tudi glede časovnega roka objav ranljivosti. Obstoječi dokumenti o tem navajajo roke 30, 45 ali celo 60 dni za odpravo napak3. Vse stranke v postopku se tudi dogovorijo za načine objave ranljivosti. Prijavitelj lahko o ranljivosti poroča direktno upravljavcu sistema na katerem je bila ranljivost odkrita, lahko pa to prijavi koordinatorju odgovornega razkritja.
V procesu odgovornega razkrivanja lahko vlogo koordinatorja prevzame SI-CERT in prijavitelju zagotovi anonimnost.
Tovrstno odgovorno razkrivanje ščiti tudi prijavitelja samega in mu omogoča anonimnost. To, da se priznava koristnost postopkov odgovornega razkrivanja, nikakor ne pomeni, da lahko kdorkoli brez posledic poskuša vdreti v katerikoli sistem na omrežju, izrablja najdene ranljivosti in objavlja neupravičeno pridobljene podatke. Raziskovalci ranljivosti lahko ob neustrezni predhodni pripravi namreč prestopijo mejo, ko skrbnik sistema ne bo mogel prepoznati, da ne gre za zlonameren vdor in bo zahteval ustrezno ukrepanje organov pregona. Prijavitelj mora tudi vzeti v obzir posledice poskušanj izrabe ranljivosti, med katerimi je lahko tudi nesorazmerna obremenitev sistema in izpad delovanja aplikacij.
Ko je ranljivost odpravljena, upravljavec sistema o tem obvesti koordinatorja, ta pa o tem poroča prijavitelju.
Politika razkrivanja (RFC 9116)
Priporočljivo je, da večje organizacije objavijo politike razkrivanja ranljivosti. S tem omogočijo najditelju in koordinatorju razkritja jasno določena pravila razkrivanja, med drugim elektronski naslov za sporočanje in morebitne druge pogoje ali omejitve. Kontaktne podatke lahko organizacije objavijo na svojih spletnih mestih v datoteki security.txt, ki je spisana v skladu s priporočili RFC 9116.
Bug Bounty
Bug Bounty je program, ki ga ponujajo nekatere organizacije, s katerim se vzpodbuja iskanje ranljivosti. Namen programa je, da varnostni raziskovalci odkrito ranljivost najprej poročajo podjetju, ta pa ranljivost v dogovorjenem času odpravi, nato pa se ranljivost skupaj z objavljenimi posodobitvami tudi objaviji. Pri tem je običajno tudi javno navedeno kdo je ranljivost odkril. Za odkrito ranljivost je varnostni raziskovalec ustrezno nagrajen. Nagrade za so različne, odvisno od pravil, ki jih ponuja podjetje, ki tak program omogoča. Organizacije v pravilih definirajo izdelke ali storitve, ki so predmet testiranja, ti pa so lahko spletne strani, namizne aplikacije, IoT naprave… Bug Bounty programe imajo številne organizacije med njimi tudi Google, Facebook, Microsoft, Mozilla…
Viri
- Nacionalni inštitut za standarda in tehnologijo (ZDA): https://www.nist.gov/,
- IP-RS: Prijava kršitev varnosti,
- Direktiva NIS2,
- NCSC-NL: Coordinated Vulnerability Disclosure Guideline.