Varnost

10 Vrste varnostnih ranljivosti

10 Vrste varnostnih ranljivosti
Nenamerna ali naključna napaka v programski kodi ali katerem koli sistemu, zaradi katerega je potencialno uporabna v smislu dostopa do nelegitimnih uporabnikov, zlonamernega vedenja, kot so virusi, trojanci, črvi ali katera koli druga zlonamerna programska oprema, se imenuje varnostna ranljivost. Uporaba že izkoriščene programske opreme ali uporaba šibkih in privzetih gesel povzroči tudi, da sistem postane ranljiv za zunanji svet. Te vrste varnostnih ranljivosti zahtevajo popravek, da hekerji preprečijo, da bi na njih ponovno uporabili že uporabljene podvige, da bi pridobili nepooblaščen dostop do sistema. Varnostna ranljivost, imenovana tudi varnostna luknja ali šibkost, je napaka, napaka ali napaka pri izvajanju kode, zasnove in arhitekture spletne aplikacije in strežnikov, kar lahko, če ni naslovljeno, povzroči ogrožanje sistema in povzroči celotno omrežje ranljivo za napad. Osebe, ki se bodo okužile, vključujejo lastnika aplikacije, uporabnike aplikacije in katero koli drugo osebo, ki se zanaša na to aplikacijo. Poglejmo si najnevarnejša in najpogostejša varnostna tveganja za spletne aplikacije.

Kazalo

  1. Vbrizgavanje zbirke podatkov
  2. Broken Authentication
  3. Izpostavljenost občutljivim podatkom
  4. Zunanje entitete XML (XEE)
  5. Nadzor dostopa prekinjen
  6. Napačna konfiguracija
  7. Medsektorsko skriptiranje (XSS)
  8. Negotova dezerializacija
  9. Uporaba komponent z znanimi ranljivostmi
  10. Nezadostno beleženje in spremljanje

Vbrizgavanje zbirke podatkov:

V primeru pošiljanja nezaupljivih kosov podatkov tolmaču kot del ukaza skozi katero koli področje, ki zajema uporabniški vnos i.Pri vnosu obrazca ali katerem koli drugem območju za oddajo podatkov se pojavijo napake pri vbrizgavanju. Zlonamerne poizvedbe napadalca lahko tolmača privedejo do izvajanja ukazov, ki lahko prikažejo zaupne podatke, za katere uporabnik nima dovoljenja za ogled. Na primer pri napadu z vbrizgavanjem SQL, ko vnos obrazca ni pravilno saniran, lahko napadalec vstopi v bazo podatkov SQL in dostopa do njene vsebine brez dovoljenja, samo tako, da vnese kodo zlonamerne baze podatkov SQL v obliki, ki pričakuje odprto besedilo. Vsako vrsto polja, ki zajema uporabnikov vnos, je mogoče injicirati i.e parametri, spremenljivke okolja, vse spletne storitve itd.

Aplikacija je ranljiva za napad z vbrizgom, kadar podatki, ki jih posreduje uporabnik, niso sanirani in potrjeni z uporabo dinamičnih poizvedb brez ubežajočega konteksta in neposredne uporabe sovražnih podatkov. Napake vbrizgavanja je mogoče zlahka odkriti s preučevanjem kode in z uporabo avtomatiziranih orodij, kot so optični bralniki in mešalniki. Da bi preprečili napade vbrizgavanja, lahko uporabimo nekaj ukrepov, na primer ločitev podatkov od ukazov in poizvedb, uporabo varnega API-ja, ki nudi parametriziran vmesnik, uporabo validacije vnosa na belem seznamu s strani orodij, kot je Snort, pobeg posebnih znakov z uporabo posebne sintakse pobega itd.

Napad zaradi vbrizgavanja lahko privede do velike izgube podatkov, razkritja zaupnih informacij, zavrnitve dostopa in celo do popolnega prevzema aplikacije. Nekatere kontrolnike SQL, kot je LIMIT, lahko uporabimo za nadzor velike količine izgube podatkov v primeru napada. Nekatere vrste napadov vbrizgavanja so napadi SQL, OS, NoSQL, LDAP.

