Vulnerabilità

Da Wikipedia, l'enciclopedia libera.

La vulnerabilità può essere intesa come una componente (esplicita o implicita) di un sistema, in corrispondenza alla quale le misure di sicurezza sono assenti, ridotte o compromesse, il che rappresenta un punto debole del sistema e consente a un eventuale aggressore di compromettere il livello di sicurezza dell'intero sistema. Particolarmente importanti sono le vulnerabilità dei sistemi informatici nei confronti di hacker o cracker.[1]

La vulnerabilità può essere altresì riferita a persone, individui singoli o gruppi di individui (gruppi o comunità di vulnerabili).[1]

Una vulnerabilità è costituita da tre fattori: una falla nel sistema, l'accesso dell'attaccante a quest'ultima, e la capacità di sfruttarla una volta acceduto.[2]

Tipologie[modifica | modifica wikitesto]

Le vulnerabilità si possono presentare a qualsiasi livello di un sistema informatico, ne esistono principalmente di due tipi:

  1. Vulnerabilità software (bug software): Si presenta ovunque ci sia un difetto di progettazione, codifica, installazione e configurazione del software. Le vulnerabilità software dovute a difetti di progettazione e codifica sono causate principalmente dalla mediazione incompleta dei dati forniti in input direttamente dall'utente e mancanza di controlli di sistema; un esempio classico è il buffer overflow, che permette ad un attaccante di inserire un volume di dati superiore alla dimensione prestabilita e riversare i dati in eccesso nello stack, sovrascrivendo l'instruction pointer che potrebbe puntare ad un programma (tipicamente uno Shellcode) opportunamente creato per compiere effetti indesiderati.[1]
  2. Vulnerabilità dei protocolli: si manifestano quando i protocolli di comunicazione non contemplano il problema legato alla sicurezza; l'esempio classico di vulnerabilità consiste nel permettere una connessione in chiaro (non crittografata) consentendo a possibili malintenzionati di intercettare le informazioni scambiate (eavesdropping) (es. Telnet). Il fatto che la documentazione (RFC) che descrive come questi protocolli debbano essere implementati sia pubblicamente disponibile permette ai possibili attaccanti e alle possibili vittime di conoscerne le debolezze. Tuttavia è altresì semplice scoprire le vulnerabilità di un protocollo, le cui specifiche non sono pubbliche, tramite procedure di reverse engineering del protocollo stesso. In tal caso, però, la vittima non è a conoscenza delle debolezze del protocollo e non ha strumenti per difendersi.[1]

Le vulnerabilità quindi non compromettono un sistema, ma se utilizzate da quella che viene definita una minaccia (azione indesiderata) possono trasformarsi in un evento indesiderato.[1]

Si possono trovare vulnerabilità anche in ambito hardware. La presenza di umidità, polvere, sporco e supporti di memorizzazione non protetti, possono causare perdita di informazioni.[3]

In ambito umano e sociale la vulnerabilità può essere definita come segue (definizione del IFRC): "la vulnerabilità è un concetto dinamico e relativo, in stretta relazione con la capacità di un individuo o di una comunità di far fronte in un determinato momento a particolari minacce. La vulnerabilità può essere associata a certi elementi specifici della povertà, ma è anche propria di individui isolati, in situazioni di insicurezza ed indifesi da rischi, da shock e stress".[4]

Con questa accezione, in ambito sociale, possono essere definiti i "gruppi vulnerabili" come: "persone o gruppi di persone esposte a situazioni che minacciano la loro sopravvivenza o la loro attitudine a vivere con un minimo di sicurezza sociale ed economica e di dignità umana", come ad esempio in caso di anziani, disabili, immigrati, minori, donne in difficoltà, carcerati, tossicodipendenti, pazienti ospedalizzati, etc.[1]

Cause[modifica | modifica wikitesto]

Una vulnerabilità può essere causata da:

  • Complessità: Sistemi informatici molto grandi e complessi, possono essere causa di falle e involontari punti di accesso.[5]
  • Standardizzazione: Utilizzare codice, software, sistemi operativi e hardware comunemente diffusi e popolari, aumenta la possibilità che un hacker possa saperne i punti deboli e sfruttarli.[6]
  • Connettività: Più sono presenti porte, protocolli, privilegi, connessioni fisiche e servizi, e più il tempo in cui queste sono accessibili, più è probabile la presenza di un attacco.[7]
  • Password: L'utente utilizza password deboli, facilmente soggette a password cracking attraverso il metodo "forza bruta"[8], oppure utilizza troppo spesso la stessa password[5] o la memorizza nel computer.
  • Sistemi operativi basilari: Certi sistemi operativi permettono agli utenti e ai programmi un ampio accesso alle risorse, permettendo tutto ciò che non è stato esplicitamente negato.[5] Questa politica, sebbene più funzionale, permette a virus e malware di eseguire comandi a livello amministratore.[9]
  • Navigazione in Internet: Certi siti possono contenere Spyware o Adware che vanno ad infettare il dispositivo, rubando informazioni personali.[10]
  • Bug Software: In un programma viene lasciato un bug. Questo potrebbe essere sfruttabile per un possibile attacco all'applicazione.[5]
  • Mancanza di controllo degli Input: Un programma può assumere che tutti gli input dell'utente siano sicuri, permettendo la diretta esecuzione di programmi e istruzioni SQL, causando Buffer overflow, SQL injection o vulnerabilità di formato della stringa.[5]
  • Non imparare dagli errori:[11] Quando un programmatore ripete gli stessi errori in nuovi programmi, aumenta la possibilità che questi siano conosciuti e quindi attaccabili. Si veda, ad esempio, le vulnerabilità nei protocolli IPv4, scoperte essere ancora presenti nei nuovi IPv6.[12]

