Vulnerabilità di tipo RCE in PHP7

28/10/2019

cve-2019-11043 Nginx php

Una grave vulnerabilità è stata rilevata in PHP7 dal ricercatore di sicurezza Andrew Danau nel corso di un CTF e tracciata con il CVE-2019-11043. Se sfruttata con successo, la vulnerabilità potrebbe consentire ad un utente remoto di eseguire codice su web server NGINX con php-fpm abilitato (Fast Process Manager). La vulnerabilità risiede in env_path_info presente nel file fpm_main.c del componente FPM utilizzato per il miglioramento delle prestazioni.

Esposizione della vulnerabilità

Il bug è stato segnalato la prima volta nel mese di settembre 2019 ed è stato rilasciato un Proof-of-Concept su Github.

Il motivo di questo problema è alla base del bundle Nginx + fastcgi, in particolare, la problematica risiede in una direttiva fastcgi_split_path e in una espressione regolare che a causa del carattere %0A (newline) Nginx assegna un valore vuoto alla variabile e il modulo fastcgi + PHP non gestisce questo comportamento.

Per far sì che l’exploit funzioni devono verificarsi le seguenti condizioni:

  • Presenza Nginx + php-fpm per inoltrare la richiesta configurata a php-fpm
  • La direttiva fastcgi_split_path_info deve essere presente e contenere una regexp che inizia con ^ e termina con $.
  • La variabile PATH_INFO da assegnare a fastcgi_param
  • Nessun controllo in atto come try_files $ uri = 404 o if (-f $ uri) per determinare l’esistenza del file.

Conclusioni

Si raccomanda di eseguire l’aggiornamento di PHP all’ultima release presente sul sito ufficiale della community.