Zlomljeno preverjanje pristnosti:

Napadalci lahko dostopajo do uporabniških računov in celo ogrozijo celoten gostiteljski sistem prek skrbniških računov z uporabo ranljivosti v sistemih za preverjanje pristnosti. Napake pri preverjanju pristnosti omogočajo napadalcu, da ogrozi gesla, žetone sej, ključe za preverjanje pristnosti in jih je mogoče povezati z drugimi napadi, ki lahko začasno in v nekaterih primerih trajno privedejo do nepooblaščenega dostopa do katerega koli drugega uporabniškega računa ali seje. Recimo, da ima uporabnik seznam besed ali slovar milijonov veljavnih uporabniških imen in gesel, pridobljenih med kršitvijo. V izjemno krajšem času jih lahko uporablja enega za drugim z uporabo avtomatiziranih orodij in skriptov v prijavnem sistemu, da ugotovi, ali kdo deluje. Slaba izvedba upravljanja identitete in nadzora dostopa vodi do ranljivosti, kot je prekinjeno preverjanje pristnosti.

Aplikacija je ranljiva za avtentikacijski napad, kadar dovoljuje preizkušanje različnih uporabniških imen in gesel, dovoljuje slovarske napade ali napade s silo brez kakršne koli obrambne strategije, uporablja enostavna, privzeta gesla ali gesla, ki so uhajala ob kakršni koli kršitvi, izpostavlja ID-je sej v URL-ju, uporablja slaba shema za obnovitev gesla, uporablja vzorec piškotkov. Zlomljeno preverjanje pristnosti je mogoče enostavno izkoristiti z uporabo preprostih orodij za silovito forsiranje in slovarske napade z dobrim slovarjem. Tovrstne napade je mogoče preprečiti z uporabo večfaktorskih sistemov za preverjanje pristnosti z izvajanjem šibkih preverjanj gesel z zagonom gesla skozi bazo podatkov o slabih geslih, z neuporabo privzetih poverilnic, z usklajevanjem politike zapletenosti gesel, z uporabo dobre strani strežnika upravitelj sej, ki po prijavi ustvari nov naključni id seje itd.

Poškodovana ranljivost preverjanja pristnosti lahko povzroči ogrožanje nekaj uporabniških računov in skrbniškega računa, kar je vse, kar mora napadalec ogrožati sistem. Te vrste napadov vodijo do kraje identitete, goljufij na področju socialne varnosti, pranja denarja in razkritja visoko zaupnih informacij. Napadi vključujejo slovarske napade, vsiljevanje grobih oblik, ugrabitev sej in napade na upravljanje sej.

Izpostavljenost občutljivim podatkom:

Včasih spletne aplikacije ne ščitijo občutljivih podatkov in informacij, kot so gesla, poverilnice baze podatkov itd. Te šibko zaščitene poverilnice lahko napadalec zlahka ukrade ali spremeni in jih uporabi v nezakonite namene. Občutljivi podatki bi morali biti šifrirani med počitkom ali med prevozom in imeti dodatno varnostno plast, sicer jih napadalci lahko ukradejo. Napadalci si lahko priskrbijo občutljive izpostavljene podatke in ukradejo zgoščene ali izbrisane besedilne podatke uporabnikov in podatkovnih zbirk s strežnika ali spletnega brskalnika. Če na primer baza podatkov gesel uporablja neslane ali preproste zgoščevalne znake za shranjevanje gesel, lahko napaka pri nalaganju datotek napadalcu omogoči, da pridobi bazo podatkov z gesli, kar bo povzročilo izpostavljenost vseh gesel z mavrično tabelo vnaprej izračunanih zgoščenk.

Glavna napaka ni le v tem, da podatki niso šifrirani, tudi če so šifrirani, ampak lahko šibka generacija ključev, šibki algoritmi zgoščevanja, šibka uporaba šifre povzročijo tudi te vrste enega najpogostejših napadov. Da bi preprečili tovrstne napade, najprej razvrstite, katere podatke lahko v skladu z zakoni o zasebnosti obravnavate kot občutljive, in uporabite nadzor po klasifikaciji. Poskusite, da ne shranjujete nobenih tajnih podatkov, ki jih ne potrebujete, in jih sperite takoj, ko jih uporabite. Za podatke v prenosu jih šifrirajte z varnimi protokoli i.e TLS s šiframi PFS itd.

