Herhangi bir PHP tabanlı web sitesini NGINX sunucusunda kullanıyorsanız ve daha iyi performans için PHP-FPM özelliği etkinleştirildiyse, yetkisiz saldırganların web sitenizi veya sunucunuzu uzaktan ele geçirmesine izin verebilecek yeni bir güvenlik açığına dikkat edin. Açık CVE-2019-11043 olarak isimlendiriliyor.
PHP-FPM , PHP programlama dilinde yazılmış komut dosyaları için gelişmiş ve yüksek verimli işleme sunan alternatif bir PHP FastCGI uygulamasıdır.
Asıl güvenlik açığı, PHP-FPM modülündeki bir "env_path_info" belleğinin bozulmasından kaynaklanıyor ve saldırganların güvenlik açığı bulunan web sunucularında uzaktan rasgele kod çalıştırmasına izin verebiliyor.
Bu güvenlik açığı, Wallarm'da bir güvenlik araştırmacısı olan ve Capture The Flag yarışmasında açık avlarken Andrew Danau tarafından tespit edildi. Andrew'in duyurusundan sonra iki farklı araştırmacı olan Omar Ganiev ve Emil Lerner tarafından tamamen çalışan bir uzaktan kod yürütme istismarı geliştirildi ve atak başarıyla sonuçlanarak sunucunun kontrolü ele geçirildi.
Hangi PHP tabanlı web siteleri bilgisayar korsanlarına karşı savunmasızdır?
Genel olarak piyasaya sürülen PoC istismarının PHP 7+ sürümlerini çalıştıran güvenlik açığı bulunan sunucuları özellikle hedeflemek için tasarlanmış olmasına rağmen, PHP-FPM akış hatası ayrıca önceki PHP sürümlerini de etkiler ve farklı şekilde kurgulanabiliyor.
Kısacası, savunmasız web sitelerinde şu yapılandırmalar mevcut ise;
- NGINX, PHP sayfa isteklerini PHP-FPM işlemcisine iletmek üzere yapılandırılmış ise,
- fastcgi_split_path_info yönergesi konfigürasyonunda ve '^' sembolüyle başlayan ve '$' sembolüyle biten düzenli bir ifade içeriyorsa,
- PATH_INFO değişkeni fastcgi_param yönergesi ile tanımlanıyorsa,
Bir dosyanın var olup olmadığını belirlemek için try_files $ uri = 404 veya if (-f $ uri) gibi kontroller yoksa,
Bu savunmasız NGINX ve PHP-FPM yapılandırması aşağıdaki örneğe benziyor:
Burada, fastcgi_split_path_info yönergesi, PHP web sayfalarının URL'sini iki parçaya bölmek için kullanılır; biri yardım PHP-FPM motorunun değeri, komut dosyası adını öğrenmek için diğeri ise yol bilgisini içerir.
Araştırmacılara göre, fastcgi_split_path_info yönergesini tanımlayan örnek düzenli ifade, gösterildiği gibi, newline karakterini kullanarak bölünmüş işlev sonunda yol bilgisini boş bırakacak şekilde manipüle edilebilir.
Ardından, FPM kodunda, env_path_info'nun sunucudaki dosyanın varlığını doğrulamadan php komut dosyasının yoluna eşit bir ön ekine sahip olduğunu yanlış olarak kabul eden bir aritmetik işaretçisi bulunduğundan, sorunun üzerine verilerin üzerine yazmak için bir saldırgan tarafından yararlanılabilir. Bellek üzerinde Hedeflenen web sitelerinin özel hazırlanmış URL'lerini talep edebilir.
Arka planda PoC sömürüsü [ 1 (PHuiP-FPizdaM), 2 ] araştırmacıları hafızayı manipüle etmek ve ekran görüntüsünde gösterildiği gibi PHP-FPM yapılandırma dosyasında özel php.ini değerleri eklemek için bu sorunları bir araya getirdiler. hedeflenen bir sunucu, saldırganların bir web kabuğu kullanarak rasgele kod yürütmesine izin veriyor.
"Bu tekniği kullanarak, sahte bir PHP_VALUE fcgi değişkeni oluşturabildim ve daha sonra kod yürütmeyi elde etmek için dikkatlice seçilen bir config değerleri zinciri kullandım."
Bu açıktan nasıl kurtulabiliriz?
PHP sürümünüzü en son V.7.3 için PHP 7.3.11 V.7.2 için PHP 7.2.24’le güncellemesi yaparak bu açıktan kurtulmanız mümkün.
Haberin yayınlandığı link burada...
Yurtdışında yayın yapan bazı web sunucu forumlarında kullanıcıların çoğu alev almış durumda, sizleri de bilgilendirmek istedim.