Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Sicurezza Informatica: Vulnerabilit , Attacchi e Contromisure, Appunti di Sicurezza delle reti

Le vulnerabilit e le contromisure nel campo della sicurezza informatica, concentrandosi su tecniche di attacco come sniffing, spoofing, denial of service e sql injection. Analizza le strategie per proteggere le reti lan e wan, inclusi l'uso di firewall, vpn con ipsec e metodi di cifratura. Una panoramica completa delle minacce alla sicurezza e delle soluzioni per mitigarle, offrendo spunti utili per la protezione dei sistemi informatici. Approfondisce inoltre le problematiche relative alla connessione sicura di pi lan tramite ipsec, esaminando le modalit di trasporto e tunnel, nonch i servizi di autenticazione e cifratura. Infine, il documento illustra le diverse varianti di sql injection e le loro potenziali conseguenze devastanti, sottolineando l'importanza di implementare misure di sicurezza adeguate per prevenire tali attacchi.

Tipologia: Appunti

2023/2024

In vendita dal 05/07/2025

gabriela-babarada
gabriela-babarada 🇮🇹

9 documenti

1 / 20

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
CIFRARIO RSA
primo cifrario a chiave pubblica noto alla comunità scientifica internazionale.
caratteristiche di RSA:
- mittente e ricevente non condividono chiavi
- chiavi diverse per cifrare e decifrare
- cifratura e decifratura relativamente inefficienti
- E’ difficile o praticamente impossibile decifrare senza conoscere la chiave
- basato sulla difficoltà di calcolare la fattorizzazione di numeri ottenuti moltiplicando numeri
primi molto grandi
- testo da cifrare (plaintext) e testo cifrato (ciphertext) sono numeri minori di un determinato
numero n, detto modulo
schema generale:
- generazione chiavi per ogni utente
- scegli p e q primi
- calcolo modulo n = pq
- scegli e < (p-1)(q-1) tale che gcd(e,(p-1)(q-1))=1
- calcola d = e-1 mod (p-1)(q-1)
- K+ = <e,n>, K- = <d,n>
- algoritmo per cifrare
- per cifrare m < n → c = me mod n
- algoritmo per decifrare
- per decifrare m < n → m = cd mod n
correttezza di RSA:
cifrando m ottengo c e voglio che decifrando c ottengo lo stesso messaggio m di partenza:
se C(m) = c, allora D(c) = m
ovvero
se c = me mod n, allora m = cd mod n
ovvero
m = (me mod n)d mod n
occorre dimostrare che
m ≡ med (mod n)
sapendo che
ed ≡ 1 (mod (p-1)(q-1))
Per prima cosa mostriamo che (p-1)(q-1) = Φ(n),
dove
p e q sono primi, n=pq e
Φ(n) è il numero di interi minori di n che sono relativamente primi con n
risultato utile per RSA
Teorema (Eulero): se n,m relativamente primi,
m Φ(n) mod n = 1
(k) mk Φ(n) mod n = (m Φ(n) )k mod n = 1
ovvero
se n,m relativamente primi e m < n,
(k) mk Φ(n)+1 mod n = m
e, per n=pq con p e q primi,
(k) mkΦ(n)+1 mod n = mk(p-1)(q-1)+1 mod n = m
se m,n relativamente primi, per n=pq con p e q primi, in base al teorema di Eulero,
(k) mkΦ(n)+1 mod n = mk(p-1)(q-1)+1 mod n = m
e, siccome ed ≡ 1 (mod (p-1)(q-1)),
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14

Anteprima parziale del testo

Scarica Sicurezza Informatica: Vulnerabilit , Attacchi e Contromisure e più Appunti in PDF di Sicurezza delle reti solo su Docsity!

CIFRARIO RSA

