Mostra tutti

Le vulnerabilità più comuni di internet nell’epoca del Web 2.0

Le vulnerabilità più comuni di internet nell’epoca del Web 2.0

Le più comuni Web 2.0 Security Vulnerabilities come ad esempio: Cross Site Scripting (XSS), Cross Site Request Forgery (CSRF), Phishing, SQL injection etc. e le Principali tecniche di difesa.

Su Internet viaggiano tantissime informazioni non solo immagazzinate nei siti web, ma anche con e-mail, chatting, ecc. Sotto questo punto di vista Internet si caratterizza attualmente come una rete fondamentalmente ultrademocratica dove ciascun singolo utente può veicolare informazioni di qualunque tipo ai propri scopi e spesso in maniera del tutto anonima.

Tale fatto se da una parte rappresenta una delle ragioni principali del successo della rete come potente strumento di comunicazione di massa, dall’altra, ovvero nel rovescio della medaglia, evidenzia debolezze e vulnerabilità intrinseche dovute sostanzialmente al fatto che il “potere” è demandato al mittente e a chi eventualmente “controlla” la rete: molte sono infatti le tipologie di attacco alla sicurezza informatica attuabili a mezzo della rete stessa da parte di pirati informatici (cracker) con intenzioni malevoli quali ad esempio attacchi di negazione del servizio e furto di dati personali dell’utente (password e codici di autenticazione, clonazione delle carte di credito, ecc.) nonché truffe dirette ai danni dei consumatori ad esempio tramite false e-mail.

Le più comuni Web 2.0 Security Vulnerabilities

  • Cross Site Scripting (XSS)
  • Cross Site Request Forgery (CSRF)
  • Phishing
  • Information Leakage
  • Injection Flaws
  • SQL injection
  • Information Integrity

Security Vulnerabilities, Cross Site Scripting (XSS), Cross Site Request Forgery (CSRF), Phishing, SQL injection,

Cross Site Scripting (XSS)

Il Cross-site scripting (XSS) è una vulnerabilità che affligge siti web dinamici che impiegano un insufficiente controllo dell’input nei form. Un XSS permette ad un Cracker di inserire o eseguire codice lato client al fine di attuare un insieme variegato di attacchi quali ad esempio: raccolta, manipolazione e reindirizzamento di informazioni riservate, visualizzazione e modifica di dati presenti sui server, alterazione del comportamento dinamico delle pagine web ecc. Nell’accezione odierna, la tecnica ricomprende l’utilizzo di qualsiasi linguaggio di scripting lato client tra i quali JavaScript, VBScript, Flash, HTML. Il loro effetto può variare da un piccolo fastidio a un significativo rischio per la sicurezza, a seconda della sensibilità dei dati trattati nel sito vulnerabile e dalla natura delle strategie di sicurezza implementate dai proprietari del sito web.

La maggior parte degli esperti distingue almeno due principali tipi di vulnerabilità XSS: non persistente e persistente. Alcune fonti dividono ulteriormente questi due gruppi in tradizionale (causate da problemi nel codice lato server) e DOM-based (nel codice lato client).

Vulnerabilità XSS Reflected (non-persistent)

Le vulnerabilità cross-site scripting di tipo reflected sono sicuramente le più comuni. È possibile sfruttarle quando i dati forniti dall’utente (di solito tramite form HTML) sono usati immediatamente dallo scripts lato server per costruire le pagine risultanti senza controllare la correttezza della richiesta.

Dato che i documenti HTML hanno uno struttura piatta in cui sono mescolate istruzioni di controllo, di formattazione e di contenuto effettivo, se tutti i dati forniti dall’utente non validati sono inclusi nella pagina risultante senza un’adeguata codifica HTML, questo può portare a iniezione di codice di markup[8] . Un esempio classico di un potenziale vettore è il motore di ricerca del sito: se si cerca una stringa, in genere questa verrà visualizzata di nuovo nella pagina dei risultati per indicare cosa si è cercato. Se questa risposta non evita o rigetta i caratteri di controllo HTML si consegue che è vulnerabile ad attacchi cross-site scripting.

