Il 36% degli Hack WordPress Passa da un Plugin Vulnerabile. Lo Scan Automatico Li Trova Prima.
Il dato Sucuri è chiaro: un terzo delle infezioni WordPress viene da plugin con vulnerabilità note. Non zero-day. Vulnerabilità pubblicate, con CVE assegnato, con patch disponibile. Ma il sito non era aggiornato.
Il vulnerability scanning automatico chiude questo gap: controlla regolarmente i plugin installati contro il database delle vulnerabilità note e ti avvisa prima che qualcuno le sfrutti.
I 3 Approcci al Vulnerability Scanning
Approccio 1: WPScan Database + WP-CLI
WPScan mantiene il database di vulnerabilità WordPress più completo. La API free permette 25 richieste/giorno (sufficiente per un sito).
#!/bin/bash
# vulnerability-scan.sh - Controlla plugin contro WPScan DB
WPSCAN_TOKEN="il-tuo-token-api"
SITE_PATH="/var/www/html"
cd "$SITE_PATH"
# Lista plugin con versione
wp plugin list --fields=name,version --format=csv | tail -n +2 | while IFS=',' read -r name version; do
# Query WPScan API
response=$(curl -s "https://wpscan.com/api/v3/plugins/$name" \
-H "Authorization: Token token=$WPSCAN_TOKEN")
# Controlla se ci sono vulnerabilità per questa versione
vulns=$(echo "$response" | jq -r ".\"$name\".vulnerabilities[]? | select(.fixed_in != null) | select(.fixed_in > \"$version\") | .title" 2>/dev/null)
if [ -n "$vulns" ]; then
echo "⚠️ $name ($version): VULNERABILE"
echo "$vulns" | head -3
echo ""
fi
done
Schedulalo con cron (giornaliero) e invia i risultati via email se ci sono vulnerabilità.
Approccio 2: Patchstack (virtual patching)
Patchstack non solo trova le vulnerabilità: le patcha virtualmente. Quando una vulnerabilità viene pubblicata e il plugin non ha ancora rilasciato l’aggiornamento, Patchstack applica una regola WAF che blocca lo sfruttamento.
È come avere un cerotto sulla ferita finché il chirurgo non arriva.
Piano Community (free): alert vulnerabilità. Piano Developer ($5/sito/mese): virtual patching + dashboard multi-sito.
Approccio 3: AI-Powered Analysis
Combina i dati WPScan con Claude API per un’analisi più intelligente:
function ai_vulnerability_analysis(): string {
$claude = $GLOBALS['claude'];
// Raccogli lista plugin con versione
ob_start();
WP_CLI::run_command(['plugin', 'list', '--format=json']);
$plugins = json_decode(ob_get_clean(), true);
// Raccogli info WordPress
$wp_version = get_bloginfo('version');
$php_version = phpversion();
$prompt = "Analizza questa installazione WordPress per rischi di sicurezza:\n\n"
. "WordPress: {$wp_version}\n"
. "PHP: {$php_version}\n"
. "Plugin installati:\n" . json_encode($plugins, JSON_PRETTY_PRINT) . "\n\n"
. "Per ogni plugin, valuta:\n"
. "1. È ancora mantenuto? (ultima release > 12 mesi = warning)\n"
. "2. Ha vulnerabilità note recenti?\n"
. "3. Rischio complessivo: basso/medio/alto\n"
. "4. Azione consigliata (aggiorna/sostituisci/rimuovi/ok)\n\n"
. "Rispondi con la lista dei plugin a rischio medio o alto.";
$result = $claude->query($prompt, [
'system' => 'Sei un security auditor WordPress. Conosci le vulnerabilità note dei plugin. Sii specifico e pratico.',
'max_tokens' => 2048
]);
return $result['content'];
}
L’AI aggiunge un livello di analisi che gli scanner automatici non fanno: valuta se un plugin è ancora mantenuto, se la versione PHP è compatibile con le patch di sicurezza, e suggerisce alternative per plugin abbandonati.
Automazione per Multi-Sito
Se gestisci 30 siti, non puoi fare scan manuali. Ecco lo script per scannerizzare tutti i siti e generare un report unico:
#!/bin/bash
# scan-all-sites.sh
SITES=(
"/var/www/site1"
"/var/www/site2"
"/var/www/site3"
)
REPORT="/tmp/vulnerability-report-$(date +%Y-%m-%d).txt"
echo "Vulnerability Scan Report - $(date)" > "$REPORT"
echo "=================================" >> "$REPORT"
VULN_COUNT=0
for site in "${SITES[@]}"; do
site_name=$(basename "$site")
echo "" >> "$REPORT"
echo "--- $site_name ---" >> "$REPORT"
cd "$site"
# Plugin con aggiornamenti disponibili
updates=$(wp plugin list --update=available --fields=name,version,update_version --format=table 2>/dev/null)
if [ -n "$updates" ]; then
echo "$updates" >> "$REPORT"
VULN_COUNT=$((VULN_COUNT + $(echo "$updates" | wc -l) - 1))
else
echo "Tutti i plugin aggiornati ✅" >> "$REPORT"
fi
# Plugin inattivi (potenziale rischio)
inactive=$(wp plugin list --status=inactive --fields=name --format=csv 2>/dev/null | tail -n +2)
if [ -n "$inactive" ]; then
echo "Plugin inattivi (rimuovere): $inactive" >> "$REPORT"
fi
done
echo "" >> "$REPORT"
echo "Totale plugin da aggiornare: $VULN_COUNT" >> "$REPORT"
# Invia il report
if [ "$VULN_COUNT" -gt 0 ]; then
mail -s "⚠️ $VULN_COUNT plugin da aggiornare" admin@tuaagenzia.com < "$REPORT"
fi
Il Database delle Vulnerabilità
Dove trovare le vulnerabilità WordPress note:
| Fonte | Copertura | API | Costo |
|---|---|---|---|
| WPScan | La più completa per WordPress | ✅ REST API | Free (25 req/giorno) |
| Patchstack DB | WordPress + componenti | ✅ REST API | Free (solo DB) |
| Wordfence Intelligence | WordPress | ✅ Feed | Free |
| NVD (NIST) | Tutti i software | ✅ REST API | Free |
Checklist Vulnerability Management
- Giornaliero: scan automatico plugin contro WPScan DB (cron)
- Settimanale: review dei risultati, aggiornamento plugin con patch disponibili
- Mensile: review plugin inattivi (disinstallare), review plugin non mantenuti (sostituire)
- Trimestrale: audit completo con AI analysis + pen test manuale su siti critici
FAQ
WPScan free basta per un'agenzia?
Il free tier (25 API call/giorno) basta per 1-2 siti (20 plugin ciascuno = ~40 call). Per 30 siti serve il piano a pagamento o l'approccio WP-CLI che controlla solo gli update disponibili (senza API, ma meno preciso sulle CVE specifiche).
Plugin inattivi sono un rischio?
Sì. Un plugin inattivo ha ancora i suoi file PHP sul server. Se ha una vulnerabilità, è sfruttabile anche se disattivato. Regola: se non lo usi, disinstallalo (non solo disattivarlo).
Quanto costa un vulnerability scan professionale?
Automated scan: $0-50/mese (tool sopra). Pen test professionale: $500-5000 a seconda dello scope. Per siti standard, gli automated scan sono sufficienti. Per siti PA, e-commerce, o con dati sensibili, un pen test annuale è raccomandato.