Securitate

10 tipuri de vulnerabilități de securitate

10 tipuri de vulnerabilități de securitate
O defecțiune neintenționată sau accidentală a codului software sau a oricărui sistem care îl face potențial exploatabil în ceea ce privește accesul la utilizatori ilegitimi, comportamente rău intenționate precum viruși, troieni, viermi sau orice alt malware se numește vulnerabilitate de securitate. Utilizarea software-ului care a fost deja exploatat sau utilizarea parolelor slabe și implicite are ca rezultat, de asemenea, vulnerabilitatea sistemului față de lumea exterioară. Aceste tipuri de vulnerabilități de securitate necesită corecții pentru a împiedica hackerii să folosească din nou exploit-urile utilizate anterior pentru a obține acces neautorizat la sistem. O vulnerabilitate de securitate numită și gaură sau slăbiciune de securitate este o eroare, o eroare sau o eroare în implementarea codului, proiectării și arhitecturii unei aplicații web și a serverelor, care, atunci când este lăsată neadresată, poate duce la compromiterea sistemului și face ca întreaga rețea vulnerabilă la atac. Persoanele care vor fi infectate includ proprietarul aplicației, utilizatorii aplicației și orice altă persoană care se bazează pe acea aplicație. Să analizăm cele mai periculoase și comune riscuri de securitate pentru aplicațiile web.

Cuprins

  1. Injectarea bazei de date
  2. Autentificare defectă
  3. Expunere la date sensibile
  4. Entități externe XML (XEE)
  5. Controlul accesului întrerupt
  6. Configurare greșită a securității
  7. Cross-site Scripting (XSS)
  8. Deserializare nesigură
  9. Utilizarea componentelor cu vulnerabilități cunoscute
  10. Logare și monitorizare insuficiente

Injectarea bazei de date:

În cazul trimiterii unor date de încredere către interpret, ca parte a comenzii, prin orice zonă care necesită intrarea utilizatorului i.Introducerea formularului sau orice altă zonă de trimitere a datelor, apar defecte de injecție. Interogările rău intenționate ale atacatorului pot păcăli interpretul în executarea comenzilor care pot afișa date confidențiale pe care utilizatorul nu are autorizație să le arunce o privire. De exemplu, într-un atac de injecție SQL, când introducerea formularului nu este igienizată în mod corespunzător, atacatorul poate intra în baza de date SQL și poate accesa conținutul acesteia fără autorizare, doar introducând codul de bază de date SQL rău intenționat într-un formular care așteaptă un text clar. Orice tip de câmp care acceptă intrarea utilizatorului este injectabil i.parametrii, variabilele de mediu, toate serviciile web etc.

Aplicația este vulnerabilă la atacul de injecție atunci când datele furnizate de utilizator nu sunt igienizate și validate, prin utilizarea de interogări dinamice fără evadarea contextuală și utilizarea datelor ostile direct. Defectele de injecție pot fi ușor descoperite prin examinarea codului și prin utilizarea unor instrumente automate, cum ar fi scanere și fuzzere. Pentru a preveni atacurile de injecție, există unele măsuri care pot fi luate, cum ar fi separarea datelor de comenzi și interogări, utilizarea unui API sigur care oferă o interfață parametrizată, utilizarea validării de intrare pe partea de server a „listei albe” prin instrumente precum Snort, evadarea de caractere speciale folosind sintaxa de evadare specifică etc.

Un atac de injecție poate duce la o pierdere masivă de date, divulgarea informațiilor confidențiale, refuzul accesului și poate duce chiar la o preluare completă a aplicației. Unele controale SQL, cum ar fi LIMIT, pot fi utilizate pentru a controla cantități uriașe de pierderi de date în caz de atac. Unele tipuri de atacuri de injecție sunt atacurile de injecție SQL, OS, NoSQL, LDAP.

Autentificare defectă:

Atacatorii pot accesa conturi de utilizator și pot chiar compromite întregul sistem gazdă prin conturi de administrator, folosind vulnerabilitățile din sistemele de autentificare. Defectele de autentificare permit atacatorului să compromită parolele, jetoanele de sesiune, cheile de autentificare și pot fi înlănțuite cu alte atacuri care pot duce la accesul neautorizat al oricărui alt cont de utilizator sau sesiune temporar și, în unele cazuri, permanent. Să presupunem că un utilizator are o listă de cuvinte sau un dicționar cu milioane de nume de utilizatori valide și parole obținute în timpul unei încălcări. Le poate folosi unul câte unul într-un timp extrem de redus folosind instrumente și scripturi automate din sistemul de autentificare pentru a vedea dacă cineva funcționează. Implementarea slabă a gestionării identității și a controalelor de acces duce la vulnerabilități precum autentificarea defectată.