Ricerche dimostrano che il punto più vulnerabile di un sistema informatico è il fattore umano (utente, designer, operatore).[13] L'ingegneria sociale è un problema in continua crescita nell'ambito della sicurezza informatica.

Scoperta di una vulnerabilità[modifica | modifica wikitesto]

La scoperta di una vulnerabilità (vulnerability disclosure) è la segnalazione di una falla in un computer a livello software o hardware.[14] Solitamente, gli sviluppatori aspettano una patch che risolva il problema prima di poter rendere la vulnerabilità pubblica.

Possibili tipi di scoperta sono:

  • Self-disclosure: Quando lo sviluppatore stesso scopre la vulnerabilità e la rende pubblica assieme alla patch.[14]
  • Third-party disclosure: Una figura terza all'azienda e agli acquirenti (solitamente un ricercatore in sicurezza) denuncia la vulnerabilità scoperta, solitamente ad un'organizzazione come il CERT.[14]
  • Vendor disclosure: Quando la falla viene riportata dai ricercatori solamente agli sviluppatori.[14]
  • Full disclosure: La vulnerabilità viene esposta pubblicamente al momento della scoperta.[14]

Una vulnerabilità potrebbe anche essere scoperta, ma mai segnalata: questa diventa una vulnerabilità definita 0-day.[15] Questa tipologia ha creato un vero e proprio mercato. Le 0-day sono infatti facilmente vendibili in anonimato e senza bisogno di intermediari.[16]

Processo di segnalazione[modifica | modifica wikitesto]

Generalmente, il processo è composto dai seguenti passi:

  1. Scoperta della vulnerabilità e attestazione tramite codice o screenshots;
  2. Denuncia della scoperta agli sviluppatori tramite una relazione contenente valide prove che attestino la falla;
  3. Investigazione e costruzione di una patch per risolvere il problema;
  4. A patch ultimata (oppure al raggiungimento del tempo limite stabilito, a seconda della policy dell'azienda), il ricercatore pubblica una full-disclosure.[14]

Ricerca[modifica | modifica wikitesto]

La ricerca delle vulnerabilità di sistema può essere svolta sia da aziende specializzate sia da precisi eventi con o senza premi in denaro per le vulnerabilità scovate [17]. Dal primo decennio degli anni 2000 queste ricerche hanno compreso sempre di più i dispositivi mobili quali gli smartphone, in modo del tutto analogo all'ambito PC, in alcuni casi queste ricerche hanno permesso d'individuare una vulnerabilità comune su più piattaforme, anche se non sempre hanno gli stessi potenziali riscontri [18].

Con l'analisi delle vulnerabilità e l'evoluzione dei tempi si è anche notato che i sistemi che una volta erano più vulnerabili sono diventati meno esposti (meno vulnerabilità) e sistemi che avevano poche vulnerabilità siano diventati molto esposti, infatti prendendo in esempio Apple nel 2012 questa è l'azienda con il più alto numero di vulnerabilità, mentre la controparte Microsoft in passato molta esposta al cybercrimine, sia diventata più virtuosa con meno della metà delle vulnerabilità di Apple.[19]

In ambito sociale le vulnerabilità di individui e comunità devono essere affrontate da strutture specializzate e da operatori esperti nel campo dell'assistenza sociale, operanti sia nel settore pubblico che nel privato (servizi sociali, fondazioni, onlus, cooperative, società del terzo settore).[1]

Note[modifica | modifica wikitesto]

  1. ^ a b c d e f g Che cos'è una vulnerabilità?, su ictea.com.
  2. ^ Can we beat software vulnerabilities?, su kaspersky.com.
  3. ^ ISO/IEC, "Information technology -- Security techniques-Information security risk management" ISO/IEC FIDIS 27005:2008
  4. ^ IFRC: What is vulnerability?
  5. ^ a b c d e John R. Vacca, Computer and Information Security Handbook.
  6. ^ Krsul, Ivan (April 15, 1997). "Technical Report CSD-TR-97-026". The COAST Laboratory Department of Computer Sciences, Purdue University.
  7. ^ "An Introduction to Factor Analysis of Information Risk (FAIR)", Risk Management Insight LLC, November 2006;
  8. ^ Pauli, Darren (16 January 2017). "Just give up: 123456 is still the world's most popular password"The Register. Retrieved 2017-01-17.
  9. ^ "The Six Dumbest Ideas in Computer Security"ranum.com.
  10. ^ "The Web Application Security Consortium / Web Application Security Statistics"webappsec.org.
  11. ^ Neil Schlager. When Technology Fails: Significant Technological Disasters, Accidents, and Failures of the Twentieth Century. Gale Research Inc., 1994.
  12. ^ Hacking: The Art of Exploitation Second Edition
  13. ^ Kiountouzis, E. A.; Kokolakis, S. A. Information systems security: facing the information society of the 21st century. London: Chapman & Hall, Ltd. ISBN 0-412-78120-4.
  14. ^ a b c d e f What is vulnerability disclosure?, su searchsecurity.techtarget.com.
  15. ^ How do Zero-Day Vulnerabilities work: #30SecTech, su us.norton.com.
  16. ^ Appelbaum, J., Gibson, A., Guarnieri, C., Muller-Maguhn, A., Poitras, L., Rosenbach, M., & Schmundt, H. M. Sontheimer, "The Digital Arms Race: NSA Preps America for Future Battle", Spiegel Online, January 2015.
  17. ^ Chrome, un milione per i bug
  18. ^ Problemi di sicurezza sui BlackBerry, iOS Apple e Android nel Browser Webkit
  19. ^ Cybercrimine: è la fine dell'era mordi e fuggi?

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]