CVE-2026-96633 AdminNeo: cancellazione di file arbitrari, come verificare e aggiornare

Vincenzo Katriel Giuva31 ottobre 20266 min di lettura
CVE-2026-96633 AdminNeo: cancellazione di file arbitrari, come verificare e aggiornare

CVE-2026-96633 è una vulnerabilità di gravità alta (CVSS 8.1) in AdminNeo, il pannello PHP per la gestione dei database derivato da Adminer. Un utente autenticato in modalità SQLite può far cancellare al server qualsiasi file scrivibile dal processo PHP, anche se non è un database. Sono colpite le versioni del pacchetto composer adminneo-org/adminneo precedenti alla 5.5.1. Se usi AdminNeo su un hosting, un VPS o in un container, verifica la versione e aggiorna.

Cosa è successo: la vulnerabilità CVE-2026-96633 in AdminNeo

AdminNeo è un'interfaccia web, in un solo file PHP o installabile via composer, che permette di amministrare database MySQL, PostgreSQL, SQLite e altri. La vulnerabilità, tracciata anche come GHSA-6vfx-w7q3-42gq, riguarda l'azione di eliminazione dalla lista dei database quando il driver in uso è SQLite.

Il problema è un'incoerenza nei controlli. Quando crei o rinomini un database SQLite, AdminNeo verifica con la funzione check_sqlite_name() che il nome termini con l'estensione .db, .sdb o .sqlite. Quando invece elimini un database dalla lista, la funzione drop_databases() prende i valori del campo db[] inviati via POST e li passa direttamente a unlink(), senza controllare l'estensione né verificare che il percorso corrisponda a un database realmente elencato. La falla era stata segnalata in origine su Adminer (GHSA-6pg3-chwq-wgqc) e si ritrova nel codice ereditato da AdminNeo.

Chi è colpito: versioni vulnerabili di AdminNeo

Secondo l'advisory ufficiale sono interessate tutte le versioni di adminneo-org/adminneo inferiori alla 5.5.1, indipendentemente dal modo in cui l'hai installato: pacchetto composer, file PHP standalone copiato nella web root o immagine Docker costruita dal sorgente.

Per sfruttare la falla servono due condizioni:

  • l'attaccante deve avere una sessione autenticata sull'ingresso SQLite di AdminNeo e un token CSRF valido;
  • il file da cancellare deve essere scrivibile dall'utente con cui gira PHP (ad esempio www-data).

Il rischio cresce se il pannello è raggiungibile da internet, se le credenziali sono condivise tra più persone o se il processo PHP ha permessi di scrittura su tutta la web root, come accade spesso su hosting economici e container configurati di fretta.

Quanto è grave: punteggio CVSS e sfruttamento attivo

Il punteggio è 8.1, gravità HIGH, con vettore CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H. Tradotto: attacco via rete, bassa complessità, servono privilegi bassi (un account), nessuna interazione di altri utenti, nessun impatto sulla riservatezza, impatto alto su integrità e disponibilità.

Non si tratta di esecuzione di codice remoto né di furto di dati. L'attaccante ottiene una cancellazione arbitraria di file: può eliminare altri database SQLite, file di configurazione, un .htaccess che protegge una cartella, pagine dell'applicazione o qualsiasi altro file scrivibile da PHP. In pratica un denial of service mirato e una perdita di integrità del sistema, con la possibilità di indebolire altre difese.

Al momento la vulnerabilità non risulta nel catalogo CISA KEV, quindi non ci sono conferme pubbliche di sfruttamento attivo. L'advisory però contiene un proof of concept completo, con la richiesta HTTP esatta, perciò replicarla non richiede competenze particolari.

Come capire se sei esposto: verifica versione, esposizione e log

Leggere la versione di AdminNeo installata

  • Con composer, dalla cartella del progetto: composer show adminneo-org/adminneo.
  • Con il file standalone, la versione è indicata nella pagina di login o nell'intestazione del file PHP stesso.
  • Con Docker, controlla il tag dell'immagine e, dentro il container, il sorgente copiato in /var/www/html.

Verificare se il pannello è raggiungibile da internet

Prova ad aprire l'URL di AdminNeo da una rete esterna (ad esempio dal telefono con la rete mobile) o usa curl -I https://tuodominio/percorso-adminneo da un'altra macchina. Controlla poi il vhost di Nginx o Apache e le regole del firewall: se risponde senza restrizioni di IP o VPN, è esposto.