Te vrste ranljivosti lahko privedejo do izpostavljenosti zelo občutljivih informacij, kot so poverilnice na kreditnih karticah, zdravstvene evidence, gesla in kateri koli drugi osebni podatki, ki lahko vodijo do kraje identitete in bančne prevare itd.

Zunanje entitete XML (XEE):

Slabo konfigurirani procesorji XML obdelujejo reference zunanjih entitet znotraj dokumentov XML. Te zunanje entitete lahko uporabite za pridobivanje podatkov notranjih datotek, kot je / etc / passwd datoteko ali za izvajanje drugih zlonamernih nalog.  Ranljive procesorje XML je mogoče enostavno izkoristiti, če lahko napadalec naloži dokument XML ali vključi XML itd. Te ranljive entitete XML je mogoče odkriti z orodji SAST in DAST ali ročno s pregledom odvisnosti in konfiguracij.

Spletna aplikacija je ranljiva za napad XEE zaradi številnih razlogov, na primer če aplikacija sprejema neposreden vnos XML iz nezaupljivih virov, so v aplikaciji omogočene definicije vrste dokumenta (DTD), aplikacija uporablja SAML za obdelavo identitete, saj SAML za identifikacijo uporablja XML vstavki itd. Napade XEE lahko omilimo tako, da se izognemo serializaciji občutljivih podatkov z uporabo manj zapletenih formatov podatkov i.e JSON, krpanje procesorjev XML, aplikacija trenutno uporablja in celo knjižnice, onemogoča DTD-je v vseh razčlenjevalcih XML, potrjuje funkcionalnost nalaganja datotek XML s preverjanjem XSD itd.

Aplikacija, ki je ranljiva za te vrste napadov, lahko povzroči napad DOS, napad Billion Laughs, skeniranje notranjih sistemov, pregledovanje notranjih vrat, izvajanje oddaljenega ukaza, kar ima za posledico vpliv na vse podatke aplikacije.

Nadzor dostopa prekinjen:

Nadzor dostopa daje uporabnikom privilegije za izvajanje določenih nalog. Slaba ranljivost nadzora dostopa se zgodi, ko uporabniki niso pravilno omejeni pri nalogah, ki jih lahko opravljajo. Napadalci lahko izkoristijo to ranljivost, ki ima lahko za posledico dostop do nepooblaščenih funkcij ali informacij. Recimo, da spletna aplikacija omogoča uporabniku, da spremeni račun, iz katerega je prijavljen, tako da spremeni URL v račun drugega uporabnika brez nadaljnjega preverjanja.  Izkoriščanje ranljivosti nadzora dostopa je napad katerega koli napadalca; to ranljivost je mogoče najti ročno ter z orodji SAFT in DAFT. Te ranljivosti obstajajo zaradi premajhnega testiranja in samodejnega zaznavanja spletnih aplikacij, čeprav je najboljši način, da jih poiščemo, ročno.

Ranljivosti vsebujejo stopnjevanje pravic i.če delate kot uporabnik, ki ga niste, ali kot skrbnik, medtem ko ste uporabnik, obidete preverjanja nadzora dostopa samo s spreminjanjem URL-ja ali spreminjanjem stanja aplikacije, manipulacijo z metapodatki, kar omogoča spreminjanje primarnega ključa kot primarnega ključa drugega uporabnika, itd. Da bi preprečili tovrstne napade, je treba v strežniško kodo implementirati mehanizme nadzora dostopa, kjer napadalci ne morejo spremeniti kontrolnikov dostopa. Za ublažitev tovrstnih napadov je treba zagotoviti uvedbo edinstvenih omejitev poslovanja aplikacij s pomočjo modelov domen, onemogočanje navedbe imenikov strežnikov, skrbniškega opozorila ob ponavljajočih se neuspelih poskusih prijave, razveljavitve žetonov JWT po odjavi.

