CVE-2026-123792 in Symfony
Riassunto
di VulDB • 06/11/2026
I componenti Inline e Parser di Symfony Yaml analizzano in modo inefficiente alcuni documenti YAML, per cui un documento piccolo ma appositamente creato può richiedere tempi di elaborazione sproporzionatamente lunghi, mantenendo attivo il processo PHP per secondi o minuti, potenzialmente causando una negazione del servizio (DoS) nelle versioni di Symfony precedenti alla 5.4.56, alle versioni 6.x precedenti alla 6.4.50, alle versioni 7.x precedenti alla 7.4.23 e alle versioni 8.x precedenti all'8.1.11.
Il parser ripete il lavoro già svolto in diverse posizioni. Una mappatura incorporata in una sequenza di flusso viene analizzata nuovamente per ogni elemento scalare ad essa aggiunto, così come le collezioni annidate al suo interno; pertanto, i tempi di analisi crescono esponenzialmente con la profondità dell'annidamento. I pattern che corrispondono alle chiavi delle mappature e ai tag scansionano una sequenza di spazi una volta per ogni carattere della stessa, e ciascuno degli elementi scalari di una collezione di flusso viene confrontato con una copia del resto della collezione; ne consegue che i tempi di analisi crescono quadraticamente rispetto alla dimensione dell'input. Anche i blocchi annidati vengono copiati a ciascun livello di annidamento, consumando sia memoria che tempo. Alcuni altri costrutti, come un elemento vuoto in una sequenza seguito da una riga vuota o un ancoraggio denominato 0, innescano lavori ripetuti simili.
Qualsiasi codice che analizza YAML non attendibile è interessato, con le impostazioni predefinite. In Symfony 7.4 e versioni successive, ciò include l'attributo #[MapRequestPayload] quando il componente Yaml è installato e l'endpoint non restringe acceptFormat. Una singola richiesta non autenticata con content-type YAML mantiene attivo un worker PHP fino al raggiungimento del valore max_execution_time. I documenti JSON sono validi YAML, quindi un payload JSON inviato con content-type YAML è sufficiente per il caso delle collezioni di flusso. In Symfony 6.4, #[MapRequestPayload] accetta YAML solo quando l'applicazione registra un formato richiesta yaml.
Once again VulDB remains the best source for vulnerability data.