primo cifrario a chiave pubblica noto alla comunità scientifica internazionale. caratteristiche di RSA:

  • mittente e ricevente non condividono chiavi
  • chiavi diverse per cifrare e decifrare
  • cifratura e decifratura relativamente inefficienti
  • E’ difficile o praticamente impossibile decifrare senza conoscere la chiave
  • basato sulla difficoltà di calcolare la fattorizzazione di numeri ottenuti moltiplicando numeri primi molto grandi
  • testo da cifrare (plaintext) e testo cifrato (ciphertext) sono numeri minori di un determinato numero n, detto modulo schema generale:
  • generazione chiavi per ogni utente
  • scegli p e q primi
  • calcolo modulo n = pq
  • scegli e < (p-1)(q-1) tale che gcd(e,(p-1)(q-1))=
  • calcola d = e-1^ mod (p-1)(q-1)
  • K+^ = , K-^ =
  • algoritmo per cifrare
  • per cifrare m < n → c = me^ mod n
  • algoritmo per decifrare
  • per decifrare m < n → m = cd^ mod n correttezza di RSA: cifrando m ottengo c e voglio che decifrando c ottengo lo stesso messaggio m di partenza: se C(m) = c, allora D(c) = m ovvero se c = me^ mod n, allora m = cd^ mod n ovvero m = (me^ mod n)d^ mod n occorre dimostrare che m ≡ med^ (mod n) sapendo che ed ≡ 1 (mod (p-1)(q-1)) Per prima cosa mostriamo che (p-1)(q-1) = Φ(n), dove p e q sono primi, n=pq e Φ(n) è il numero di interi minori di n che sono relativamente primi con n risultato utile per RSA Teorema (Eulero): se n,m relativamente primi, m Φ(n)^ mod n = 1 (k) mk Φ(n)^ mod n = (m Φ(n)^ )k^ mod n = 1 ovvero se n,m relativamente primi e m < n, (k) mk Φ(n)+1^ mod n = m e, per n=pq con p e q primi, (k) mkΦ(n)+1^ mod n = mk(p-1)(q-1)+1^ mod n = m se m,n relativamente primi, per n=pq con p e q primi, in base al teorema di Eulero, (∀k) mkΦ(n)+1^ mod n = mk(p-1)(q-1)+1^ mod n = m e, siccome ed ≡ 1 (mod (p-1)(q-1)),

e pertanto ed = k’(p-1)(q-1)+1 per qualche k’, abbiamo quindi, per k=k’ cd^ mod n = med^ mod n = mk’(p-1)(q-1)+1^ mod n = m se il messaggio m, tradotto in un numero minore di n, ed n stesso sono relativamente primi, allora cifrando e decifrando si riottiene il messaggio originale m e se m non è relativamente primo con n? ovvero se m=jp oppure m=iq? Consideriamo il caso m= jp (il caso m=iq è analogo). Allora j

FUNZIONI DI HASH H

trasforma un messaggio m di lunghezza variabile in un codice c di lunghezza fissa H(m) = c sono essenziali in molte applicazioni e utilizzate per generare firme elettroniche siccome in media |m| > |c| può succedere che H(m1) = c H(m2) = c è una collisione per H le collisioni rendono possibile la falsificazione di messaggi se è facile calcolare H-1^ sarà facile ottenere collisioni → H-1(c) = {m1, m2}

- non invertibile o a una via (one way) → dato c, e difficile trovare m tale che H-1(c) = insieme dei messaggi m t.c. H(m) = c - fortemente non invertibile → dato m1, è difficile trovare m2 tale che H(m1) = H(m2) - resistente alle collisioni → è difficile trovare m1 e m2 tali che H(m1) = H(m2) birthday attacks ad una funzione di hash H

  • sono metodi per generare collisioni di H
  • permettono di scegliere m1 ed m2 in modo che m1∊M1 e m2∊M2, dove M1 e M2 sono insiemi di messaggi predeterminati il paradosso del compleanno → la probabilità che in un gruppo di 23 persone due abbiano lo stesso compleanno è maggiore di 1 La probabilità che almeno due persone condividano un compleanno è 1−P(nessuna collisione).

Si scopre che per P(almeno due)>0.5, k è approssimativamente 2𝑁 𝑙𝑛(2).

Per N=365, k≈ 2 · 365 · 0, 693 ≈ 506 ≈22.5. Da qui le 23 persone. p(almeno una ripetizione in un insieme di k elementi scelti tra n) = p(n,k) L' attacco del compleanno mira proprio a violare l'ultima proprietà: la resistenza alle collisioni. Una collisione si verifica quando H(M1)=H(M2) per due messaggi diversi M1=M2. come funziona l’attacco: Supponiamo che una funzione di hash H produca un output di N bit (cioè 2N^ possibili valori di hash). L'attaccante non ha bisogno di generare 2N^ messaggi per trovare una collisione. Grazie al paradosso

del compleanno, è probabile che trovi una collisione dopo aver generato e testato circa 2 𝑁