Napadalci lahko delujejo kot drug uporabnik ali skrbnik, ki uporablja to ranljivost za izvajanje zlonamernih nalog, kot je ustvarjanje, brisanje in spreminjanje zapisov itd. Če podatki niso zaščiteni niti po kršitvi, lahko pride do velike izgube podatkov.

Napačna konfiguracija varnosti:

Najpogostejša ranljivost je napačna konfiguracija varnosti. Glavni razlog za ranljivost je uporaba privzete konfiguracije, nepopolna konfiguracija, konfiguracije Adhoc, slabo konfigurirane glave HTTP in podrobna sporočila o napakah, ki vsebujejo več informacij, kot bi jih uporabnik dejansko moral vedeti. Na kateri koli ravni spletne aplikacije lahko pride do napačnih konfiguracij i.e baza podatkov, spletni strežnik, aplikacijski strežnik, omrežne storitve itd. Napadalci lahko izkoristijo nepokrite sisteme ali dostopajo do nezaščitenih datotek in imenikov, da sistem nepooblaščeno zadržijo. Na primer, pretirano podrobna sporočila o napakah, ki napadalec pomagajo prepoznati ranljivosti v aplikacijskem sistemu in način njegovega delovanja. Za odkrivanje tovrstnih varnostnih napak lahko uporabite avtomatizirana orodja in optične bralnike.

Spletna aplikacija vsebuje tovrstno ranljivost, če v katerem koli delu aplikacije manjka ukrepov za utrjevanje varnosti, so odprta nepotrebna vrata ali omogočajo nepotrebne funkcije, uporabljena so privzeta gesla, obdelovanje napak napadalcu razkrije informativne napake in uporablja nepopravljena ali zastarela varnostna programska oprema itd. To je mogoče preprečiti z odstranitvijo nepotrebnih lastnosti kode, tj.minimalna platforma brez nepotrebnih funkcij, dokumentacije itd., ki omogoča nalogo za posodobitev in popravljanje varnostnih lukenj kot del procesov upravljanja popravkov, uporaba postopka za preverjanje učinkovitosti sprejetih varnostnih ukrepov, uporaba ponovljivega postopka utrjevanja enostavno je uvesti drugo okolje, ki je pravilno zaklenjeno.

Te vrste ranljivosti ali pomanjkljivosti omogočajo napadalcu nepooblaščen dostop do sistemskih podatkov, kar vodi do popolne ogroženosti sistema.

Cross-Site Scripting (XSS):

Ranljivosti XSS se pojavijo v trenutku, ko spletna aplikacija vključi nezaupljive podatke na novo stran spletnega mesta brez zakonite odobritve ali ubeža ali pa osveži trenutno stran spletnega mesta s podatki, ki jih zagotovi odjemalec, z uporabo API-ja brskalnika, ki lahko ustvari HTML ali JavaScript.  Napake XSS se pojavijo, če spletno mesto uporabniku dovoli, da v kodo URL doda kodo po meri, ki jo lahko vidijo drugi uporabniki. Te napake se uporabljajo za zagon zlonamerne kode JavaScript v ciljnem brskalniku. Recimo, da lahko napadalec pošlje žrtvi povezavo do spletne strani katerega koli podjetja. V to povezavo je lahko vdelana nekaj zlonamerne kode JavaScript. Če spletna stran banke ni primerno zaščitena pred napadi XSS, se ob kliku na povezavo zlonamerna koda zažene v brskalniku žrtve.

Cross-Site Scripting je varnostna ranljivost, ki je prisotna v skoraj ⅔ spletnih aplikacij. Aplikacija je ranljiva za XSS, če v aplikaciji shrani nesenzificiran uporabniški vnos, ki ga lahko vidi drug uporabnik, z uporabo struktur JavaScript, aplikacije z eno stranjo in API-ji, ki na strani močno vključujejo informacije, ki jih nadzoruje napadalec, so nemočni pred DOM XSS. XSS napade lahko omilimo z uporabo ogrodja, ki pobegne in sanira vnos XSS po naravi, kot je React JS itd., Z učenjem omejitev okvirov in njihovo pokrivanje z lastnimi primeri, izogibanje nepotrebnim in nezaupljivim podatkom HTML povsod i.e v atributih HTML, URI, Javascript itd., uporaba kontekstno občutljivega kodiranja v primeru spreminjanja dokumenta na strani odjemalca itd.

