Guida basata su interventi documentati. Mitigazione d'emergenza per upload progress in PHP con controlli di caricamento e test dei servizi Apache/PHP-FPM.
Contesto
In seguito a una segnalazione di sicurezza sulla gestione di upload e sessioni PHP, è stata adottata una difesa a più livelli: aggiornamenti PHP disponibili, disabilitazione di session.upload_progress.enabled e una regola ModSecurity che intercetta il parametro di upload progress.
Perché difesa a strati
L'impostazione PHP riduce la superficie applicativa; ModSecurity può invece intercettare il traffico prima che arrivi allo script. Nessuna delle due misure sostituisce l'aggiornamento delle versioni PHP vulnerabili.
Esempio di regola
SecRule ARGS_NAMES "@streq PHP_SESSION_UPLOAD_PROGRESS" \n "id:1000591,phase:2,deny,status:403,log,msg:'Blocked PHP upload progress parameter'"
Usare un ID libero nel proprio ruleset, testare con SecRequestBodyAccess On e attenzione ai multipart form-data. Gli ID e i percorsi di caricamento possono variare.
Verifiche di configurazione
apachectl -M | grep security
grep -R 'SecRuleEngine' /etc/apache2 /etc/modsecurity 2>/dev/null
apachectl -t
php-fpm8.3 -t
php8.3 -i | grep 'session.upload_progress.enabled'
Conferma dell'intervento
Nell'ambiente documentato il motore ModSecurity risultava caricato con SecRuleEngine On e SecRequestBodyAccess On; le regole di emergenza e le impostazioni PHP erano state applicate e i servizi erano rimasti operativi.
Limiti e falsi positivi
Non bloccare alla cieca ogni upload: provare caricamenti leciti dell'applicazione e controllare l'audit log ModSecurity. La regola ha un campo di applicazione ristretto e va rivista dopo la correzione a monte.
Approfondimento
Per il controllo PHP correlato è disponibile una guida dedicata alle impostazioni session.upload_progress.enabled e session.use_strict_mode.
Articoli correlati
- php hardening session upload progress use strict mode
- apache balancer manager senza password require all granted
Usare segnaposto e verificare l’ambiente prima di eseguire i comandi. Nessuna credenziale o identificativo infrastrutturale reale è riportato.