Aplicația este vulnerabilă la atacurile de autentificare atunci când permite încercarea diferitelor nume de utilizator și parole, permite atacuri de dicționar sau atacuri cu forță brută fără nicio strategie de apărare, utilizează parole ușoare, implicite sau parole care sunt scurs în orice încălcare, expune identificatorii de sesiune în URL, utilizează schema slabă de recuperare a parolei, folosește un model de cookie-uri. Autentificarea întreruptă poate fi exploatată cu ușurință folosind instrumente simple pentru forțare brută și atacuri de dicționar cu un dicționar bun. Aceste tipuri de atacuri pot fi prevenite folosind sisteme de autentificare cu mai mulți factori, prin implementarea unor verificări slabe ale parolei prin executarea unei parole printr-o bază de date de parole greșite, prin neutilizarea acreditărilor implicite, prin alinierea politicii de complexitate a parolei, prin utilizarea unui server bun manager de sesiune care generează un nou ID de sesiune aleatoriu după autentificare etc.

Vulnerabilitatea de autentificare întreruptă poate duce la compromiterea câtorva conturi de utilizator și a unui cont de administrator, adică tot ce are nevoie un atacator pentru a compromite un sistem. Aceste tipuri de atacuri duc la furt de identitate, fraudă în securitatea socială, spălare de bani și divulgarea de informații foarte clasificate. Atacurile includ atacuri de dicționar, forțare brută, deturnare de sesiuni și atacuri de gestionare a sesiunii.

Expunere la date sensibile:

Uneori, aplicațiile web nu protejează datele și informațiile sensibile, cum ar fi parolele, acreditările bazei de date etc. Un atacator poate fura sau modifica cu ușurință aceste acreditări slab protejate și le poate folosi în scopuri nelegitime. Datele sensibile ar trebui să fie criptate în timp ce sunt în repaus sau în tranzit și să aibă un strat suplimentar de securitate, altfel atacatorii îl pot fura. Atacatorii pot pune mâna pe date sensibile expuse și pot fura utilizatorii cu text hash sau clar și acreditările bazei de date de pe server sau dintr-un browser web. De exemplu, dacă o bază de date cu parole utilizează hashuri nesărate sau simple pentru a stoca parolele, o eroare de încărcare a fișierelor poate permite unui atacator să recupereze baza de date a parolelor, ceea ce va duce la expunerea tuturor parolelor cu un tabel curcubeu de hashuri precalculate.

Defectul principal nu constă doar în faptul că datele nu sunt criptate, chiar dacă sunt criptate, ci generarea de chei slabe, algoritmi de hash slabi, utilizarea slabă a cifrelor poate duce și la aceste tipuri de atacuri cele mai frecvente. Pentru a preveni aceste tipuri de atacuri, clasificați mai întâi ce tip de date pot fi considerate sensibile în conformitate cu legile privind confidențialitatea și aplicați controale conform clasificării. Încercați să nu stocați date clasificate de care nu aveți nevoie, spălați-le imediat ce le utilizați. Pentru datele în tranzit, criptați-le cu protocoale securizate i.e TLS cu cifre PFS etc.

Aceste tipuri de vulnerabilități pot duce la expunerea de informații extrem de sensibile, cum ar fi acreditările cardului de credit, dosarele de sănătate, parolele și orice alte date personale care pot duce la furt de identitate și fraudă bancară etc.

Entități externe XML (XEE):

Procesoarele XML slab configurate procesează referințele entităților externe din documentele XML. Aceste entități externe pot fi folosite pentru a prelua date precum fișierele interne / etc / passwd sau pentru a efectua alte sarcini rău intenționate.  Procesoarele XML vulnerabile pot fi ușor exploatate dacă un atacator poate încărca un document XML sau include XML etc. Aceste entități XML vulnerabile pot fi descoperite folosind instrumentele SAST și DAST sau manual, inspectând dependențele și configurațiile.

O aplicație web este vulnerabilă la atacul XEE din mai multe motive, cum ar fi dacă aplicația acceptă intrarea XML directă din surse neacredibile, definițiile tipului de document (DTD) din aplicație sunt activate, aplicația utilizează SAML pentru procesarea identității, deoarece SAML utilizează XML pentru identitate inserții etc. Atacurile XEE pot fi atenuate evitând serializarea datelor sensibile, utilizând formate de date mai puțin complicate i.e JSON, corecția procesorilor XML, aplicația este curent utilizată și chiar și de biblioteci, dezactivarea DTD-urilor în toate analizatoarele XML, validarea funcționalității de încărcare a fișierelor XML utilizând verificarea XSD etc.

