Haavoittuvuus19/2019
Web-palvelimet joissa käytetään yhdessä NGINX -palvelinohjelmistoa sekä PHP FastCGI Process Manager (PHP- FPM) -toteutusta ovat alttiita vakavalle haavoittuvuudelle tietyillä määrityksillä. Verkon yli toimiva hyökkääjä voi suorittaa ohjelmakoodia pääkäyttäjän oikeuksin haavoittuvassa järjestelmässä (Remote Code Execution).
Haavoittuvuuden (CVE-2019-11043) hyväksikäyttämiseksi hyökkääjän tulee lähettää tietyllä tavalla muotoiltu yksinkertainen HTTP-pyyntö. Hyväksikäytölle on olemassa kuitenkin seuraavat reunaehdot:
- NGINX palvelun asetuksissa "location" -määre ohjaa pyynnöt PHP-FPM toiminnolle
- "fastcgi_split_path_info "-määre sisältää säännön mukaisen lausekkeen (regular expression) joka alkaa "^" -merkillä ja päättyy "$" -merkkiin
- "fastcgi_param" -määrettä on käytetty PATH_INFO muuttujan asettamiseksi
- Tiedostojen olemassaolosta ei ole tehty tarkistuksia esim. "try_files" tai "if" lausekkeella
joten haavoittuvuus ei esiinny kaikissa NGINX ja PHP-FPM ohjelmistoja käyttävissä ympäristöissä. Yllä kuvatut määritykset eivät kuitenkaan ole erityisen harvinaiset mikäli palvelimella käytetään kyseistä yhdistelmää.
Avoimen lähdekoodin Nextcloud -tiedostonjako-ohjelmiston valmistaja on julkaissut päivityksen haavoittuvuuteen, koska ohjelmiston oletusasetukset ovat mahdollistaneet haavoittuvuuden hyväksikäytön.
Haavoittuvuutta on havaittu hyväksikäytettävän aktiivisesti maailmalla ja asiasta on uutisoitu mediassa viime päivinä. Emme ole vielä havainneet onnistuneita hyväksikäyttötapauksia Suomessa. Haavoittuvuuden hyödyntämisen havainnollistava esimerkkikoodi (PoC) on julkisesti saatavilla, eikä sen käyttö vaadi syvällistä teknistä osaamista.
Suosittelemme päivittämään haavoittuvat ympäristöt mahdollisimmannopeasti, koska haavoittuvia järjestelmiä on mahdollista myös kartoittaa julkaistun PoC -koodin avulla.
Kohde
- Palvelimet ja palvelinsovellukset
Hyökkäystapa
- Etäkäyttö
- Ilman käyttäjän toimia
- Ilman kirjautumista
Vaikutukset
- Komentojen mielivaltainen suorittaminen
- Suojauksen ohittaminen
Hyväksikäyttömenetelmä tiedossa
- Rikollisessa käytössä
- Haavoittuvuuden havainnollistava esimerkkikoodi
Ratkaisu
- Korjaava ohjelmistopäivitys
- Ongelman rajoittaminen
Haavoittuvuuden kohde
- PHP 7.3.11 (current stable) jakelua aiemman versiot
- PHP 7.2.24 (old stable) jakelua aiemman versiot
Mistä on kysymys?
Korjaava ohjelmistopäivitys PHP7 -ohjelmistoon on julkaistu 24.10.2019:
- PHP 7.3.11 (current stable)
https://www.php.net/ChangeLog-7.php#7.3.11 (Ulkoinen linkki) - PHP 7.2.24 (old stable)
https://www.php.net/ChangeLog-7.php#7.2.24 (Ulkoinen linkki)
Mitä voin tehdä?
PHP-FPM - A simple and robust FastCGI Process Manager for PHP
https://php-fpm.org/ (Ulkoinen linkki)
CVE-2019-11043
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11043 (Ulkoinen linkki)
Urgent security issue in NGINX/php-fpm
https://nextcloud.com/blog/urgent-security-issue-in-nginx-php-fpm/ (Ulkoinen linkki).
PHP Remote Code Execution 0-Day Discovered in Real World CTF Exercise
https://lab.wallarm.com/php-remote-code-execution-0-day-discovered-in-real-world-ctf-exercise/ (Ulkoinen linkki)
Vulnerability in PHP-FPM Could Lead to Remote Code Execution on nginx
https://www.tenable.com/blog/cve-2019-11043-vulnerability-in-php-fpm-could-lead-to-remote-code-execution-on-nginx (Ulkoinen linkki)
New PHP Flaw Could Let Attackers Hack Sites Running On Nginx Servers
https://thehackernews.com/2019/10/nginx-php-fpm-hacking.html (Ulkoinen linkki)
Nasty PHP7 remote code execution bug exploited in the wild
https://www.zdnet.com/article/nasty-php7-remote-code-execution-bug-exploited-in-the-wild/ (Ulkoinen linkki)