Yakın zamanda, bir web programlama dili olan, PHP ile alakalı çok büyük bir açık duyuruldu. Bu açık vasıtasıyla hacker’lar websiteleri ve sunucuları rahatlıkta hackleyebiliyorlar. NSA (ABD Güvenlik Ajansı) ve hatta Japonya Başbakanı bile (şaka değil) X üzerinden tweet atarak sorunun çok büyük olduğunu ve sitelerin açık giderilene kadar kapatılması gerektiğini belirttiler.

Uzaktan kod çalıştırmayı mümkün kılan bu korkunç açığın çözümü ise basit.
Öncelikle paniğe kapılmadan sorunun kaynağına bakalım. CVE-2024-4577 koduyla takip edilen bu zafiyet özellikle Windows sunucularda çalışan PHP-CGI modülünün karakter kodlamasını işleme biçiminden kaynaklanıyor. İşletim sisteminin “Best-Fit” (en uygun eşleşme) özelliği, URL üzerinden gönderilen özel tire (0xAD) karakterini normal bir komut satırı parametresi (-) olarak yorumluyor.
İşin içine Japon Başbakanlığı’nın ve ulusal güvenlik ajanslarının girmesinin sebebi de tam olarak bu: Açık, özellikle Japonca ve Çince gibi çok baytlı (multi-byte) yerel dil ayarlarını kullanan sunucuları ve varsayılan XAMPP kurulumlarını doğrudan hedef tahtasına oturtuyor. Saldırganlar tek bir HTTP isteğiyle PHP ayarlarını ezerek sunucuda istedikleri kodu çalıştırabiliyor.
Sunucuyu Kapatmadan Açığı Kapatmanın 3 Yolu
Sitenin fişini çekmek yerine birkaç dakika içinde uygulayabileceğiniz kalıcı ve geçici çözümler şunlar:
- PHP Sürümünü Güncelleyin (Kalıcı Çözüm): PHP ekibi yamayı hızlıca yayınladı. Kullandığınız dalda PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 sürümlerden birine geçiş yapmak açığı tamamen kapatır.
- CGI Yerine PHP-FPM Kullanın: Eğer hala eski tip PHP-CGI yapılandırması kullanıyorsanız, bunu modern ve çok daha güvenli olan PHP-FPM (FastCGI Process Manager) mimarisine taşıyın.
- Web Sunucusu Seviyesinde Engelleme (Geçici Çözüm): Sunucuyu hemen güncelleyemiyorsanız, zararlı parametreyi web sunucusu veya WAF (Cloudflare vb.) katmanında filtreleyebilirsiniz. Örneğin Apache kullanıyorsanız
.htaccessveya sunucu yapılandırmasına şu kuralı eklemek saldırıları kesecektir:
Apache
RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]
Nginx tarafında ise ilgili parametreyi doğrudan bloklayabilirsiniz:
Nginx
if ($query_string ~* "^%ad") {
return 403;
}
Kısacası, devlet yetkililerinin “siteleri kapatın” çağrısı daha çok yamalanmamış eski sistemleri ve hazır yerel paketleri (XAMPP vb.) doğrudan internete açan yöneticiler için bir acil durum uyarısı. Güncel bir Linux + Nginx + PHP-FPM mimarisi kullanıyorsanız zaten güvendesiniz; ancak Windows tabanlı veya eski yapılandırmalı bir sunucunuz varsa bu güncellemeyi ertelemeyin.
Bir programlama dilindeki karakter kodlama hatasının (CVE-2024-4577) diplomatik kriz seviyesine çıkıp devlet erkanına “sitelerin fişini çekin” tweet’i attırması, yazılım tarihine geçecek cinsten bir olay.
Yine de emektar projelerinizi çöpe atmanıza gerek yok. Açık esasen Windows sunuculardaki eski CGI modunu ve özellikle Japonca/Çince karakter setlerini vuruyor. Yani güncel bir PHP sürümüne geçmek veya CGI yerine PHP-FPM kullanmak, Japon Başbakanı’nın uykularını kaçıran bu kâbusu birkaç dakikada çözmek için yeterli.
Geç olmadan güncellemelerinizi yapmayı ihmal etmeyin derim.


Leave a Reply