Aplicația vulnerabilă la aceste tipuri de atacuri poate duce la atacul DOS, atacul Billion Laughs, scanarea sistemelor interne, scanarea portului intern, executarea unei comenzi de la distanță care are ca rezultat afectarea tuturor datelor aplicației.

Control acces intrerupt:

Controlul accesului oferă utilizatorilor privilegii de a efectua sarcini specifice. Vulnerabilitatea întreruptă a controlului accesului are loc atunci când utilizatorii nu sunt restricționați corespunzător asupra sarcinilor pe care le pot îndeplini. Atacatorii pot exploata această vulnerabilitate care poate ajunge la accesarea funcționalității sau informațiilor neautorizate. Să presupunem că o aplicație web permite utilizatorului să schimbe contul din care s-a conectat doar prin schimbarea adresei URL în contul altui utilizator fără verificări suplimentare.  Exploatarea vulnerabilității controlului accesului este un atac de bază pentru orice atacator, această vulnerabilitate poate fi găsită manual, precum și folosind instrumentele SAFT și DAFT. Aceste vulnerabilități există din cauza lipsei testării și detectării automate a aplicațiilor web, deși cea mai bună modalitate de a le găsi este să o faceți manual.

Vulnerabilitățile conțin escaladarea privilegiilor i.Acționând ca utilizator, nu sunteți sau acționați ca administrator în timp ce sunteți utilizator, ocolind verificările controlului accesului doar prin modificarea adresei URL sau modificarea stării aplicației, manipularea metadatelor, permițând schimbarea cheii primare ca cheie primară a altui utilizator, etc. Pentru a preveni aceste tipuri de atacuri, mecanismele de control al accesului trebuie să fie implementate în codul serverului, unde atacatorii nu pot modifica comenzile de acces. Aplicarea limitelor unice ale afacerii aplicațiilor de către modelele de domeniu, dezactivarea listării directoarelor serverului, alertarea administratorului la încercări repetate nereușite de conectare, invalidarea tokenurilor JWT după deconectare trebuie asigurată pentru a atenua aceste tipuri de atacuri.

Atacatorii pot acționa ca un alt utilizator sau administrator folosind această vulnerabilitate pentru a efectua sarcini rău intenționate, cum ar fi crearea, ștergerea și modificarea înregistrărilor etc. Pierderea masivă a datelor poate apărea dacă datele nu sunt securizate chiar și după o încălcare.

Configurare greșită a securității:

Cea mai comună vulnerabilitate este configurarea greșită a securității. Principalul motiv al vulnerabilității este utilizarea configurației implicite, a configurației incomplete, a configurațiilor Adhoc, a anteturilor HTTP slab configurate și a mesajelor de eroare detaliate care conțin mai multe informații decât ar fi trebuit să știe de fapt utilizatorul. La orice nivel al unei aplicații web, pot apărea configurări greșite de securitate i.baze de date, server web, server de aplicații, servicii de rețea etc. Atacatorii pot exploata sisteme neperfectate sau pot accesa fișiere și directoare neprotejate pentru a avea o reținere neautorizată a sistemului. De exemplu, o aplicație mesaje de eroare excesiv de detaliate care ajută atacatorul să cunoască vulnerabilitățile din sistemul aplicației și modul în care funcționează. Unelte și scanere automate pot fi utilizate pentru a detecta aceste tipuri de defecte de securitate.

O aplicație web conține acest tip de vulnerabilitate dacă lipsește măsurile de întărire a securității în orice parte a aplicației, porturile inutile sunt deschise sau permite funcții inutile, sunt folosite parolele implicite, gestionarea erorilor dezvăluie atacatorului erori informative, utilizează software de securitate nepatched sau învechit etc. Poate fi prevenit prin eliminarea caracteristicilor inutile ale codului, i.o platformă minimă, fără funcții inutile, documentație, etc, care permite unei sarcini să actualizeze și să corecte găurile de securitate ca parte a proceselor de gestionare a patch-urilor, utilizarea unui proces pentru a verifica eficacitatea măsurilor de securitate luate, utilizarea procesului de întărire repetabilă pentru a face este ușor să implementați un alt mediu blocat corespunzător.