messaggi, ovvero circa 2N/2^ messaggi. fasi:

  1. Preparazione dei messaggi: L'attaccante genera un grande numero di varianti di un messaggio. - Scenario A: Attacco "meet-in-the-middle" (a due liste): Questo è il modo più comune e potente. - L'attaccante crea due insiemi di messaggi: - Insieme S1: Un insieme di k messaggi M1,1,M1,2,…,M1,k che hanno un significato "legittimo" o "accettabile". Ad esempio, clausole diverse in un contratto, o piccole variazioni in un testo. - Insieme S2: Un insieme di k messaggi M2,1,M2,2,…,M2,k che hanno un significato "malevolo" o "fraudolento". Ad esempio, clausole che cambiano un importo, o un trasferimento di fondi.
  • Calcola l'hash di tutti i messaggi in S1 e memorizza le coppie (hash, messaggio) in una tabella (ad esempio, una tabella hash).
  • Calcola l'hash di tutti i messaggi in S2 e per ognuno, controlla se l'hash esiste già nella tabella.
  • Se trova una corrispondenza H(M1,i)=H(M2,j), ha trovato una collisione! E ha due messaggi, uno "legittimo" e uno "malevolo", che producono lo stesso hash. 2. Sfruttamento della Collisione:
  • L'attaccante presenta il messaggio "legittimo" (M1,i) a una vittima per la firma digitale.
  • La vittima calcola l'hash di M1,i e lo firma con la sua chiave privata.
  • L'attaccante ora possiede la firma digitale di H(M1,i). Poiché H(M1,i)=H(M2,j), questa firma è valida anche per il messaggio "malevolo" M2,j.
  • L'attaccante può ora sostituire M1,i con M2,j e presentare la firma, facendo credere alla vittima o a terzi che la vittima abbia firmato il messaggio malevolo. come mitigare questi attacchi:
  • Lunghezza dell'output: Utilizzare funzioni di hash con una lunghezza di output sufficientemente grande 128 bit o più (128 per MD5, 160 per SHA-1). (ad esempio, 256 bit o più) per rendere l'attacco computazionalmente infattibile.
  • Salt: Quando si hashano le password, l'uso di un "salt" (un valore casuale aggiunto alla password prima dell'hashing) rende molto più difficile per un attaccante precalcolare tabelle di hash o sfruttare collisioni preesistenti. Tuttavia, questo è più per attacchi a dizionario o rainbow table che per attacchi del compleanno diretti, ma contribuisce alla robustezza complessiva.
  • Hashed Message Authentication Code (HMAC): L'uso di HMAC fornisce autenticazione del messaggio e integrità, riducendo la vulnerabilità ad alcuni tipi di attacchi di collisione, ma non rende la funzione di hash intrinsecamente resistente a una collisione "generica". funzioni di hash più usate entrambe basate sulla struttura di Merkle-Damgård. Questo significa che prendono un input di lunghezza arbitraria e lo elaborano a blocchi di dimensione fissa attraverso una funzione di compressione. - MD5 (message digest 5) → primo passaggio padding : Il messaggio viene imbottito in modo che la sua lunghezza, in bit, sia congruente a 448 modulo 512. Questo significa che il blocco finale, dopo il padding, sarà di 512 bit. Il padding consiste in un '1' seguito da un numero sufficiente di '0' e alla fine la lunghezza originale del messaggio in bit (su 64 bit). secondo passaggio inizializzazione del buffer: Vengono utilizzati un insieme di valori iniziali (chiamati hash value, chained variable, o initialization vector - IV) per avviare il processo di hashing. Questi sono costanti fisse definite nello standard dell'algoritmo. MD5: Utilizza un buffer di 128 bit, diviso in quattro registri a 32 bit, solitamente etichettati A,B,C,D. Ognuno è inizializzato con un valore esadecimale specifico. Passaggio 3: Funzione di Compressione (Elaborazione a Blocchi) Questo è il cuore dell'algoritmo. Ogni blocco di messaggio imbottito (di 512 bit) viene elaborato sequenzialmente utilizzando una funzione di compressione. Questa funzione prende il buffer corrente (i registri A,B,C,D per MD5; A,B,C,D,E per SHA-1) e il blocco di messaggio corrente, e produce un nuovo stato del buffer. Passaggio 4: Aggiornamento dei Registri Dopo che tutti i round della funzione di compressione sono stati completati per un dato blocco di messaggio, i valori finali dei registri (dopo l'elaborazione del blocco) vengono aggiunti ai valori iniziali dei registri del blocco precedente. Questo risultato diventa l'input per la funzione di compressione del blocco successivo. Passaggio 5: Output Finale Una volta elaborati tutti i blocchi del messaggio, il valore finale concatenato dei registri è l'hash del messaggio.
  • L’attacco del compleanno non funziona: anche se la probabilità di trovare una collisione in due insiemi {M 1 ,…,Mn} e {M’ 1 ,…,M’n} è elevata,
  • l’avversario non riesce a trovare la collisione, perché non sa calcolare MAC_CBCk(Mi), non conoscendo k. MAC con funzione di hash (keyed hash function) (HMAC) Data una funzione di hash H resistente alle collisioni, si genera il MAC applicando H ad una combinazione del messaggio e di una chiave segreta sicurezza Per opportune scelte di H, HMAC è ritenuto sicuro contro attacchi con scelta dei messaggi autenticati ‘chosen message attacks’: Anche se l’avversario può scegliere molti messaggi e vederne il corrispondente valore di HMAC, non riesce a fornire un nuovo messaggio autenticato.
    • Per una funzione di hash H, per trovare collisioni possiamo generare due insiemi S’ e S’’ di messaggi e verificare se esistono x in S’ e y in S’’ tali che H(x)=H(y)
    • Per HMAC, questo non è possibile perché non sappiamo calcolare HMACK(z) per un messaggio arbitrario z, in quanto non conosciamo K efficienza
  • Efficiente quanto la funzione di Hash H utilizzata (H viene chiamata due volte, ma la seconda volta con un argomento lungo solo j+N, dove N è la lunghezza del digest di H)
  • Molto più efficiente di MAC-CBC firma elettronica comunicazioni sicure
  • Il messaggio viene modificato in modo da rendere impossibile l’intercettazione del contenuto originario (cifratura)
  • Al messaggio vengono aggiunti codici in modo da rilevare la presenza di modifiche al momento della ricezione (autenticazione)

