CVE-2026-66066, la vulnerabilità critica di Ruby on Rails che espone segreti e credenziali
La vulnerabilità CVE-2026-66066 in Ruby on Rails espone credenziali e secret key. Scopri come aggiornare Active Storage e mitigare il rischio.
Immagine illustrativa generata con AI
I manutentori di Ruby on Rails hanno rilasciato aggiornamenti di sicurezza per correggere una grave falla nel componente Active Storage. Identificata come CVE-2026-66066 e con un punteggio CVSS di 9.5, la vulnerabilità consente a un attaccante non autenticato di leggere file arbitrari dal server. Il rischio maggiore è l’esposizione del SECRET_KEY_BASE e di altre credenziali, con la possibilità concreta di eseguire codice da remoto e muoversi lateralmente verso altri sistemi.
Active Storage non disabilitava le operazioni “unfuzzed” di libvips
La radice del problema sta nell’interazione tra Active Storage e la libreria libvips, impiegata per elaborare le immagini caricate dagli utenti. All’interno di libvips alcune operazioni sono classificate come unfuzzed, termine che indica la loro pericolosità quando vengono applicate a contenuti non fidati. In questi casi, le operazioni andrebbero disattivate. Active Storage, però, non lo faceva.
Un file immagine costruito ad arte può quindi forzare la lettura di qualunque file accessibile al processo applicativo: variabili d’ambiente, configurazioni e soprattutto il SECRET_KEY_BASE di Rails e le credenziali per database, API esterne e servizi cloud. Per sferrare l’attacco basta che un utente non autenticato possa caricare un’immagine, condizione comune a moltissime applicazioni web.
La versione di libvips è determinante. Solo dalla release 8.13 la libreria offre un controllo esplicito per disabilitare le operazioni “unfuzzed”. Versioni precedenti non permettono questa protezione, rendendo l’aggiornamento doppiamente necessario: Active Storage deve essere patchato per richiedere la disabilitazione e libvips deve essere in grado di applicarla.
Dalla lettura di file all’esecuzione di codice: perché il pericolo è massimo
Leggere file arbitrari è già un incidente grave, ma qui il danno può amplificarsi in fretta. Con il SECRET_KEY_BASE un aggressore può falsificare sessioni, generare token validi e, in molti scenari, ottenere l’esecuzione di codice remoto sfruttando meccanismi di serializzazione o altre funzionalità del framework. Le credenziali per sistemi esterni (database, storage, API) aprono poi la strada al movimento laterale: dall’applicazione Rails ci si può spostare ad altri componenti dell’infrastruttura, estendendo la compromissione.
Il punteggio CVSS di 9.5 riflette proprio questa catena: vettore d’attacco semplice (upload di un’immagine), nessuna autenticazione richiesta, impatto elevatissimo su riservatezza, integrità e disponibilità. Secondo Rapid7, al 30 luglio non erano stati rilevati casi di sfruttamento attivo in rete. L’assenza di exploit pubblici, tuttavia, non riduce l’urgenza: il tempo tra la divulgazione e i primi tentativi di attacco può ridursi a poche ore.
Come mettere in sicurezza la propria applicazione
Le patch per Active Storage sono disponibili nelle versioni 7.2.3.2, 8.0.5.1 e 8.1.3.1. Chi usa una versione supportata deve applicare subito l’aggiornamento. Contestualmente bisogna portare libvips alla release 8.13 o successiva: senza questo passaggio, la correzione lato Rails sarebbe inefficace perché la libreria non potrebbe disabilitare le operazioni pericolose.
C’è un ulteriore passaggio critico: la rotazione dei segreti. Se l’applicazione è stata esposta prima dell’aggiornamento, tutte le credenziali accessibili al processo – chiavi di sessione, SECRET_KEY_BASE, token API, password di database, credenziali cloud – vanno immediatamente sostituite. Applicare la patch senza ruotare i segreti lascerebbe di fatto la porta aperta a chi avesse già estratto le credenziali in precedenza.
Infine, è consigliabile verificare i log applicativi e di sistema cercando accessi anomali o upload di immagini sospetti, anche se la natura dell’attacco (lettura di file) può non lasciare tracce evidenti.
Fonti
Questo articolo è una rielaborazione originale basata sulle fonti seguenti.




