In NGINX, un valore complesso è un'espressione costruita da testo statico e variabili, quindi valutata in fase di esecuzione. Invece di usare una singola stringa fissa, la configurazione può assemblare dinamicamente un risultato mentre vengono elaborati i dati della richiesta o dello stream.
Questo è importante perché la valutazione a runtime trasforma la configurazione in un percorso di elaborazione dei dati. Quando i valori complessi vengono usati con corrispondenze regex, mappe o logica preread, NGINX deve copiare, espandere e interpretare i valori in modo sicuro in C. Ciò crea un rischio per la sicurezza se i calcoli della lunghezza, la gestione dei buffer o l'espansione delle variabili sono errati, perché input controllati da un attaccante possono influenzare la stringa generata.
I difensori dovrebbero considerare i valori complessi parte della superficie d'attacco. Esaminate le configurazioni che li combinano con input esterni, testate i casi limite e mantenete NGINX aggiornato. Usati con attenzione, i valori complessi sono un potente strumento di routing; usati con superficialità, possono contribuire a esporre bug di memory safety o un flusso di controllo inatteso.