Napadi, ki temeljijo na XSS, so treh vrst i.e Odraženi XSS, DOM XSS in shranjeni XSS. Vse vrste teh napadov imajo velik vpliv, vendar je v primeru shranjenega XSS učinek še večji i.e krajo poverilnic, pošiljanje zlonamerne programske opreme žrtvi itd.

Nevarna deserializacija:

Serializacija podatkov pomeni jemanje predmetov in njihovo pretvorbo v katero koli obliko, tako da jih je mogoče kasneje uporabiti za druge namene, medtem ko deserializacija podatkov pomeni nasprotno od tega. Deserializacija razpakira te serializirane podatke za uporabo aplikacij. Nevarna deserializacija pomeni popuščanje podatkov, ki so bili serializirani tik pred tem, da bodo tik pred razpakiranjem ali deserializacijo.  Nevarna deserializacija vodi do oddaljenega izvajanja kode in se uporablja za izvajanje drugih nalog v zlonamerne namene, kot so stopnjevanje privilegijev, napadi vbrizgavanja, napadi ponovitve itd. Za odkrivanje tovrstnih napak je na voljo nekaj orodij, vendar je za potrditev težave pogosto potrebna človeška pomoč. Izkoriščanje deserializacije je nekoliko težavno, saj podvigi brez nekaterih ročnih sprememb ne bodo delovali.

Ko aplikacija deserializira zlonamerne predmete, ki jih priskrbi napadalec. To lahko privede do dveh vrst napadov i.Napadi, povezani s podatkovno strukturo in predmeti, v katerih napadalec spreminja logiko aplikacije ali izvaja oddaljeno kodo in tipične napade pri spreminjanju podatkov, pri katerih se obstoječe podatkovne strukture uporabljajo s spremenjeno vsebino, na primer napadi, povezani z nadzorom dostopa.  Serializacija se lahko uporablja pri komunikaciji na daljavo (RPC) ali medprocesni komunikaciji (IPC), predpomnjenju podatkov, spletnih storitvah, strežniku predpomnilnika baz podatkov, datotečnih sistemih, žetonih za preverjanje pristnosti API, piškotkih HTML, parametrih obrazcev HTML itd. Deserializacijske napade je mogoče omiliti z neuporabo serializiranih predmetov iz nezaupljivih virov, izvajanjem preverjanj integritete, izolacijo kode, ki se izvaja v nizko privilegiranem okolju, spremljanjem dohodnih in odhodnih omrežnih povezav s strežnikov, ki pogosto deserializirajo.

Uporaba komponent z znanimi ranljivostmi:

Večina razvijalcev v spletni aplikaciji uporablja različne komponente, kot so knjižnice, ogrodja in programski moduli. Te knjižnice razvijalcu pomagajo, da se izogne ​​nepotrebnemu delu in zagotavlja potrebne funkcije. Napadalci iščejo napake in ranljivosti v teh komponentah za usklajevanje napada. V primeru iskanja varnostne vrzeli v komponenti lahko vsa mesta, ki uporabljajo isto komponento, postanejo ranljiva. Izkoriščanja teh ranljivosti so že na voljo, medtem ko je za pisanje izraba po meri iz nič potrebno veliko truda. To je zelo pogosto in razširjeno vprašanje, uporaba velikih količin komponent pri razvoju spletne aplikacije lahko privede do tega, da sploh ne poznamo in ne razumemo vseh uporabljenih komponent, popravljanje in posodabljanje vseh komponent je dolga pot.

