PHP güvenlik açıkları hiyerarşisinde, Bağımlılık Enjeksiyonu (DI) Konteyner Enjeksiyonu tespit edilmesi karmaşık, istismar edilmesi zarif ve etkisi yıkıcı olan en tepede yer alır.
Açıklanması CVE-2025-32432 hedefleme Craft CMS (ve buna bağlı olarak, altta yatan Yii2 Çerçevesi) acımasız bir hatırlatma görevi görür: kullanıcı girdisi sınıf örneklemesini kontrol ettiğinde, uygulama saldırgana aittir.
Birçok güvenlik tarayıcısı bunu bir "Yapılandırma Sorunu" olarak işaretlese de, seçkin güvenlik mühendisleri bunun gerçekte ne olduğunun farkındadır: Uzaktan Kod Yürütme (RCE) güvensiz nesne serileştirme yoluyla. Bu makale, güvenlik açığının teknik bir otopsisini yaparak gadget zincirini yeniden yapılandırmakta ve yapay zeka odaklı analizin bu mantık kusurlarını geniş ölçekte yakalamanın tek yolu olduğunu göstermektedir.
Başarısızlığın Mimarisi: Yii2 Konteynerinin İçinde
CVE-2025-32432'yi anlamak için Yii2'nin kalbini anlamanız gerekir: Yii2'nin yii\\di\\Container.
Craft CMS, sınıf bağımlılıklarını yönetmek için Yii2'nin DI konteynerine güvenir. Kapsayıcı, geliştiricilerin dizileri kullanarak nesneleri yapılandırmasına olanak tanır. Örneğin:
PHP
// Meşru kullanım $object = Yii::createObject([ 'class' => 'app\\models\\User', 'name' => 'Admin', ]);
Güvenlik açığı, bir saldırgan bu yapılandırma dizisini etkileyebildiğinde ortaya çıkar. Bir denetleyici eylemi ham JSON girdisi alır ve bunu kör bir şekilde Yii::createObject() veya Yii::$container->set()saldırgan, uygulamayı herhangi bir sınıf ile otomatik yükleme yolunda kullanılabilir herhangi bir mülk değerler.
Saldırı Yüzeyi
Hata genellikle API isteklerini işleyen Craft CMS denetleyicilerinde veya girdi sanitizasyonunun mantık (Sınıf tanımları) yerine XSS'ye (HTML etiketleri) odaklandığı eklenti yapılandırmalarında bulunur.
- Kaynak: Kullanıcı tarafından sağlanan JSON (örn,
POST /actions/vulnerable-plugin/save-config). - Lavabo:
Yii::createObject($userInput).