PROBLEMI DI LAN

  • intrusioni di utenti non autorizzati
  • virus e altri programmi critici per la sicurezza
  • sniffing, spoofing
  • spamming, flooding e denial of service come evitare le intrusioni o limitarne i danni
  • controllo di accesso su ogni calcolatore
  • firewall (filtro pacchetti e\o proxy)
  • limitare o evitare collegamenti esterni
  • logging accurato di sessioni interne e esterne, analisi centralizzata dei log
  • programmi di rilevamento delle intrusioni (IDS, IPS) come evitare il danno introdotto da programmi esterni
  • proibire l’installazione di software eseguita direttamente dall’utente, evitare l’esportazione di dati critici (DLP)
  • installare programmi antivirus e di endpoint detection and response (EDR)
  • inserire filtri anti malware sui firewall
  • mantenere backup sistematico, prevedere se opportune disaster recovery/ business continuity sniffing(lettura pacchetti su rete) è una tecnica, sia legittima che malevola, utilizzata per catturare e analizzare il traffico di rete che transita su una determinata interfaccia di rete
  • possibile su lan aziendale
  • possibile su rete locale da dove si collega un utente autorizzato
  • più difficile con switch, ma possibile
  • possibile, ma non comune, su rete geografica come evitare sniffing su LAN
  • usare reti con switch (non hub)
  • cifrare a livello applicativo
  • cifrare a livello di trasporto
  • cifrare a livello di IP su ogni calcolatore
  • routing livello 2, ARP statico, DHCP statico, rilevamento indirizzi hardware non validi per indirizzi IP come evitare sniffing all’esterno
  • cifrare a livello applicativo
  • cifrare a livello di trasporto
  • cifrare a livello di IP su router o firewall
  • impedire collegamento diretto da rete non controllata SPOOFING è una tecnica di attacco informatico in cui un malintenzionato maschera la propria identità o l'origine di un'informazione (come un'email, un indirizzo IP, un numero di telefono) per farla apparire come proveniente da una fonte legittima e fidata. L'obiettivo è ingannare un utente o un sistema per ottenere accesso non autorizzato, diffondere malware, rubare informazioni o compiere altre attività malevole falsificazione indirizzi
  • indirizzi hardware su LAN
  • possibile su segmento broadcast della rete locale:
  • per ricevere → agendo su ARP e configurando scheda di rete in modalità promiscua
  • per trasmettere → agendo su certi tipi di schede di rete cambiando l’indirizzo sorgente
  • inutile su rete geografica
  • indirizzi IP
  • possibile su rete locale anche con TCP
  • possibile su rete geografica con UDP
  • in generale impossibile con TCP su WAN
  • indirizzi simbolici (DNS)
  • configurando i calcolatori con indicazione di un DNS server che è possibile controllare
  • controllando il DNS server normalmente usato su LAN
  • URL (web spoofing)
  • utilizzando una URL credibile per certi contenuti, e controllando il server per quella URL
  • utilizzando una URL qualunque e agendo sui link presenti in pagine Web visitate spesso
  • quindi inserendo contenuti arbitrari per la URL che è possibile controllare denial of service è un tentativo malevolo di rendere una risorsa informatica (come un server web, un sito web, un'applicazione, una rete o un servizio) non disponibile agli utenti legittimi a cui dovrebbe normalmente fornire un servizio. come evitarlo
  • in generale è molto difficile da evitare
  • è raro
  • per particolari applicazioni occorrono reti dedicate

stack1.c

#include #include

int main(int argc, char** argv) { int cookie; char buf[80];

printf("buf: %08x cookie: %08x\n", &buf, &cookie); gets(buf); if (cookie == 0x41424344) printf("you win!\n"); }

Protezione LAN con un Firewall

Un firewall è un dispositivo di sicurezza di rete che monitora e controlla il traffico di rete in entrata e in uscita in base a regole di sicurezza predefinite. La sua funzione principale è stabilire una barriera tra una rete interna fidata (la LAN) e una rete esterna non fidata (tipicamente Internet), o tra diverse zone all'interno della stessa rete.

Il Ruolo Chiave del Firewall nella Protezione LAN

Il firewall agisce come un gatekeeper o un punto di controllo al confine della LAN. Tutto il traffico che tenta di entrare o uscire dalla LAN deve passare attraverso il firewall, che lo ispeziona e decide se consentirlo o bloccarlo in base alle sue regole.

Configurazioni del Firewall

  1. Screening Router (Router di Screening)

● Descrizione: Questa è la configurazione più semplice e meno sicura. Il firewall è integrato o consiste in un singolo router che esegue anche funzionalità di filtraggio dei pacchetti. Non c'è una separazione fisica o logica forte tra il router e la rete interna. Architettura: Internet --- Router/Firewall --- LAN ● Come Funziona: Il router è configurato con regole di filtraggio per permettere o bloccare il traffico basandosi su indirizzi IP, porte e protocolli. Tutte le regole di sicurezza risiedono su un singolo dispositivo.

  1. Dual-Homed Gateway (Gateway a Doppia Interfaccia)

● Descrizione: Questo modello introduce un host (spesso un server dedicato o un computer) che agisce da firewall. Questo host ha due interfacce di rete (dual-homed): una connessa alla rete esterna (Internet) e l'altra connessa alla rete interna (LAN). Il routing IP tra le due interfacce è tipicamente disabilitato per forza, costringendo tutto il traffico a passare attraverso il software del firewall.

● Come Funziona: Il firewall host esamina tutto il traffico. Nessun pacchetto può passare direttamente dall'interfaccia esterna all'interfaccia interna senza essere processato dal software del firewall sull'host. Spesso implementa proxy a livello di applicazione.

  1. Screened Host Gateway (Gateway con Host Filtrato)

● Descrizione: Questa architettura combina un router di screening con un firewall host (Application Gateway o Bastion Host). Il router di screening filtra il traffico in ingresso, dirigendo solo il traffico autorizzato (es. per un server web pubblico) verso il firewall host, che poi lo gestisce. ● Come Funziona: ○ Il router di screening blocca la maggior parte del traffico non autorizzato direttamente. ○ Permette il traffico per servizi specifici (es. web, email) solo verso l'indirizzo IP del firewall host (Bastion Host). ○ Il Bastion Host (un server altamente rafforzato e sicuro) ospita i servizi esposti all'esterno (es. server web, FTP, email) o funge da proxy per l'accesso ai servizi interni. Questo host è il primo punto di contatto dall'esterno ed è progettato per resistere agli attacchi. Se il Bastion Host viene compromesso, la rete interna è ancora protetta dal router di screening.

  1. Screened Subnet (Sottorete Filtrata) o DMZ (Demilitarized Zone)

● Descrizione: Questa è la configurazione di firewall più sicura e comune per le aziende moderne. Crea una rete perimetrale isolata (chiamata DMZ - Demilitarized Zone) tra la rete esterna e la rete interna. La DMZ ospita i server che devono essere accessibili da Internet (es. server web, email, DNS). ○ Firewall Esterno: Connesso a Internet e alla DMZ. Permette il traffico da Internet solo verso la DMZ. ○ DMZ: Contiene server pubblici (web server, mail server, DNS server, ecc.). Non contiene dati sensibili della LAN. ○ Firewall Interno: Connesso alla DMZ e alla LAN. Permette il traffico dalla DMZ alla LAN solo per servizi specifici e in modo controllato. Blocca la maggior parte del traffico diretto dalla DMZ alla LAN e tutto il traffico non autorizzato dalla LAN alla DMZ. ● Come Funziona: ○ Il traffico da Internet verso la LAN è bloccato. ○ Il traffico da Internet verso la DMZ è consentito solo per i servizi specifici ospitati nella DMZ. ○ Il traffico dalla DMZ alla LAN è strettamente limitato e controllato. ○ Il traffico dalla LAN a Internet è permesso.

Firewall in Cascata

Il termine " firewall in cascata " si riferisce a una configurazione di rete in cui due o più firewall sono disposti in serie (uno dopo l'altro) , creando più livelli di difesa per una rete o un segmento di essa. L'idea è quella di implementare una difesa a più strati o difesa in profondità

Principio Fondamentale: Difesa in Profondità

La difesa in profondità è una strategia di sicurezza che impiega un approccio multistrato e diversificato per la protezione. Invece di affidarsi a un singolo punto di controllo (che, se fallisce,

  • è in grado di riferire il traffico agli utenti mantiene log sofisticati FTP
  • porta 20 (dati) e porta 21 (controllo)
  • collegamento iniziale al server FTP su porta 21
  • file transfer richiesto dal client con ‘GET’ e ‘PORT’
  • client FTP aspetta dati sulla porta indicata
  • trasferimento file da porta 20 remota a porta indicata soluzione per FTP
  • vietare FTP
  • firewall / filtro ‘application aware’ o ‘stateful’ (quindi con memoria - ricorda la porta dati lato client e permette la connessione solo su quella porta e su quell’indirizzo)
  • usare FTP modificato

gestione firewall

  • Una macchina affidabile e veloce, in manutenzione, se possibile con fault-tolerance / high availability (HA), oppure una appliance
  • Sistema operativo e servizi ‘minimi’
  • No utenti, no NIS, no NFS
  • Massima attenzione nella protezione di file, password, chiavi crittografiche
  • esaminare file di log

WAF (Web Application Firewall)

Un WAF (Web Application Firewall) è un tipo specifico di firewall progettato per proteggere le applicazioni web da una varietà di attacchi a livello di applicazione (livello 7 del modello OSI). A differenza dei firewall di rete tradizionali che filtrano il traffico basandosi principalmente su indirizzi IP, porte e protocolli di basso livello, un WAF ispeziona il traffico HTTP/HTTPS e cerca schemi di attacco specifici diretti contro le vulnerabilità delle applicazioni web.

Come Funziona:

Il WAF si posiziona tra gli utenti e l'applicazione web (solitamente un web server). Intercetta tutte le richieste HTTP/HTTPS in entrata dirette all'applicazione e tutte le risposte in uscita dall'applicazione. Analizza il contenuto di queste comunicazioni e, basandosi su un insieme di regole di sicurezza (spesso chiamato "policy"), decide se permettere, bloccare o monitorare il traffico.

Reverse Proxy (Proxy Inverso)

Un Reverse Proxy (Proxy Inverso) è un server che si posiziona davanti a uno o più server web e intercetta tutte le richieste in entrata da Internet dirette a quei server. Il reverse proxy inoltra le richieste ai server interni appropriati e poi restituisce le risposte dei server agli utenti.

Come Funziona:

● Gli utenti si connettono al reverse proxy, non direttamente al server web finale. ● Il reverse proxy prende la richiesta dell'utente e la inoltra a uno dei server web "reali" (spesso chiamato "origin server") dietro di esso. ● Quando il server reale risponde, la risposta torna al reverse proxy, che a sua volta la inoltra all'utente.

Benefici della Combinazione WAF-Reverse Proxy:

  1. Protezione Completa: Unisce le capacità di protezione di un reverse proxy (nascondere i server, bilanciare il carico, terminare SSL) con le capacità di sicurezza avanzate di un WAF (blocco attacchi a livello applicativo).
  2. Isolamento: La web application è isolata da Internet, e solo il WAF/reverse proxy è esposto direttamente.
  3. Ottimizzazione: Le funzionalità di caching e SSL offloading del reverse proxy migliorano le prestazioni.
  4. Conformità: Aiuta le organizzazioni a soddisfare i requisiti di conformità (es. PCI DSS) per la protezione delle applicazioni web.

firewall non risolve tutto

  • non evita il problema di password deboli
  • non filtra traffico via modem
  • non tratta attacchi dall’interno
  • non evita problemi di sicurezza sui servizi e sui protocolli aperti verso l’esterno
  • non protegge da virus o simile portato su dischetto
  • evitare il ‘denial of service’

CONNETTERE PIU’ LAN IN MODO SICURO CON IPsec obbiettivi:

  • avere la stessa sicurezza che si avrebbe con una rete locale
  • permettere anche traffico da e verso reti esterne, se necessario attraverso firewall
  • non introdurre ritardi significativi
  • non richiedere operazioni di riconfigurazione agli utenti buona soluzione → VPN (virtual private network) → Ipsec la PDU (protocol data unit) trasportata dal pacchetto IP è cifrata e/o autenticata, e all’ header IP vengono aggiunte informazioni che permettono al ricevente autorizzato di decifrare e/o verificare l’autenticità e l’integrità del messaggio conseguenze
  • i router vedono indirizzi mittente e destinatario così come appaiono nell’ header IP
  • i router non vedono la PDU se cifrata
  • i router non possono modificare i messaggi senza che ciò sia visibile per il ricevente se la PDU è autenticata
  • le reti aziendali sono protette da intercettazioni e modifiche su internet
  • cifratura e autenticazione vengono gestite solo sulle LAN sorgente e destinazione
  • IPsec non protegge da attacchi all’interno delle LAN private e dai rischi di sicurezze legati a servizi offerti verso l’esterno problemi
  • come mascherare anche il traffico (nascondere indirizzi mittente e destinatario)
  • come proteggersi da sniffing/ spoofing all’interno delle LAN private IPsec
  • transport mode → cifratura e autenticazione su computer mittente e destinatario
  • Protegge da sniffing/spoofing su rete locale
  • Rende visibile su Internet gli indirizzi mittente e destinatario
  • Richiede una speciale configurazione del computer utente (non trasparente)
  • Necessario per traffico da postazione mobile
  • tunnel mode → cifratura e autenticazione su firewall o router
  • Non protegge da sniffing/spoofing su rete locale

SQL Injection (SQLi)

Una SQL Injection (SQLi) , o Iniezione SQL , è una vulnerabilità di sicurezza web che permette a un attaccante di interferire con le query SQL che un'applicazione esegue sul suo database. Questo avviene iniettando codice SQL malevolo in un campo di input dell'applicazione (ad esempio, un campo di ricerca, un campo di login, un modulo di contatto).

Se l'applicazione non gestisce correttamente gli input dell'utente, questo codice SQL malevolo può essere interpretato ed eseguito dal database, permettendo all'attaccante di manipolare i dati del database, bypassare l'autenticazione, o addirittura compromettere l'intero sistema.

Come Funziona una SQL Injection (Esempio Semplice)

Immagina un'applicazione web che ha una pagina di login. Quando un utente inserisce un nome utente e una password, l'applicazione costruisce una query SQL per verificare le credenziali nel database.

Tipi di SQL Injection

Esistono diverse varianti di SQL Injection, ognuna con tecniche leggermente diverse:

  1. In-band SQLi (Error-based & Union-based):

○ Error-based: L'attaccante induce il database a generare messaggi di errore (che sono poi visualizzati dall'applicazione web) contenenti informazioni sensibili del database. Union-based: L'attaccante utilizza l'operatore UNION per combinare i risultati della query originale con i risultati di una query arbitraria iniettata (es. per estrarre dati da altre tabelle).

  1. Inferential SQLi (Blind SQLi):

○ Boolean-based: L'attaccante invia query che restituiscono una risposta vero/falso, e deduce le informazioni dal comportamento dell'applicazione (es. se la pagina cambia o meno). Non estrae dati direttamente. Time-based: L'attaccante invia query che, se una condizione è vera, causano un ritardo temporale nel database (es. SLEEP(5)). Deducedo le informazioni in base al tempo di risposta. Molto lenta ma efficace quando non ci sono altri indicatori.

3. Out-of-band SQLi:

○ L'attaccante fa in modo che il database invii dati a un server controllato dall'attaccante (es. tramite richieste DNS o HTTP dal database stesso). Richiede che il database possa effettuare richieste di rete.

Conseguenze di una SQL Injection

Le conseguenze di una SQL Injection possono essere devastanti:

Bypass dell'autenticazione: Accesso non autorizzato a account utente o aree amministrative. ● Estrazione di dati: Furto di dati sensibili (informazioni personali degli utenti, credenziali, dettagli finanziari, proprietà intellettuale). ● Modifica / Eliminazione di dati: Alterazione o cancellazione di dati nel database.

Esecuzione remota di codice : In alcuni casi, l'attaccante può eseguire comandi sul server che ospita il database. ● Negazione del servizio ( DoS ): Corrompere il database o bloccare l'accesso.

Cross-Site Scripting (XSS)

Il Cross-Site Scripting (XSS) è una vulnerabilità di sicurezza web che consente agli attaccanti di iniettare script malevoli (tipicamente codice JavaScript) nelle pagine web visualizzate da altri utenti. Quando gli utenti visitano la pagina compromessa, il browser esegue lo script iniettato, pensando che provenga dal sito web legittimo.

L'obiettivo dell'attaccante non è compromettere direttamente il server o il database (come in una SQL Injection), ma piuttosto danneggiare gli utenti dell'applicazione web, sfruttando la loro fiducia nel sito.

Come Funziona l'XSS

L'XSS si verifica quando un'applicazione web:

  1. Accetta un input dall'utente (ad esempio, un commento, un campo di ricerca, un messaggio in un forum).
  2. Non valida o non "sanifica" correttamente questo input.
  3. Include l'input non sanificato nella risposta HTML inviata al browser di un altro utente.

Quando il browser dell'utente visualizza la pagina, esegue lo script malevolo come se fosse parte legittima del sito.

Esistono tre tipi principali di XSS:

  1. Reflected XSS (XSS Riflesso o Non Persistente):

○ Lo script malevolo viene "riflesso" immediatamente all'utente come parte della risposta del server, basandosi su un input fornito in una singola richiesta HTTP. ○ L'attaccante di solito invia un URL malevolo alla vittima (es. tramite email di phishing). Quando la vittima clicca sul link, lo script viene eseguito. ○ Esempio: Un campo di ricerca vulnerabile: https://esempio.com/ricerca?q= Un altro oggetto risulta raggiungibile anche dopo, anche da un altro utente, usando la stessa URL con parametri modificati facilmente indovinabili, es. http://www.sito.it/path?account=xy_

  • CSRF (cross site request forgery) → Un sito permette operazioni critiche agli utenti autorizzati previa autenticazione, durante la stessa sessione, es. www.sito.it/bonifico?euro=200&conto= Lo stesso utente autorizzato apre una pagina fraudolenta in un’altra scheda, che lo porta ad richiedere una diversa operazione, all’interno della sessione autenticata:
  • Security misconfiguration → Ad esempio: Il framework di sviluppo non è aggiornato Installo un pacchetto lato server ma non cambio gli utenti di default (es. user admin, password admin) Directory listing in Apache
  • Insecure cryptographic storage → Ad esempio: Dati riservati sono memorizzati in chiaro, oppure la chiave è memorizzata in chiaro, sul server o sui backup Password e chiavi crittografiche deboli rispetto a guessing e cracking Password “unsalted”
  • Failure to restrict URL access → Un utente, previa autenticazione, può raggiungere una certa URL, es. www.sito.it/dati_pubblici.html Lo stesso utente, o un altro, riesce ad indovinare una URL simile, che però non risulta protetta, es. www.sito.it/dati_privati.html
  • Insufficient transport layer protection → SSL solo su alcune delle pagine o componenti riservate. Certificati scaduti o con CA non riconosciute. In generale, possibilità di intercettare il traffico (es. Arp / DNS spoofing)
  • Unvalidated redirects and forwards → Es.: L’utente prevede delle pagine che ridirezionano l’utente verso una URL ottenuta a partire da un parametro – l’utente può cliccare su un link che lo porta al sito, ma poi lo ridireziona su un sito pericoloso. Stessa cosa per i forward interni altre vulnerabilità
  • DOS (OWASP top ten – entry A9 – nel 2004), es.:
  • syn flooding
  • “smurf”
  • Insufficient Anti-automation, es.:
  • biometrics
  • captcha
  • Phishing
  • Metodi di autenticazione per online banking es.:
  • one time passwords
  • password dispositive
  • SSL client authentication
  • autenticazione con firma elettronica