Aplikacija je ranljiva, če razvijalec ne pozna različice uporabljene komponente, ker je programska oprema zastarela i.e v operacijskem sistemu, DBMS, delujoči programski opremi, okoljih za izvajanje in knjižnicah pregledovanje ranljivosti ne poteka redno, združljivost popravljene programske opreme razvijalci ne preizkušajo. To je mogoče preprečiti z odstranjevanjem neuporabljenih odvisnosti, datotek, dokumentacije in knjižnic, rednim preverjanjem različice odjemalskih in strežniških komponent, pridobivanjem komponent in knjižnic iz uradnih in zaupanja vrednih varnih virov, nadzorovanjem neizkrčenih knjižnic in komponent, zagotavljanjem načrta za redno posodabljanje in popravljanje ranljivih komponent.

Te ranljivosti vodijo do manjših vplivov, lahko pa tudi do ogrožanja strežnika in sistema. Mnogo večjih kršitev se je opiralo na znane ranljivosti komponent. Uporaba ranljivih komponent spodkopava obrambo aplikacije in je lahko izhodišče za velik napad.

Nezadostno beleženje in spremljanje:

Večina sistemov ne sprejme dovolj ukrepov in korakov za odkrivanje kršitev podatkov. Povprečni odzivni čas incidenta je 200 dni, potem ko se je zgodil, to je veliko časa, da naredimo vse grde stvari za napadalca. Nezadostno beleženje in spremljanje omogočata napadalcu nadaljnji napad na sistem, ohranjanje zadržanja sistema, spreminjanje, zadrževanje in pridobivanje podatkov po potrebi. Napadalci izkoriščajo pomanjkanje nadzora in odziva v svojo korist za napad na spletno aplikacijo.
Kadar koli se pojavi nezadostno beleženje in spremljanje i.Dnevniki aplikacij, ki se ne spremljajo zaradi nenavadnih dejavnosti, preverljivi dogodki, kot so neuspeli poskusi prijave in visoke vrednosti transakcij, niso pravilno zabeleženi, opozorila in napake ustvarjajo nejasna sporočila o napakah, brez sprožilnega opozorila v primeru ponovnega testiranja z uporabo avtomatiziranih orodij DAST, ker ne morejo ali hitro opozorili na aktivne napade itd. Te je mogoče omiliti tako, da zagotovite, da so vse prijave, napake nadzora dostopa in potrjevanje vnosa na strani strežnika evidentirane za prepoznavanje zlonamernega uporabniškega računa in zadržane dovolj časa za zapoznelo forenzično preiskavo, tako da zagotovite, da so ustvarjeni dnevniki v obliki združljiv z rešitvami za centralizirano upravljanje dnevnikov z zagotavljanjem preverjanja integritete pri transakcijah z visoko vrednostjo, z vzpostavitvijo sistema za pravočasno opozarjanje na sumljive dejavnosti itd.

Večina uspešnih napadov se začne s preverjanjem in preizkušanjem ranljivosti v sistemu, kar omogoča, da lahko ti pregledi ranljivosti ogrozijo celoten sistem.

Zaključek:

Varnostne ranljivosti v spletni aplikaciji vplivajo na vse entitete, povezane s to aplikacijo. Za te ranljivosti je treba poskrbeti, da zagotovimo varno in varno okolje za uporabnike. Napadalci lahko s temi ranljivostmi ogrozijo sistem, se ga dokopljejo in povečajo privilegije. Vpliv ogrožene spletne aplikacije je mogoče videti od ukradenih poverilnic na kreditni kartici in kraje identitete do uhajanja zelo zaupnih informacij itd. odvisno od potreb in vektorjev napadov zlonamernih entitet.

Najboljših 5 izdelkov z ergonomsko računalniško miško za Linux
Ali dolgotrajna uporaba računalnika povzroča bolečine v zapestju ali prstih? Ali imate trde sklepe in bi se morali neprestano tresti z rokami? Ali čut...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
S pomočjo gumba X-Mouse Button Control različno prilagodite gumbe miške za različno programsko opremo
Mogoče potrebujete orodje, ki bi lahko spremenilo nadzor miške z vsako aplikacijo, ki jo uporabljate. V tem primeru lahko preizkusite aplikacijo z ime...