Quantcast
Channel: Serverplan Blog
Viewing all articles
Browse latest Browse all 39

Cosa sono e come prevenire gli attacchi SQL Injection

$
0
0

Chi gestisce un sito web sa bene che le minacce sono infinite e che la minaccia può nascondersi dietro l’angolo. Non a caso, abbiamo più volte considerato le tecniche per rendere WordPress più sicuro, consigliando anche un hosting in grado di garantire determinati standard. Tipo quello di Bitninja. Ma c’è una minaccia che spesso fa tremare anche i webmaster più esperti: gli attacchi SQL Injection (SQLi). Vale a dire?

Cosa sono e come prevenire gli attacchi SQL Injection

Noi sappiamo che un sito web può essere attaccato in modi differenti: si parte dal classico abuso di messaggi e commenti spam fino a innesti di codice malevolo per danneggiare i competitor. A volte le tecniche black hat SEO permettono di inserire link spam nelle pagine web con il duplice obiettivo: guadagnare collegamenti ipertestuali e renderti meno autorevole agli occhi di Google. Questo avviene anche con attacchi al database WordPress. Vuoi approfondire l’argomento e rendere il tuo sito web a prova di hacker non etici, malintenzionati e concorrenti sleali?

Cos’è una SQL Injection, spiegazione

Dobbiamo iniziare dalla base. Sappiamo che WordPress – così come altri CMS – permette di creare siti web dinamici grazie alla presenza di un database creato con MySQL e gestito da phpMyAdmin.

Questa combinazione di colonne e righe che creano delle celle consente di gestire relazioni di dati in modo da ottenere relazioni utili alla personalizzazione di un portale internet. Di conseguenza?

Ogni database rappresenta un punto di forza ma anche di debolezza. Qui si inserisce la SQL Injection che non è altro che un attacco informatico volto a inserire codice malevolo negli input con l’obiettivo di eseguire comandi non desiderati dal proprietario del database. Una volta ottenuto il risultato, il malintenzionato può accedere ai dati sensibili e svolgere una serie di azioni dannose per il tuo business. Come puoi facilmente intuire, non c’è neanche bisogno di chiedere se fare SQL Injection è un’attività legale: assolutamente no, rappresenta un crimine informatico che può essere punito dalla legge.

Quali sono gli scopi di quest’azione?

Ci possono essere diversi motivi che portano un hacker black hat (o cracker) a svolgere un’azione del genere. Si inizia dall’enumerazione del database per scoprire le sue caratteristiche alla grave individuazione dei dati sensibili. Una volta violato il database, infatti, basta eseguire una query per ottenere nomi utente, password, email, numeri di carte di credito se stiamo parlando di un e-commerce e altro ancora. Le opzioni sono infinite.

Con un attacco al database, il criminale informatico può portare a un esaurimento delle risorse con rallentamento o blocco dei lavori. Senza dimenticare una delle conseguenze peggiori: ottenere l’accesso all’applicazione e intervenire sul sito web in qualsiasi modo. Appare chiaro che, a questo punto, bisogna fare qualcosa per proteggersi da questo problema. Come affrontare un attacco SQL Injection e mettere il sito in sicurezza?

Come prevenire le SQL Injection

Ci sono diverse attività che puoi fareper evitare casi di SQL Injection. Il primo consiglio è, ovviamente, quello di utilizzare un hosting di qualità con un livello di sicurezza elevato e un buon sistema di firewall. Nello specifico, serve una protezione concreta per applicazioni web. Ovvero, stiamo parlando di una forma specifica destinata a web application. Il compito è semplice: filtra, monitora e blocca il traffico HTTP da e verso un servizio.

Noi proponiamo Bitninja che mette al sicuro il tuo database con un robusto web application firewall (dai uno sguardo qui). Inoltre, ci assicuriamo di aggiornare sempre il software del database e tutte le librerie utilizzate. Altri consigli per proteggerti dalle SQL Injection? Devi sfruttare le dichiarazioni preparate che separano il codice SQL dai dati che vengono passati come parametri vincolati (Prepared Statements) invece di concatenare le stringhe.

-- Esempio in PHP
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
$stmt->execute(['username' => $username]);
$user = $stmt->fetch();

Oltre a limitare i privilegi a ogni account, in modo da evitare danni e rischi inutili, devi operare sul lavoro di validazione e sanificazione dell’input è altrettanto importante. Verifica sempre l’input dell’utente prima di utilizzarlo in una query e sfrutta le funzioni di escape specifiche per il tuo database.

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

Qui in alto puoi scoprire come procedere con la verifica e la sanificazione. Poi serve un buon lavoro di intelligence e segretezza. Codifica sempre l’output del database prima di mostrarlo agli utenti. Cifra le informazioni sensibili nel database e utilizza strumenti di monitoraggio in tempo reale per rilevare tentativi di intrusione. Usa i log solo per fare analisi interna e non mostrare messaggi di errore dettagliati agli utenti finali.

Come prevenire le SQL Injection
Schermata di Sqlmap.

Una soluzione: utilizzare tool come Sqlmap per verificare la resistenza con delle prove. Nello specifico, sqlmap è uno software di penetration test open source che automatizza il processo di rilevamento e sfruttamento dei difetti che consentono a un attacco SQL Injection di trovare la giusta chiave.

Un esempio di SQL Injection

Chiaramente, come indicato anche nel paragrafo precedente, il lavoro di SQL injection è illegale. Quindi, l’unico modo per fare degli esempi è prendere spunto da finti ufficiali per illustrare i meccanismi di funzionamento. Come suggerisce anche www.w3schools.com, uno degli esempi tipici è la SQL Injection di autenticazione basata su un semplice dettaglio, un passaggio logico che elimina un parametro di sicurezza. Ecco la stringa:

L’ultimo elemento permette a chi sta violando il database di fare un bypass dell’autenticazione dato che il nome utente viene aggirato con un’affermazione sempre vera. Ovvero, 1 è uguale a 1. Attività come queste permettono di generare ganni ingenti ai singoli webmaster e alle aziende.

AI: vantaggi dell’intelligenza artificiale

Chiudiamo con una riflessione sul ruolo dell’intelligenza artificiale. Oggi, è molto più semplice creare delle combinazioni di comandi per pulire il tuo database WordPress. D’altro canto, almeno con soluzioni base come ChatGPT, viene bloccata qualsiasi richiesta per ottenere delle indicazioni. Infatti, se chiedi informazioni su come violare un database ottieni risposta negativa, l’intelligenza artificiale si rifuta di seguirti in questo crimine.

L'articolo Cosa sono e come prevenire gli attacchi SQL Injection sembra essere il primo su Serverplan Blog.


Viewing all articles
Browse latest Browse all 39