Un attacco non persistente è tipicamente inviato via mail o da un sito web neutrale. L’esca è un URL dall’aspetto innocente, che punta a un sito attendibile ma che contiene un vettore XSS. Se il sito affidabile è vulnerabile a quel vettore, il click sul link può causare l’esecuzione di script iniettato nel browser della vittima.

Vulnerabilità XSS Persistent

Una vulnerabilità XSS persistente (o stored) è una variante più devastante di cross-site scripting: si verifica quando i dati forniti dall’attaccante vengono salvati sul server, e quindi visualizzati in modo permanente sulle pagine normalmente fornite agli utenti durante la normale navigazione, senza aver eliminato dai messaggi visualizzati dagli altri utenti la formattazione HTML.

Ad esempio, supponiamo che ci sia un sito di incontri in cui i membri visionano i profili degli altri membri per cercare interessi comuni. Per motivi di privacy, questo sito nasconde a tutti il vero nome e la mail degli utenti. Queste informazioni sono tenute segrete dal server. L’unico momento in cui il nome reale e l’email sono visualizzati è quando il membro si autentica, non potendo vedere comunque i dati di chiunque altro.

Supponiamo che un attaccante si colleghi al sito e vuole capire i veri nomi delle persone che vede sul sito. Per fare ciò scrive uno script progettato per essere eseguito dal browser delle altre persone quando visitano il suo profilo. Lo script invia un breve messaggio al suo server che raccoglie queste informazioni.

Per fare questo, per il quesito “Descrivi il tuo primo appuntamento ideale”, l’attaccante dà una risposta breve (dall’aspetto consueto) ma il testo alla fine della risposta è lo script per rubare i nomi e le mail. Se lo script è racchiuso all’interno di un elemento <script> non verrà visualizzato a schermo. Quindi supponiamo che Bob, membro del sito di incontri, raggiunga il profilo dell’attaccante, dove viene visualizzata la risposta alla domanda riguardo al primo appuntamento ideale. Lo script viene automaticamente eseguito dal browser e ruba il nome reale e la mail di Bob direttamente dalla sua macchina.

Le vulnerabilità XSS di tipo persistente possono essere molto più significative rispetto alle altre perché lo script dannoso dell’attaccante è fornito automaticamente senza la necessità di indirizzare la vittima o attirarla nel sito di terze parti. In particolare nel caso di siti di social-network, il codice potrebbe essere progettato per propagarsi autonomamente tra gli account, creando un tipo di worm lato client. I metodi di iniezione possono variare tantissimo, in alcuni casi l’attaccante non ha nemmeno bisogno di interagire con le funzionalità web per sfruttare una falla. Tutti i dati ricevuti da una applicazione web (via email, log di sistema, messaggistica istantanea, ecc.) che possono essere controllati da un utente malintenzionato potrebbero diventare vettore di iniezione.

Server-side vs vulnerabilità DOM-based

Storicamente le vulnerabilità XSS sono state trovate in applicazioni che svolgevano tutto il processamento dei dati lato server. L’input dell’utente (tra cui un vettore XSS) sarebbe stato inviato al server per poi essere rimandato indietro come una pagina web. La necessità di migliorare la user experience ha dato popolarità ad applicazioni che avevano una logica di presentazione (scritta in JavaScript) che inviava i dati, su richiesta, al server usando AJAX.

Mentre il codice JavaScript processa anche gli input dell’utente e li visualizza nella pagina web, la nuova sottoclasse di attacchi XSS di tipo reflected ha iniziato ad apparire ed è stata chiamata DOM-based cross-site scripting. Negli attacchi XSS DOM-based, i dati malevoli non sono toccati dal server web, piuttosto, sono riflessi dal codice JavaScript interamente sul lato client.

Un esempio di vulnerabilità XSS DOM-based è un bug trovato nel 2011 in una serie di plugin JQuery. Le strategie di prevenzione per gli attacchi XSS DOM-based includono misure molto simili alle strategie tradizionali di prevenzione XSS, ma implementante in codice JavaScript e incluse nelle pagine. Alcuni framework JavaScript hanno creato contromisure contro questi e altri tipi di attacchi — ad esempio Angular.js.