Aceste tipuri de vulnerabilități sau defecte permit atacatorului să obțină acces neautorizat la datele de sistem, ceea ce duce la compromiterea completă a sistemului.

Cross-Site Scripting (XSS):

Vulnerabilitățile XSS se întâmplă în momentul în care o aplicație web încorporează date de încredere într-o nouă pagină de site web fără aprobare legitimă sau scăpare, sau reîmprospătează o pagină de site curentă cu date furnizate de client, utilizând un API de browser care poate face HTML sau JavaScript.  Defectele XSS apar în cazul în care site-ul web permite unui utilizator să adauge cod personalizat într-o cale URL care poate fi văzută de alți utilizatori. Aceste defecte sunt utilizate pentru a rula codul JavaScript rău intenționat pe browserul țintei. Să presupunem că un atacator poate trimite un link către victimă conținând un link către site-ul oricărei companii. Această conexiune ar putea avea un cod JavaScript rău intenționat încorporat, În cazul în care pagina web a băncii nu este securizată corespunzător împotriva atacurilor XSS, făcând clic pe link, codul rău intenționat va fi rulat în browserul victimei.

Cross-Site Scripting este o vulnerabilitate de securitate care este prezentă în aproape ⅔ din aplicațiile web. O aplicație este vulnerabilă la XSS dacă aplicația stochează o intrare de utilizator nesanitizată care poate fi văzută de un alt utilizator, prin utilizarea de structuri JavaScript, aplicații cu o singură pagină și API-uri care încorporează puternic informații controlabile de atacator pe o pagină sunt neajutorați împotriva DOM XSS. Atacurile XSS pot fi atenuate prin utilizarea cadrelor care scapă și igienizează intrările XSS de la natură, cum ar fi React JS etc., învățând limitele cadrelor și acoperindu-le folosind propriile cazuri, scăpând de date HTML inutile și de încredere oriunde.e în atribute HTML, URI, Javascript, etc., utilizarea codificării sensibile la context în cazul modificării documentului în partea clientului etc.

Atacurile bazate pe XSS sunt de trei tipuri i.e XSS reflectate, XSS DOM și XSS stocate. Toate tipurile de atacuri au un impact semnificativ, dar în cazul stocării XSS, impactul este chiar mai mare i.furtul de acreditări, trimiterea de malware către victimă etc.

Deserializare nesigură:

Serializarea datelor înseamnă preluarea obiectelor și conversia acestora în orice format, astfel încât aceste date să poată fi utilizate în alte scopuri ulterior, în timp ce deserializarea datelor înseamnă opusul acelui. Deserializarea descompune aceste date serializate pentru utilizarea aplicațiilor. Deserializarea nesigură înseamnă temperarea datelor care au fost serializate chiar înainte ca acestea să fie despachetate sau deserializate.  Deserializarea nesigură duce la execuția codului la distanță și este utilizată pentru a efectua alte sarcini în scopuri rău intenționate, cum ar fi escaladarea privilegiilor, atacuri de injecție, atacuri de redare etc. Există câteva instrumente disponibile pentru a descoperi aceste tipuri de defecte, dar asistența umană este necesară frecvent pentru a valida problema. Exploatarea deserializării este puțin dificilă, deoarece exploatările nu vor funcționa fără unele modificări manuale.

Când aplicația deserializează obiecte rău intenționate furnizate de entitatea atacantă. Acest lucru poate duce la două tipuri de atacuri i.Atacurile legate de structura datelor și obiectele în care atacatorul modifică logica aplicației sau execută codul la distanță și atacurile tipice de manipulare a datelor în care structurile de date existente sunt utilizate cu conținut modificat, de exemplu atacurile legate de controlul accesului.  Serializarea poate fi utilizată în comunicarea de proces la distanță (RPC) sau într-o comunicație inter-proces (IPC), stocarea în cache a datelor, servicii web, server cache de baze de date, sisteme de fișiere, jetoane de autentificare API, cookie-uri HTML, parametri de formular HTML etc. Atacurile de deserializare pot fi atenuate prin neutilizarea obiectelor serializate din surse neacredibile, implementarea verificărilor de integritate, izolarea codului care rulează într-un mediu cu privilegii reduse, monitorizarea conexiunilor de rețea de intrare și ieșire de pe servere care deserializează frecvent.

Utilizarea componentelor cu vulnerabilități cunoscute:

Diferite componente precum biblioteci, cadre și module software sunt utilizate de majoritatea dezvoltatorilor din aplicația web. Aceste biblioteci ajută dezvoltatorul să evite lucrările inutile și să ofere funcționalitatea necesară. Atacatorii caută defecte și vulnerabilități în aceste componente pentru a coordona un atac. În cazul găsirii unei lacune de securitate într-o componentă, toate site-urile care utilizează aceeași componentă pot deveni vulnerabile. Exploatările acestor vulnerabilități sunt deja disponibile în timp ce scrierea unui exploat personalizat de la zero necesită mult efort. Aceasta este o problemă foarte frecventă și răspândită, utilizarea unor cantități mari de componente în dezvoltarea unei aplicații web poate duce la necunoașterea și înțelegerea tuturor componentelor utilizate, corecția și actualizarea tuturor componentelor este o lungă durată.

O aplicație este vulnerabilă dacă dezvoltatorul nu cunoaște versiunea unei componente utilizate, software-ul este depășit i.e sistemul de operare, SGBD, funcționarea software-ului, mediile de rulare și bibliotecile, scanarea vulnerabilității nu se face în mod regulat, compatibilitatea software-ului patch nu este testată de dezvoltatori. Poate fi prevenit prin eliminarea dependențelor, fișierelor, documentației și bibliotecilor neutilizate, verificarea regulată a versiunii componentelor client și a serverului, obținerea componentelor și bibliotecilor din surse oficiale și sigure de încredere, monitorizarea bibliotecilor și componentelor neperfectate, asigurarea unui plan pentru actualizarea și corecția regulată a componentelor vulnerabile.

Aceste vulnerabilități duc la impacturi minore, dar pot duce și la compromiterea serverului și a sistemului. Multe încălcări mari s-au bazat pe vulnerabilitățile cunoscute ale componentelor. Utilizarea componentelor vulnerabile subminează apărarea aplicației și poate fi un punct de plecare pentru un atac mare.

Înregistrare și monitorizare insuficiente:

Majoritatea sistemelor nu iau suficiente măsuri și pași pentru a detecta încălcarea datelor. Timpul mediu de răspuns al unui incident este de 200 de zile după ce sa întâmplat, acesta este mult timp pentru a face toate lucrurile urâte pentru o entitate atacantă. Jurnalizarea și monitorizarea insuficiente permit atacatorului să atace în continuare sistemul, să-și mențină reținerea asupra sistemului, să manipuleze, să păstreze și să extragă date conform nevoilor. Atacatorii folosesc lipsa de monitorizare și răspuns în favoarea lor pentru a ataca aplicația web.
Înregistrarea și monitorizarea insuficiente apar în orice moment i.Jurnalele aplicațiilor care nu sunt monitorizate pentru activități neobișnuite, evenimente audibile, cum ar fi încercările eșuate de conectare și valori ridicate ale tranzacțiilor, nu sunt înregistrate corect, avertismentele și erorile generează mesaje de eroare neclare, fără alertă de declanșare în caz de pentestare folosind instrumente automate DAST, fiind incapabile să detecteze sau alertează rapid atacurile active etc. Acestea pot fi atenuate asigurând toate datele de conectare, eșecurile controlului accesului, iar validarea intrării pe partea de server poate fi înregistrată pentru a identifica contul de utilizator rău intenționat și păstrată pentru o perioadă suficientă de timp pentru investigarea criminalistică întârziată, asigurându-se că jurnalele generate sunt într-un format compatibil cu soluțiile centralizate de gestionare a jurnalelor, prin asigurarea verificărilor de integritate la tranzacțiile de valoare ridicată, prin stabilirea unui sistem pentru alerte în timp util de activități suspecte etc.

Majoritatea atacurilor reușite încep cu verificarea și testarea vulnerabilităților într-un sistem, permițând ca aceste probe de vulnerabilitate să poată duce la compromiterea întregului sistem.

Concluzie:

Vulnerabilitățile de securitate dintr-o aplicație web afectează toate entitățile legate de acea aplicație. Aceste vulnerabilități trebuie îngrijite pentru a oferi utilizatorilor un mediu sigur și sigur. Atacatorii pot folosi aceste vulnerabilități pentru a compromite un sistem, pentru a obține acest lucru și pentru a escalada privilegiile. Impactul unei aplicații web compromise poate fi vizualizat de la acreditările furate ale cardului de credit și furtul de identitate până la scurgerea informațiilor extrem de confidențiale etc. în funcție de nevoile și vectorii de atac ai entităților rău intenționate.

Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...
Middle mouse button not working in Windows 10
The middle mouse button helps you scroll through long webpages and screens with a lot of data. If that stops, well you will end up using the keyboard ...