EntiOnLine
Categorie
indietro
03/02/2020 CERT-PA: incidente di sicurezza cyber - SQLi

Che cos’è il SQLi?

Perché è rilevante?

Come ci si difende?

Cos’è tecnicamente?

Come si rimedia?

Il documento è riservato agli abbonati

Per qualsiasi informazione inerente i prezzi o le modalità di effettuazione del servizio, contatta l'agente di zona oppure scrivi a info@entionline.it
o telefona allo 030/2531939.

Il CERT-PA ha redatto un glossario rivolto ai dirigenti e responsabili della PA che per la prima volta si trovano a gestire un incidente di sicurezza cyber. L’elaborato è pensato come supporto alle comunicazioni di servizio che il CERT-PA quotidianamente gestisce ma può essere utile anche al lettore che privilegi un’inquadratura più generale e meno tecnica.

Dal Glossario si ricavano le seguenti risposte.

Che cos’è?
Il termine SQLi è l’abbreviazione di SQL Injection e denota una vulnerabilità che permette a terzi di alterare le basi dati utilizzate da un sito web.

Perché è rilevante?
Le basi dati dei siti web possono contenere informazioni molto sensibili, come ad esempio numeri di carta di credito, password, indirizzi e simili¹.
SQL è un insieme di comandi (un linguaggio) per la gestione delle basi di dati ivi compresi cancellazione, modifica ed interrogazione.
La possibilità di modificare questi comandi permette a terzi il controllo sulla base dati del sito, solitamente la finalità è il furto delle credenziali di accesso ma scenari più elaborati sono possibli.
Se un sito che frequentiamo regolarmente (e quindi in cui abbiamo registrato un nome utente ed una password) è soggetto a SQLi è molto probabile (se non certo) che il nostro nome utente e la nostra password vengano rubate.

Come mi difendo?
Per l’utilizzatore di un sito web con una vulnerabilità SQLi essa significa quasi sempre un furto di credenziali con conseguente furto di identità (sebbene bersagli più prestigiosi possano andare in contro a strategie di attacco meno evidenti).
Non è tradizionalmente ritenuto compito degli utilizzatori accertarsi che non esistano queste vulnerabilità prima di usare un sito web, l’approccio è invece di tipo difensivo: utilizzare password diverse per ogni sito, in modo da limitare i danni in caso di furto di credenziali.
Dato la consistente quantià di siti web utilizzati quotidianamente un approccio più pratico è quello di dividere i siti web in base alla sensibilità delle informazioni inserite e alle funzionalità del sito. Ad esempio si potrebbe avere una password diversa per l’home-banking, una per i social e per l’e-mail, una per il lavoro² ed una per tutti i siti spazzatura che siamo costretti ad usare³.

Cos’è tecnicamente?
Il mancato utilizzo di escape nei comandi SQL generati dinamicamente quando la sintassi del comando è controllabile direttamente o indirettamente dall’esterno.
Cercare dentro un sito tramite una barra di ricerca richiede interrogare la base dati con un comando che contiene le parole cercate, un mancato utilizzo di escape permette di cambiare il comando SQL usato dal sito web tramite ricerche con parole particolari.

Come si rimedia?
Il CERT-PA si augura che tu stia leggendo questa sezione solo per curiosità.
Utilizzare sempre e soltando prepared statement (PS) per eseguire comandi SQL.
Nei rari casi in cui i PS non siano sufficientemente espressivi (per esempio per i comandi con nomi di oggetti dinamici) utilizzare sempre e soltando valori in una whitelist.


¹ I siti web che trattano dati molto sensibili sono comunque chiamati a rispettare politiche di prevenzione multi strato che limitano i danni in caso di furto.
² Questo dipende dai servizi usati a lavoro ed in ogni caso la politica di sicurezza non deve essere inferiore a quella stabilita dal contesto lavorativo.

³ La classificazione dei siti e le relative implicazioni sono questioni non banali, il CERT-PA consiglia sempre di usare una password in più che una in meno.

Fonte: CERT-PA-Glossario

L'Avvocato cassazionista, amministrativo-contabile, Coordinatore/Responsabile del Servizio All-Anticorruzione

Banca dati