Cross Site Request Forgery (CSRF)

In un attacco Universal Cross-Site Scripting (UXSS, o Universal XSS) vengono sfruttate le vulnerabilità del browser stesso, piuttosto che le vulnerabilità nei siti web, come per gli attacchi XSS. Tali attacchi sono comunemente usati da Anonymous, insieme a DDoS, compromettendo il controllo della rete.

Diverse classi di vulnerabilità o tecniche di attacco sono legate a XSS: i cross-zone scripting permettono l’esecuzione di codice con maggiori privilegi in alcuni browser. HTTP header injection può essere usato per creare le condizioni necessarie per il cross-site scripting sfuggendo a problemi di HTTP protocol level (oltre a consentire attacchi come il HTTP response splitting).

Cross-site request forgery (CSRF/XSRF) è quasi l’opposto del XSS, nel senso che invece di sfruttare la fiducia degli utenti in un sito, l’attaccante e la sua pagina malevola, sfrutta la fiducia del sito nel software del client, facendo richieste che il sito ritiene azioni consapevoli e intenzionali di un utente autenticato. Vulnerabilità XSS (anche in altre applicazioni in esecuzione nello stesso dominio) consentono agli aggressori di bypassare gli sforzi di prevenzione CSRF .

Covert Redirect sfrutta client di terze parti suscettibili ad attacchi XSS o Open Redirect. Covert Redirect è stato scoperto dal dottorato di ricerca dello studente Wang Jing del Nanyang Technological University, in Singapore. “Tentativi di normale phishing possono essere facilmente individuati, perché l’URL della pagina malevola è di solito diversa al massimo un paio di lettere rispetto a quella del sito vero e proprio. La differenza con Covert Redirect è che un utente malintenzionato potrebbe utilizzare il sito web vero e proprio anziché violare il sito web con un pop-up di login dannoso.”

Infine, SQL injection sfrutta una vulnerabilità nel livello di database dell’applicazione. Quando l’input dell’utente non viene filtrato in modo corretto, possono essere eseguite dall’applicazione tutte le istruzioni SQL.

Phishing

Il phishing è un tipo di truffa effettuata su Internet attraverso la quale un malintenzionato cerca di ingannare la vittima convincendola a fornire informazioni personali, dati finanziari o codici di accesso, fingendosi un ente affidabile in una comunicazione digitale.

Si tratta di una attività illegale che sfrutta una tecnica di ingegneria sociale: il malintenzionato effettua un invio massivo di messaggi di posta elettronica che imitano, nell’aspetto e nel contenuto, messaggi legittimi di fornitori di servizi; tali messaggi fraudolenti richiedono di fornire informazioni riservate come, ad esempio, il numero della carta di credito o la password per accedere ad un determinato servizio. Per la maggior parte è una truffa perpetrata usando la posta elettronica, ma non mancano casi simili che sfruttano altri mezzi, quali i messaggi SMS.

Il phishing è una minaccia attuale, il rischio è ancora maggiore nei social media come Facebook, Twitter, e Google+. Degli hacker potrebbero infatti creare un clone del sito e chiedere all’utente di inserire le sue informazioni personali. Gli hacker comunemente traggono vantaggio dal fatto che questi siti vengono utilizzati a casa, al lavoro e nei luoghi pubblici per ottenere le informazioni personali o aziendali.

Il termine phishing è una variante di fishing (letteralmente “pescare” in lingua inglese),probabilmente influenzato da phreaking e allude all’uso di tecniche sempre più sofisticate per “pescare” dati finanziari e password di un utente. La parola può anche essere collegata al linguaggio leet, nel quale la lettera f è comunemente sostituita con ph. La teoria popolare è che si tratti di un portmanteau di password harvesting, è un esempio di pseudoetimologia.