Cosa cercare nei log

  • Nel log degli accessi del web server, richieste POST verso l'endpoint di AdminNeo con parametro sqlite=; l'eventuale corpo della richiesta non viene registrato di default, quindi conta il contesto: ora, IP, sessione.
  • File mancanti o applicazioni che hanno smesso di funzionare senza un intervento noto.
  • Se hai un file integrity monitoring (AIDE, Tripwire, Wazuh), eventi di cancellazione nella web root.
  • Accessi a AdminNeo da IP o orari anomali.

Come risolvere la vulnerabilità: patch, aggiornamento e rimedio

L'advisory indica come versione corretta la 5.5.1, con il commit di fix pubblicato nel repository ufficiale. Per aggiornare:

  1. Con composer: composer update adminneo-org/adminneo, poi verifica con composer show che la versione sia 5.5.1 o successiva.
  2. Con il file standalone: scarica la release v5.5.1 dalla pagina ufficiale delle release su GitHub e sostituisci il file in produzione.
  3. Con Docker: ricostruisci o scarica l'immagine basata sulla 5.5.1 e riavvia il container.

Prima di aggiornare confronta sempre la versione indicata nell'advisory del produttore, perché le note di rilascio possono cambiare. Se per qualunque motivo non puoi aggiornare subito, applica le mitigazioni della sezione seguente e considera di rimuovere il pannello dalla produzione.

Cosa fare subito: mitigazioni e hardening

  1. Limita l'accesso al pannello. Allowlist di IP, VPN o almeno un'autenticazione HTTP davanti ad AdminNeo. Un pannello di amministrazione dei database non dovrebbe mai essere aperto a tutta internet.
  2. Riduci i permessi del processo PHP. Il codice dell'applicazione e le cartelle di sistema devono essere in sola lettura per l'utente PHP; scrivibile solo la cartella dove stanno i database SQLite. Così anche un exploit riuscito cancella poco.
  3. Disattiva il driver SQLite se non lo usi, dove la configurazione di AdminNeo lo consente. Verifica la procedura nella documentazione ufficiale.
  4. Ruota le credenziali degli accessi SQLite e revoca gli account non più necessari. La falla richiede un login: meno account, meno rischio.
  5. Controlla i backup. Un attacco di cancellazione file si ripara ripristinando; verifica che i backup esistano e che il ripristino sia stato testato. Se non hai un piano, parto da qui: disaster recovery per PMI.
  6. Rimuovi AdminNeo dai server dove serve solo ogni tanto: caricalo quando ti serve e cancellalo dopo.

Molti di questi controlli valgono per qualsiasi applicazione PHP esposta e li ritrovi anche nei 10 controlli di sicurezza per un sito WordPress.

Se sospetti una compromissione: incident response e analisi forense

Se trovi file cancellati senza spiegazione o accessi anomali ad AdminNeo, non reinstallare tutto e non sovrascrivere il server: cancelleresti le prove.

  • Non spegnere la macchina se puoi isolarla a livello di rete; su un hypervisor fai uno snapshot della VM, memoria inclusa.
  • Preserva i log del web server, di PHP e del sistema copiandoli altrove prima che vengano ruotati.
  • Fai eseguire una copia forense del server o del disco prima di qualsiasi ripristino, così l'analisi e l'eventuale denuncia poggiano su dati integri.
  • Ricostruisci cosa è stato cancellato e se la stessa sessione ha fatto altro.
  • Se la cancellazione ha reso indisponibili dati personali, valuta con il titolare del trattamento la notifica al Garante prevista dall'art. 33 del GDPR, entro 72 ore dalla scoperta.

Come perito informatico forense seguo questi casi con un incarico a prezzo fisso: l'incident response va da 1.500 a 6.000 euro, un audit di sicurezza completo dell'infrastruttura da 2.000 a 8.000 euro, con maggiorazione del 50% per le urgenze.

Fonti ufficiali

Hai AdminNeo in produzione e non sai da dove partire?

Posso verificare la versione, l'esposizione del pannello e i permessi del processo PHP sui tuoi server, applicare l'aggiornamento e, se serve, analizzare i log per capire se qualcuno ha già sfruttato la falla. Lavoro di persona a Varese, Como, Milano e Nord Lombardia, da remoto nel resto d'Italia. Chiedi un preventivo gratuito: rispondo entro 24 ore, anche su WhatsApp.

#CVE#CVE-2026-96633#AdminNeo#adminneo-org/adminneo#SQLite#sicurezza web

Condividi l'articolo

LinkedInTwitter