Öldürme Zincirinin Oluşturulması: PoC
Sömürü için bir yol bulmak gerekir. Gadget-Yaşam döngüsü yöntemlerinde tehlikeli işlemler (dosya yazma veya komut yürütme gibi) gerçekleştiren bir sınıf (__construct, başlangıç, __yok etveya UYAN).
CVE-2025-32432 bağlamında, Yii2 ekosisteminde bulunan ve aşağıdakileri içeren ortak bir gadget zincirinden yararlanıyoruz yii\\rest\\IndexAction veya benzer geri çağırma ağırlıklı sınıflar.
Konsept
Bir PHP geri çağırma işlevini yürütmemize izin veren bir sınıfı örneklemek istiyoruz (örneğin sistem veya yönetici) sağlanan bir argüman üzerinde.
Silahlandırılmış JSON Yükü
Aşağıda, kötü amaçlı bir sınıf tanımı enjekte ederek RCE'nin nasıl tetikleneceğini gösteren kavramsal bir Kavram Kanıtı (PoC) yer almaktadır.
JSON
{"rce_trigger": { "class": "yii\\\\rest\\\\IndexAction", "checkAccess": "system", "id": "rce", "controller": { "class": "yii\\\\web\\\\Controller", "id": "dummy" }, "modelClass": "yii\\\\base\\\\Model", "run": "id; uname -a" } }
Yükün Dağılımı:
sınıf: DI konteynerine, DI'yı örneklemesi için talimat veriyoruzyii\\rest\\IndexAction.checkAccess: Bu bizim tehlikeli özelliğimiz. Bu özel aygıttacheckAccessözelliği bir çağrılabilir tutmak için tasarlanmıştır. Bunu şu şekilde ayarladıksistem.- Yürütmenin Tetiklenmesi: Uygulama bu nesneyi işlediğinde (genellikle
run()metot yürütme veya özellik doğrulama), depolanan geri çağırmayı çağırırcheckAccessbağlam (veya saldırgan) tarafından sağlanan argümanlarla. - Sonuç: Sunucu şu işlemleri yürütür
system('id; uname -a').
Not: Sertleştirilmiş bir ortamda, saldırganlar bunu yii\\caching\\FileCache 'ye bir PHP web kabuğu yazmak için web/ dizin.
Geleneksel Tarayıcılar Bunu Neden Gözden Kaçırıyor?
CVE-2025-32432'yi tespit etmek eski DAST araçları için oldukça zordur.
- İmza yok: Yük geçerli bir JSON'dur. SQL enjeksiyon sözdizimi içermez (
' VEYA 1=1) veya XSS etiketleri (). - Bağlam Bağımlıdır: Güvenlik açığı girdinin kendisinde değil nasıl çerçeve yorumluyor
sınıfAnahtar. Standart bir tarayıcı bunu anlamazsınıfharitalarYii::createObject.
Yapay Zeka Güdümlü Tespit: Penligent Avantajı
İşte burası Penligent.ai paradigmayı değiştirir. Penligent şunları kullanır Bağlam Farkında Yapay Zeka Ajanları Çerçeveye özgü mantığı anlayan.
- Çerçeve Tanıma: Penligent'ın aracıları hedefin Craft CMS / Yii2 çalıştırdığını tespit eder. Bu çerçeveye özgü "Tehlikeli Lavaboları" bilir (örn,
Yii::createObject). - Mantıksal Çıkarım: Yapay zeka, kör bulanıklaştırma yerine API şemasını analiz eder. Yapılandırma benzeri parametreleri kabul eden bir JSON nesnesi görürse, akıllıca "Probing Payloads" enjekte eder - örneğin, aşağıdaki gibi iyi huylu bir sınıfı örneklemeye çalışır
yii\\helpers\\VarDumper-konteynerin erişilebilir olup olmadığını test etmek için. - Otomatik Doğrulama: Prob başarılı olursa (örneğin, uygulama farklı davranırsa veya sınıf örneklemesini gösteren belirli bir hata döndürürse), Penligent uç noktayı aşağıdakilere karşı savunmasız olarak işaretler Konteyner Enjeksiyonu ve düzeltme doğrulaması için belirli RCE yükünü oluşturur.
İyileştirme ve Savunma
Craft CMS'yi CVE-2025-32432 ve benzeri DI saldırılarına karşı güvence altına almak:
- Sıkı Tip Kontrolü: Ham kullanıcı girdi dizilerini asla
Yii::createObject. Her zaman aşağıdakileri doğrulayınsınıfanahtarı ya yoktur (arka uçta sabit kodlanmıştır) ya da kesinlikle izin verilenler listesindedir. - Craft CMS'yi güncelleyin: En son yamaları hemen uygulayın. Satıcı büyük olasılıkla
eylemkeyfi sınıf tanımlarını reddetmek için işleme mantığı. - Tehlikeli İşlevleri Devre Dışı Bırakın: Senin içinde
php.ini, kullandisable_functionsengellemek içinsistem,yönetici,passthruveproc_openDKAB'ın etkisini azaltmak için.
Sonuç
CVE-2025-32432 modern PHP çerçevelerinin güçlü olmalarına rağmen karmaşık saldırı yüzeyleri oluşturduklarını hatırlatıyor. Container Injection, "2020'lerin SQL Injection "ıdır - tam kontrol sağlayan bir mantık hatası.
Güvenlik mühendisleri için ders açıktır: Kullanıcıların nesneleri tanımlamasına izin verirseniz, onlar da sizin yıkımınızı tanımlayacaktır. Verilerin "Şeklini" doğrulamak artık yeterli değildir; "Türünü" de doğrulamanız gerekir.