Lista dei tipi di phishing:

  1. Spear phishing – Un attacco mirato verso un individuo o una compagnia è stato denominato spear phishing. Gli attaccanti potrebbero cercare informazioni sull’obbiettivo per poter incrementare le probabilità di successo. Questa tecnica è, alla lunga, la più diffusa su internet, con una quota del 91% degli attacchi.
  2. Clone phishing – È un tipo di phishing in cui una mail legittima viene modificata negli allegati o nei link e rimandata ai riceventi, dichiarando di essere una versione aggiornata. Le parti modificate della mail sono volte a ingannare il ricevente. Questo attacco sfrutta la fiducia che si ha nel riconoscere una mail precedentemente ricevuta.
  3. Whaling – Di recente molti attacchi di phishing sono stati indirizzati verso figure di spicco di aziende o entim e il termine whaling è stato coniato per questi tipi di attacco.Viene mascherata una mail/ pagina web con lo scopo di ottenere delle credenziali di un manager. Il contenuto è creato su misura per l’obbiettivo, è spesso scritto come un subpoena legale, un problema amministrativo o una lamentela di un cliente. Sono state utilizzate anche mail identiche a quelle dell’FBI cercando di forzare il ricevente a scaricare e installare del software.

Information Leakage

L’Information Leakage è una “Perdita di informazioni”  ogni volta che un sistema che è stato progettato per essere “chiuso” ed un intercettatore rivela alcune informazioni a persone non autorizzate. Ad esempio, quando si progetta una rete di messaggistica istantanea crittografata, un ingegnere di rete senza la capacità di decifrare i codici di crittografia potrebbe vedere quando vengono trasmessi i messaggi, anche se non poteva leggerli.

Injection flaw

L’injection flaw permette ad un hacker di veicolare il codice diretto da un’applicazione Web ad un altro sistema. Questo tipo di attacco include delle chiamate al S.O. (Sistema Operativo) attraverso system call e l’uso di programmi esterni utilizzando dei comandi shell. E’ infatti possibile, ad esempio, effettuare chiamate al database nel backend attraverso SQL (Structured Query Language), realizzando un SQL injection (iniezione di codice SQL).

SQL injection

SQL injection è una tecnica di code injection, usata per attaccare applicazioni di gestione dati, con la quale vengono inseriti delle stringhe di codice SQL malevole all’interno di campi di input in modo che vengano eseguiti (es. per fare inviare il contenuto del database all’attaccante). L’SQL injection sfrutta le vulnerabilità di sicurezza del codice di un’applicazione, ad esempio quando l’input dell’utente non è correttamente filtrato da ‘caratteri di escape’ contenuti nelle stringhe SQL oppure non è fortemente tipizzato e viene eseguito inaspettatamente. L’SQL injection è più conosciuto come attacco per i siti web, ma è anche usato per attaccare qualsiasi tipo di database SQL.

L’SQL injection permette agli attaccanti di effettuare spoof identify, modificare dati esistenti, causare repudiation issues come l’annullamento di transazioni o la modifica dei bilanci, permette di ottenere tutti i dati sul sistema, eliminare dati oppure fare in modo che non siano accessibili, e diventare amministratori del database server.

In uno studio del 2012, è stato osservato che in media le applicazioni web ricevono 4 attacchi al mese, ed i rivenditori ricevono il doppio degli attacchi rispetto alle industrie.

Tipi di SQL injection

L’SQL injection (SQLI) è considerata da Open Web Application Security Project una delle 10 maggiori vulnerabilità delle applicazioni web. Nel 2013 SQLI è stato considerato il numero uno degli attacchi sulla OWASP top 10. Ci sono quattro principali sotto classi di SQL injection:

  • Classic SQLI
  • Blind or Inference SQL injection
  • Database management system-specific SQLI
  • Compounded SQLI:
  • SQL injection + insufficient authentication
  • SQL injection + DDoS attacks
  • SQL injection + DNS hijacking
  • SQL injection + XSS

Prevenzione SQL injection

