korrektive opdateringer af PHP 7.3.11, 7.1.33 og 7.2.24, der indeholder kritisk (CVE-2019-11043) i PHP-FPM-udvidelsen (FastCGI-process manager), som gør det muligt at udføre sin kode eksternt i systemet. Offentlig tilgængelige metoder til at angribe servere, der bruger PHP-FPM til at køre PHP-scripts sammen med Nginx, er allerede tilgængelige. .
Angrebet er muligt i nginx-konfigurationer, hvor omdirigeringen til PHP-FPM sker med opdeling af URL-dele ved hjælp af «fastcgi_split_path_info» og defineringen af miljøvariablen PATH_INFO, men uden forudgående kontrol af filens eksistens ved direktivet «try_files $fastcgi_script_name» eller konstruktionen «if (!-f $document_root$fastcgi_script_name)». Problemet er også i indstillingerne foreslået for NextCloud-platformen. For eksempel er konfigurationer med konstruktioner som:
location ~ [^\/]\.php(\/|$) {
fastcgi_split_path_info ^(.+?\.php)(\/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Man kan følge op på udbedringen af problemet i distributionerne på disse sider: , , , , , , . Som en workaround til beskyttelse kan man efter linjen «fastcgi_split_path_info» tilføje en kontrol for eksistensen af den forespurgte PHP-fil:
try_files $fastcgi_script_name =404;
Problemet skyldes en fejl i håndteringen af pegere i filen . Ved tildeling af en peger antages det, at værdien af miljøvariablen PATH_INFO nødvendigvis indeholder et præfiks, der matcher stien til PHP-scriptet.
Hvis direktivet fastcgi_split_path_info angiver opdeling af stien til scriptet ved hjælp af et regulært udtryk, der er følsomt overfor overførsel af linjeskiftkarakterer (for eksempel i mange eksempler foreslås det at bruge «^(.+?\.php)(\/.*)$»), kan en angriber opnå, at der skrives et tomt værdi i miljøvariablen PATH_INFO. I dette tilfælde vil processen herefter skrivningen i path_info[0] til nul og kald af FCGI_PUTENV.
Ved at anmode om en på en bestemt måde formateret URL kan en angriber få pegeren path_info til at skubbe til det første byte af strukturen «_fcgi_data_seg», og skrivning af nul til dette byte vil føre til, at pegeren «char* pos» flyttes til et tidligere område af hukommelsen. Den efterfølgende kaldte FCGI_PUTENV vil overskrive data i denne hukommelse med værdien, som angriberen kan kontrollere. I den angivne hukommelse gemmes der også værdier for andre FastCGI-variabler, og ved at skrive sine data kan angriberen oprette en falsk variabel PHP_VALUE og opnå udførelsen af sin kode.
Kilde: opennet.ru
