Penligent Başlık

CVE-2025-32432'nin Anatomisi: Craft CMS'de Yii2 Konteyner Enjeksiyonunun Silahlandırılması

Web güvenlik açıkları hiyerarşisinde, çok az şey bir Kırmızı Ekip operatörünün acil dikkatini bir PHP Nesne Enjeksiyonu (POI) Kimliği doğrulanmamış kullanıcılara maruz kalan uç nokta.

CVE-2025-32432 tam olarak bu. ile CVSS v3.1 skoru 10.0Craft CMS'deki bu güvenlik açığı sadece başka bir hata değil; modern Bağımlılık Enjeksiyonu (DI) konteynerlerinin destekledikleri uygulamalara karşı nasıl silah haline getirilebileceğine dair bir ustalık sınıfıdır.

Sıkı güvenlik mühendisleri için buradaki ilgi sadece RCE değil, mekanizmasıdır. Bu mekanizmanın nasıl çalıştığına dair temel bir hatayı vurgulamaktadır. Yii2 çerçevesi (Craft'a güç veren) kullanıcı girişi yoluyla aktarılan yapılandırma dizilerini işler. Bu analiz, güvenlik açığı yığın izini, istismar için gereken belirli gadget zincirlerini ve bu özel CVE'nin neden geleneksel DAST tarayıcıları için kırılma noktasını temsil ettiğini ve AI güdümlü saldırı ajanlarının yükselişini gerektirdiğini inceleyecektir.

Mimari Kusur: DI Yanlış Gittiğinde

CVE-2025-32432'yi anlamak için Craft CMS'nin mimarisini anlamak gerekir. Craft büyük ölçüde Yii2'nin Service Locator ve Dependency Injection modellerine dayanır.

Güvenlik açığı AssetsControllerözellikle de actionGenerateTransform yöntem. Bu uç nokta, ön ucun anında görüntü dönüşümleri (kırpma, yeniden boyutlandırma) talep etmesine izin vermek için tasarlanmıştır.

Savunmasız Lavabo

Kod akışı, kullanıcı girdisinden doğrudan nesne örneklemesine kadar tehlikeli bir yol izler.

  1. Yutma: Denetleyici, aşağıdakileri içeren bir POST isteğini kabul eder dönüştürmek dizi.
  2. Normalleştirme: Veriler şu adrese aktarılır Craft::$app->getAssetTransforms()->normalizeTransform().
  3. Yürütme (Lavabo): Yöntem sonunda şunları çağırır Craft::createObject($config).

Yii2'de, createObject güçlü bir sarmalayıcıdır. Eğer $config dizisi bir sınıf tuşuna basıldığında, Yii2 söz konusu sınıfı örneklemeye çalışacak ve genel özelliklerini kalan dizi anahtarlarıyla dolduracaktır.

PHP

'// Basitleştirilmiş güvenlik açığı akışı public function actionGenerateTransform() { $transformId = Craft::$app->getRequest()->getBodyParam('transformId'); // Saldırgan tüm yapılandırma dizisini kontrol eder $transformConfig = Craft::$app->getRequest()->getBodyParam('transform');

// FATAL FLAW: 'class' parametresinde beyaz liste doğrulaması yok
$object = Craft::createObject($transformConfig);

return $object->transform();

}`

Bu şu anlama gelir Güvensiz Derileştirme (CWE-502), yerel yapılandırma yerine JSON/Array yapılandırmasını kullansa da unserialize(). Sonuç aynıdır: saldırgan kontrol akışını belirler.

CVE-2025-32432'nin Anatomisi: Craft CMS'de Yii2 Konteyner Enjeksiyonunun Silahlandırılması

İstismar Zinciri: Gadget'ın İşlenmesi

Betik çocukları bu CVE'de başarısız olacaktır çünkü uç noktaya bir yük işaret etmek bir 400 Hatalı İstek. Başarılı bir istismar, uygulamanın durumunun incelikli bir şekilde anlaşılmasını gerektirir.

Aşama 1: Bağlamsal Keşif (Varlık Kimliği)

Bu actionGenerateTransform fonksiyonunun zor bir bağımlılığı vardır: geçerli bir assetId (CMS'ye yüklenen bir görüntüyü temsil eden bir tamsayı).

Eğer assetId mevcut değilse, kod bir istisna atar önce savunmasız kişilere ulaşır createObject Ara.

  • Tuzak: Geleneksel tarayıcılar (Nessus, Nuclei) yükleri körlemesine ateşler. Rastgele ID'ler kullanırlar ya da ID kullanmazlar. Hata alırlar ve hedefi "Güvenli" olarak işaretlerler.
  • Bypass: Sofistike bir saldırgan (veya Ajan) herkese açık HTML kaynak kodunu kazıyarak tipik Craft varlık modellerini arar (örn, /assets/images/1042/logo.png). Tam sayı 1042 yürütme yolunun kilidini açmanın anahtarıdır.

2. Aşama: Gadget Zinciri

Geçit geçerli bir Varlık Kimliği ile açıldığında, saldırganın yükü sağlaması gerekir. Örnekleyebildiğimiz için herhangi bir sınıfı için bir "Gadget "a ihtiyacımız var - yaşam döngüsü sırasında kötü amaçlı etkinlikleri tetikleyen bir sınıf (genellikle __construct, __yok etveya başlangıç).

CVE-2025-32432 bağlamında, araştırmacılar aşağıdakileri kullanan zincirler tespit etmişlerdir \\GuzzleHttp\\Client (yüklüyse) veya yerel Yii2 önbellekleme sınıfları.

Yaygın bir vektör, aşağıdakileri kullanmayı içerir yii\\rbac\\PhpManager ya da kötüye Görünüm yerel dosyaları dahil etmek için renderer. Bununla birlikte, en doğrudan RCE yöntemi Craft\\Config PHP protokol sarmalayıcıları ile birleştirilmiş nesne.

Exploit Payload Yapısı:

JSON

{"assetId": "1042", "transform": { "class": "craft\\\\base\\\\ImageTransform", "width": "100", "yükseklik": "100", "format": "php", "quality": { "class": "yii\\\\rest\\\\IndexAction", "checkAccess": "system", "id": "whoami" } } }

Not: Gerçek gadget zinciri, sunucuda yüklü olan belirli Composer bağımlılıklarına bağlı olarak değişebilir ve bu da yükün dinamik olarak ayarlanmasını gerektirir.

Craft CMS'de Yii2 Konteyner Enjeksiyonunu Silahlandırmak

Statik Güvenlik Araçlarının Başarısızlığı

Bu güvenlik açığı, mevcut nesil güvenlik araçlarının sınırlamalarını ortaya koymaktadır.

  1. Vatansızlık: Geleneksel tarayıcılar durum bilgisi içermez. Ana sayfada bir Varlık Kimliği bulduklarını "hatırlamazlar" ve bunu 10 dakika sonra bir POST isteğinde kullanmaya "karar vermezler".
  2. Bağlam Körlüğü: İş mantığını çıkaramazlar. Bir görüntü kimliğini sadece bir sayı olarak görürler, bir istismar zinciri için ön koşul anahtarı olarak değil.

Sektörün yönünü çevirdiği yer burasıdır Ajan Güvenlik.

Otomatik Akıl Yürütme: Penligent Yaklaşımı

CVE-2025-32432'yi şu adreste analiz ettiğimizde Penligentstandart bulanıklaştırmanın 0% başarı oranına sahip olduğunu gördük. Bu güvenlik açığını güvenilir bir şekilde doğrulamak için, çok adımlı muhakeme yeteneğine sahip bir Yapay Zeka Aracısı kullanmamız gerekiyordu.

Bu Penligent Bu CVE için iş akışı "tarama" ile "sızma testi" arasındaki farkı göstermektedir:

  1. Parmak izi: Temsilci aşağıdakileri tanımlar X-Powered-By: Craft CMS Başlık.
  2. Anlamsal Ayrıştırma: Ajan, bulanıklaştırma yerine açılış sayfasının DOM'unu ayrıştırır. Tanımlar <img src="..."> etiketleri ile eşleştirir ve potansiyel Varlık Kimliklerini çıkarmak için URL yapısını regex ile eşleştirir.
  3. Hipotez Testi: Agent, çıkarılan ID ile iyi huylu bir dönüştürme isteği dener. Eğer bir 200 TAMAM ya da Mantık İstisnası (daha ziyade 404), kimliğin geçerli olduğunu onaylar.
  4. Yük Mutasyonu: Aracı JSON yükünü oluşturur. Sunucu, belirli sarmalayıcıları kullanımdan kaldıran daha yeni bir PHP sürümü çalıştırıyorsa, Aracı, alternatif nesne enjeksiyonlarını denemek için gadget zincirini gerçek zamanlı olarak değiştirir.

Bu yetenek zincir mantığı-A adımında bir anahtar bulmak ve bunu B adımında kullanmak, insan (ve ajan) bilgisayar korsanlarını otomatik komut dosyalarından ayıran şeydir.

İyileştirme ve Savunma

Bir Craft CMS kurulumunu savunuyorsanız, derhal harekete geçmeniz gerekir.

1. Yama

Satıcı, aşağıdaki sürümlerde sıkı doğrulama yayınlamıştır. Çalıştırdığınızdan emin olun:

  • Craft CMS 3.x -> 3.9.15+
  • Craft CMS 4.x -> 4.14.15+
  • Craft CMS 5.x -> 5.6.17+

2. WAF Yapılandırması

Yama uygulamak hemen mümkün değilse (eski kod donmaları nedeniyle), belirli saldırı vektörünü WAF düzeyinde engellemeniz gerekir.

ModSecurity Kural Örneği:

Apaçi

SecRule REQUEST_URI "@contains /actions/assets/generate-transform" \\ "id:100001,phase:2,t:none,t:lowercase,deny,status:403,msg:'Block Craft CMS RCE CVE-2025-32432', \\ chain" SecRule ARGS_POST:transform "@rx class"

Bu kural, POST gövdesinde bir 'class' parametresi tanımlamaya çalışan dönüştürme uç noktasına yönelik tüm istekleri engeller.

Yüksek Etkili Hassasiyet Karşılaştırması (2024-2025)

CVE-2025-32432'yi bağlamsallaştırmak için, bunu büyük çerçevelerdeki diğer yakın tarihli mimari hatalarla karşılaştırmak yardımcı olacaktır.

CVE KIMLIĞIHedefVektörKarmaşıklıkNeden önemli
CVE-2025-32432Craft CMSNesne EnjeksiyonuOrtaOnaylanmamış DI konteynerlerinin başarısızlığını gösterir.
CVE-2024-21626runcKonteyner KaçışıYüksekKonteyner çalışma zamanı izolasyonunda temel kusur.
CVE-2024-23897JenkinsKeyfi Dosya OkumaDüşükCLI ayrıştırıcı özelliklerinin kötüye kullanımı (args4j).
CVE-2024-3400Palo Alto PAN-OSKomut EnjeksiyonuDüşükUç güvenlik cihazlarında kimliği doğrulanmamış RCE.

Sonuç

CVE-2025-32432 modern web geliştirmede "zengin özellikli" ifadesinin genellikle "saldırı yüzeyi açısından zengin" anlamına geldiğini hatırlatıyor. Yii2'nin rahatlığı createObject geliştiricilere esneklik sağlamış ancak saldırganların eline dolu bir silah vermiştir.

Güvenlik mühendisi için bu güvenlik açığı, "işaretle ve çek" tarama döneminin sona erdiğinin altını çiziyor. Güvenlik açıkları daha mantıklı, daha bağlamsal ve duruma daha bağımlı hale geliyor. Bunlara karşı savunma yapmak, saldırganlar kadar hızlı düşünebilen, mantık yürütebilen ve uyum sağlayabilen araçlar gerektiriyor.

Referanslar ve İleri Okuma:

Gönderiyi paylaş:
İlgili Yazılar
tr_TRTurkish