L’SQL injection è un attacco molto conosciuto e facilmente evitabile con semplici misure. Dopo quello che si pensa fosse stato un attacco di SQL injection su Talktalk, la BBC ha riportato come gli esperti di sicurezza fossero stupiti che una così grande compagnia fosse vulnerabile a questo tipo di attacco.

  • Statement parametrizzati
  • Rafforzamento a livello di codice – Usare delle librerie di object-relational mapping evita di scrivere codice SQL. Le librerie ORM generano automaticamente degli statement SQL parametrizzati, partendo da del codice orientato agli oggetti.
  • Escape – Un modo diretto, anche se soggetto ad errori per prevenire attacchi di SQLI è quello di evitare caratteri che hanno un significato speciale in SQL. I manuali dei DBMS SQL spiegano quali caratteri hanno significati speciali, ciò permette di creare una lista di caratteri che devono essere sostituiti perché potenzialmente dannosi. Ad esempio, ogni apostrofo (') in un parametro deve essere sostituito con due apostrofi (‘ ‘) per ottenere una stringa SQL di letterali valida. Per esempio, in PHP di solito si evitano i caratteri speciali nei parametri utilizzando la funzione mysqli_real_escape_string(); prima di inviare a query SQL:
$mysqli = new mysqli('hostname', 'db_username', 'db_password', 'db_name');
$query = sprintf("SELECT * FROM `Users` WHERE UserName='%s' AND Password='%s'",
                  $mysqli->real_escape_string($username),
                  $mysqli->real_escape_string($password));
$mysqli->query($query);
  • Permessi del database – Limitare i permessi nel logon usato dell’applicazione web per accedere al database, mettendo solo i permessi necessari, può servire a ridurre l’efficacia di qualsiasi attacco di SQL injection, mirato a dei bug dell’applicazione. Per esempio, su Microsoft SQL Server, si può proibire al logon del database di fare una select ad alcune delle tabelle di sistema, in questa maniera viene evitato che venga inserito del JavaScript all’interno di tutte le colonne del database
deny select on sys.sysobjects to webdatabaselogon;
deny select on sys.objects to webdatabaselogon;
deny select on sys.tables to webdatabaselogon;
deny select on sys.views to webdatabaselogon;
deny select on sys.packages to webdatabaselogon;
Esempio della funzione unhex() in MySQL:
SELECT * FROM myTable WHERE id=unhex('32');

Se convertissimo la stringa con unhex() in semplice testo diventerebbe:

SELECT * FROM myTable WHERE id=2;

La conversione esadecimale elimina gli attacchi di SQL injection perché la stringa esadecimale inviata alla funzione unhex() viene ritornata come stringa già utilizzata e non viene interpretata.

Codice d’esempio
File: test.php
<?php

    include_once "dosql.php";
#
# Metti le informazioni sul tuo database qui. Stò usando i dati del mio file di log.
#
    $hostname = "myhost";
    $username = "myUser";
    $password = "myPassword";
    $database = "myDatabase";

    $mysqli = new mysqli($hostname, $username, $password, $database);

    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (", $mysqli->connect_errno, ") ", $mysqli->connect_error;
        exit;
    }
    echo "SQL INJECTION - Plain\n";
    $sql = "SELECT * FROM log WHERE log_id='2' OR 1=1; #'";
    $res = dosql($sql);
    foreach ($res[0] as $k => $v) {
        echo "RES[$k] = $v\n";
    }

    echo "\n\nSQL INJECTION = Hexadecimal\n";
    $sql = "SELECT * FROM log WHERE log_id=unhex('" . bin2hex("2' or 1=1; #'") . "')";
    $res = dosql($sql);
    foreach ($res[0] as $k => $v) {
        echo "RES[$k] = $v\n";
    }

    exit;
?>

File: dosql.php
<?php

################################################################################
# dosql(). Do the SQL command.
################################################################################
function dosql($sql)
{
    global $mysqli;

    $cmd = "INSERT INTO log (date,entry) VALUES (NOW(), unhex('" . bin2hex($sql) . "'))";
    $res = $mysqli->query($cmd);

    $res = $mysqli->query($sql);
    if (!$res) {
        $array = debug_backtrace();
        if (isset($array[1])) { $a = $array[1]['line']; }
        else if (isset($array[0])) { $a = $array[0]['line']; }
        else { $a = "???"; }

        echo "ERROR @ ", $a, " : (", $mysqli->errno, ")\n", $mysqli->error, "\n\n";
        echo "SQL = $sql\n";
        exit;
    }

    if (preg_match("/INSERT/i", $sql)) { return $mysqli->insert_id; }
    if (preg_match("/DELETE/i", $sql)) { return null; }
    if (!is_object($res)) { return null; }

    $count = -1;
    $array = array();
    $res->data_seek(0);
    while ($row = $res->fetch_assoc()) {
        $count++;
        foreach ($row as $k => $v) { $array[$count][$k] = $v; }
    }

    return $array;
}

