CVE-2026-49400 in October
Riassunto
di VulDB • 14/09/2026
October System fornisce il modulo di sistema per October Content Management System. Prima delle versioni 3.7.17 e 4.2.21, il trait `SessionMaker` del backend memorizzava lo stato della sessione dei widget come `base64(serialize(...))` e lo consumava tramite `unserialize()` senza alcuna restrizione su `allowed_classes`. Qualsiasi percorso di codice in grado di scrivere in una chiave di sessione `widget.*` con byte controllati dall'attaccante poteva innescare un'iniezione di oggetti PHP la prossima volta che il widget leggeva il proprio stato della sessione, consentendo l'istanziazione di classi arbitrarie e catene di gadget PHP raggiungibili. Questo problema interessa solo le installazioni eseguite con `cms.safe_mode` abilitato. Safe Mode è una funzionalità opzionale di nicchia, utilizzata principalmente per installazioni demo o scenari multi-tenant o con editor condivisi in cui agli utenti non attendibili viene deliberatamente concessa l'accesso all'editor del markup CMS. Nelle distribuzioni standard in produzione, Safe Mode è disattivata, l'accesso al backend è limitato ad amministratori fidati e un editor di markup può già eseguire PHP arbitrario direttamente. Il percorso di scrittura della sessione che raggiunge questo sink è protetto dalla sandbox di Safe Mode; pertanto, le installazioni senza Safe Mode abilitato non sono esposte. L'impatto ha una portata limitata anche con Safe Mode abilitato. I percorsi di codice standard del backend che popolano lo stato della sessione dei widget (termini di ricerca, opzioni di ordinamento, ID selezionati, valori dei filtri) avvolgono l'input all'interno di una forma array nota prima della serializzazione; pertanto, i valori forniti dall'utente non raggiungono mai `unserialize()` come payload serializzabile controllabile. L'esecuzione dello sfruttamento richiede il percorso di scrittura della sessione Safe Mode insieme a una catena di gadget PHP adatta raggiungibile dal set di dipendenze installato. Il hardening sottostante rimuove il sink di iniezione degli oggetti, chiudendo così la classe del problema indipendentemente da altri fattori. La vulnerabilità è stata risolta nelle versioni v3.7.17 e v4.2.21. Sono state applicate due modifiche. `Backend\Traits\SessionMaker` ora memorizza lo stato della sessione dei widget come JSON puro invece di `base64(serialize(...))`, eliminando completamente il sink di iniezione degli oggetti per le nuove scritture. Le letture passano trasparentemente al formato legacy per un ciclo di aggiornamento, così che le sessioni esistenti mantengano il proprio stato del widget salvato. Il percorso di fallback legacy `unserialize()` ora imposta `allowed_classes => false`, quindi anche i valori scritti prima dell'aggiornamento non possono istanziare oggetti. Come soluzione alternativa, limitare l'accesso alla modifica del markup CMS esclusivamente ad amministratori completamente fidati, la raccomandazione standard per October CMS in qualsiasi distribuzione.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.