Ana içeriğe geç
Güvenlik

PHP bellek tüketimi açığıyla uzaktan kod yürütme yöntemi paylaşıldı

Öne çıkanlar

  • İstismar zinciri, oturum yükleme ayrıştırmasındaki bellek aşımı hatasını kullanarak iş parçacığı durumunu bozuyor.
  • ASLR korumasını aşmak için PHPSESSID çerezi üzerinden hem yığın hem de kod adresi sızdırıldı.
  • Temizleme çağrısına yönlendirilen sahte HashTable yapısı zif_system fonksiyonunu doğrudan tetikliyor.

Bir güvenlik araştırmacısı, Steal My Bitcoin adlı yarışma görevini çözmek için geliştirdiği ve PHP'nin bellek sınırını aşarak uzaktan kod çalıştırmayı sağlayan istismar kodunu yayımladı. Yöntem, PHP 8.4.26 sürümünde oturum yükleme ilerleme mekanizmasının bellek sınırına takılması sonucu ortaya çıkan durumu temel alıyor. Standart Python kütüphaneleriyle yazılan tek dosyalık araç, hedef sistem üzerinde doğrudan komut çalıştırmayı başarıyor.

Saldırı akışı, sunucuya yaklaşık 250 kilobaytlık özel biçimlendirilmiş çok parçalı yükleme istekleri gönderilmesiyle başlıyor. PHP motoru, iç içe dizileri işlerken 128 megabaytlık bellek sınırını aşarak hata veriyor ancak çalışan iş parçacığında eski durumu temizlemeden bırakıyor. Ardından gönderilen istekler sayesinde PHPSESSID çerezi üzerinden sırasıyla Zend yığın taban adresi ve PHP kod yürütme işaretçisi sızdırılıyor. Bu iki sızıntı, adres alanı yerleşim rastgeleliğini aşmak için kullanılıyor.

İstismarın son aşamasında sahte bir HashTable yapısı içeren bir istek sunucuya iletiliyor. Bellek temizleme rutini sahte yapıyı işlediği anda sistemin 'zif_system' çağrısını tetikleyerek saldırganın belirlediği komutu çalıştırıyor. Araştırmacı, yerel Docker ortamında yapılan testlerde yöntemin 10 denemenin 7'sinde başarıyla sonuçlandığını bildirdi.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.