Information Integrity

Identificare e gestire i rischi associati all’impiego e alla protezione della risorsa più preziosa di aziende ed utenti: l’informazione. Il concetto di Integrità dell’Informazione, nasce con l’obiettivo di rispondere all’esigenza delle aziende di operare con continuità, al meglio delle loro possibilità, anche in presenza di gravi minacce Internet o altri potenziali ostacoli al normale svolgimento delle attività.
“L’informazione digitale è, ormai, un fenomeno di portata globale”, ha affermato John W. Thompson, Chairman e CEO di Symantec. “Molti ritengono che una parte sostanziale dell’economia mondiale ruoti attorno all’uso, all’archiviazione e alla trasmissione delle informazioni digitali. Si tratta quindi di una potente leva economica, ma, al contempo, devono essere necessariamente assicurate la protezione e la disponibilità di queste informazioni”.

Principali tecniche di difesa Web 2.0 Vulnerabilities

  • Antivirus: consente di proteggere il proprio personal computer da software dannosi conosciuti come virus. Un buon antivirus deve essere costantemente aggiornato ad avere in continua esecuzione le funzioni di scansione in tempo reale. Per un miglior utilizzo l’utente deve avviare con regolarità la scansione dei dispositivi del PC (dischi fissi, CD, DVD e dischetti floppy), per verificare la presenza di virus, worm. Per evitare la diffusione di virus è inoltre utile controllare tutti i file che si ricevono o che vengono spediti tramite posta elettronica facendoli verificare dall’antivirus correttamente configurato a tale scopo.
  • Antispyware: software facilmente reperibile sul web in versione freeware, shareware o a pagamento. È diventato un utilissimo tool per la rimozione di “file spia”, gli spyware appunto, in grado di carpire informazioni riguardanti le attività on line dell’utente ed inviarle ad un’organizzazione che le utilizzerà per trarne profitto.
  • Firewall: installato e ben configurato un firewall garantisce un sistema di controllo degli accessi verificando tutto il traffico che lo attraversa. Protegge contro aggressioni provenienti dall’esterno e blocca eventuali programmi presenti sul computer che tentano di accedere ad internet senza il controllo dell’utente.
  • Firma digitale, Crittografia: è possibile proteggere documenti e dati sensibili da accessi non autorizzati utilizzando meccanismi di sicurezza specifici quali: la crittografia, la firma digitale, e l’utilizzo di certificati digitali e algoritmi crittografici per identificare l’autorità di certificazione, un sito, un soggetto o un software.
  • Backup: più che un sistema di difesa si tratta di un utile metodo per recuperare dati eventualmente persi o danneggiati. Il backup consiste nell’esecuzione di una copia di sicurezza dei dati di un personal computer o comunque di dati considerati importanti onde evitare che vadano perduti o diventino illeggibili.
  • Honeypot: un honeypot (letteralmente: “barattolo del miele”) è un sistema o componente hardware o software usato come “trappola” o “esca” a fini di protezione contro gli attacchi di pirati informatici. Solitamente consiste in un computer o un sito che sembra essere parte della rete e contenere informazioni preziose, ma che in realtà è ben isolato e non ha contenuti sensibili o critici; potrebbe anche essere un file, un record, o un indirizzo IP non utilizzato.
  • Intrusion detection system (IDS): è un dispositivo software e hardware (a volte la combinazione di tutti e due) utilizzato per identificare accessi non autorizzati ai computer. Le intrusioni rilevate possono essere quelle prodotte da cracker esperti, da tool automatici o da utenti inesperti che utilizzano programmi semiautomatici. Gli IDS vengono utilizzati per rilevare tutti gli attacchi alle reti informatiche e ai computer. Un IDS è composto da quattro componenti. Uno o più sensori utilizzati per ricevere le informazioni dalla rete o dai computer. Una console utilizzata per monitorare lo stato della rete e dei computer e un motore che analizza i dati prelevati dai sensori e provvede a individuare eventuali falle nella sicurezza informatica. Il motore di analisi si appoggia ad un database ove sono memorizzate una serie di regole utilizzate per identificare violazioni della sicurezza.
  • Network Intrusion Detection System (NIDS): sono degli strumenti informatici, software o hardware, dediti ad analizzare il traffico di uno o più segmenti di una LAN al fine di individuare anomalie nei flussi o probabili intrusioni informatiche. I più comuni NIDS sono composti da una o più sonde dislocate sulla rete, che comunicano con un server centralizzato, che in genere si appoggia ad un Database. Fra le attività anomale che possono presentarsi e venire rilevate da un NIDS vi sono: accessi non autorizzati, propagazione di software malevolo, acquisizione abusiva di privilegi appartenenti a soggetti autorizzati, intercettazione del traffico (sniffing), negazioni di servizio (DoS).
  • Steganografia: La steganografia si pone come obiettivo di mantenere nascosta l’esistenza di dati a chi non conosce la chiave atta ad estrarli, mentre per la crittografia è rendere inaccessibili i dati a chi non conosce la chiave.
  • Sistema di autenticazione: potrebbe rivelarsi utile, in particolare nelle aziende, l’utilizzo di software per l’autenticazione sicura con un secondo elemento di autenticazione basato su un insieme di caratteri disposti in uno schema suddiviso in file e colonne conosciute dall’utente che dovrà poi inserirle in una combinazione di valori per dimostrare di essere in possesso dei dati corretti. Altro sistema, più sofisticato, è quello del riconoscimento dell’utente tramite l’utilizzo dell’impronta digitale come forma di autenticazione.
  • Two-factor or multi-factor authentication. Si dice che un sistema fa leva su una autenticazione a due fattori quando si basa su due diversi metodi di autenticazione tra quelli sopra elencati. Una autenticazione a due fattori si contrappone dunque ad una comune autenticazione basata sulla sola password. Una autenticazione basata su password richiede infatti un solo fattore di autenticazione per concedere l’accesso ad un sistema. Le più comuni forme di autenticazione a due fattori usano “una cosa che conosci” (una password) come primo dei due fattori, mentre come secondo fattore viene utilizzato o “una cosa che hai” (un oggetto fisico) o “una cosa che sei” (una caratteristica biometrica come una impronta digitale). Un esempio comune di autenticazione a due fattori è il bancomat: il tesserino è l’oggetto fisico che rappresenta “una cosa che hai” e il PIN è “una cosa che conosci”. Un’autenticazione a due fattori (o autenticazione a più fattori o strong authentication) è un metodo di autenticazione che si basa sull’utilizzo congiunto di due metodi di autenticazione individuale.  L’identità di un utente remoto è generalmente verificata attraverso due funzionalità di sicurezza principali: l’identificazione e l’autenticazione.La prima è la fase in cui l’utente dichiara la propria identità al sistema, mentre la seconda si riferisce alla tecnica con cui tale identità viene verificata. La sicurezza dell’asset a cui l’utente accede dipende fortemente dalla tecnica utilizzata per autenticarlo. L’utilizzo di sistemi deboli o non sufficienti a garantire l’identità dell’utente remoto possono esporre il target a numerosi rischi. Il sistema di autenticazione più diffuso è la password. La combinazione tra identificativo e password autentica l’utente al sistema.Tuttavia questa tecnica fornisce una sicurezza molto limitata, essendo caratterizzata da diverse problematiche. La password, infatti, può essere trascritta e sottratta, smarrita, dedotta, condivisa e dimenticata e non è, pertanto, adatta nei sistemi in cui è necessario avere una ragionevole certezza sull’effettiva identità del soggetto che accede. Per superare tali limitazione ed innalzare i livelli di sicurezza sono nate le tecniche di Strong Authentication o autenticazione a più fattori.

Credits:

libro vita da hacker