Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • Yama var
  • Son 7 gün
  • CWE-1336

CVE-2026-115938

Craft CMS'te düşük yetkili kullanıcı Twig sandbox'ını aşarak güvenlik anahtarını ele geçirip uzaktan kod çalıştırmaya ulaşabiliyor

craftcms cms

Yüksek 8,8 CVSS 3.1
Yayımlandı
Güncellendi
24 Eki 2026
Açık yaşı
4 gün
Kaydı açan
Hackrate

ÖzetTürkçe

Craft CMS, kimlik doğrulaması yapılmış her kontrol paneli kullanıcısının, öğe arama koşulunda bir öğe seçicisi göndermesine izin veriyor; bu seçici sandbox içindeki bir Twig nesne şablonu olarak değerlendiriliyor. Craft'ın izin verilen sütun filtresi, özellik aramasını Twig'in SecurityPolicy kapsamının dışındaki Yii ArrayHelper'a devrediyor. Bu nedenle tek segmentli tekrarlı aramalar, sandbox'ın boş özellik/metot izin listelerini aşıyor. Güvenlik açığı bulunan koşul değeri sonunda tam sayıya dönüştürülse de bu, sırrı korumuyor: şablon, tahmin edilen anahtar karakteri doğruysa yazar ID'si 1'i, yanlışsa imkansız bir ID'yi döndürebiliyor. JSON uç noktası ilk durumda kayıtlar, ikinci durumda boş bir dizi döndürerek uzaktan karakter karakter sızdırmaya olanak tanıyan kararlı bir oracle oluşturuyor. GeneralConfig::securityKey değeri elde edildikten sonra aynı kullanıcı, Craft'ın genel HMAC iletim biçimini çevrimdışı hesaplayabiliyor. redirect gibi imzalanmış parametreler kabul ediliyor ve sandbox dışı View::renderObjectTemplate fonksiyonuna iletiliyor; Twig'in dize ile çağrılabilir biçimi de yerel PHP callable'larını çağırabiliyor. Regresyon kanıtı zararsız substr callback'ini kullanıyor ve abcdef değerinin cdef'e dönüştüğünü gözlemliyor; bir işletim sistemi komutu çalıştırmıyor. CVSS 3.1 vektörü: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (8.8, YÜKSEK). Etkilenen sürümler: 5.0.0 ile 5.11.2 öncesi ve 4.0.0 ile 4.18.9 öncesi; düzeltilmiş sürümler 5.11.2 ve 4.18.9. Zayıflık sınıfı: CWE-1336.

Kaynaktaki açıklama (İngilizce)

Craft CMS allows any authenticated control panel user to submit an element-search condition whose element selector is evaluated as a sandboxed Twig object template. Craft’s allowed column filter delegates property lookup to Yii ArrayHelper, outside Twig’s SecurityPolicy. Repeated single-segment lookups therefore bypass the sandbox’s empty property/method allowlists.

The vulnerable condition value is ultimately cast to an integer. That does not protect the secret: the template can return author ID 1 when a guessed key character is correct and an impossible ID otherwise. The JSON endpoint returns entries for the first case and an empty array for the second, forming a stable remote character oracle.

After recovering GeneralConfig::securityKey, the same user can compute Craft’s generic HMAC wire format offline. Signed parameters such as redirect are then accepted and passed to unsandboxed View::renderObjectTemplate(), where Twig’s string-callable form can invoke native PHP callables. The regression proof uses the harmless substr() callback and observes abcdef becoming cdef; it does not execute an OS command.

Bu açığın açıklamasını Türkçeye çevirdik. Adım adım çözüm önerilerini kritik ve yeni açıklar için hazırlıyoruz; düzeltilmiş sürüm aşağıdaki tabloda, ayrıntılar üreticinin duyurusunda.

Etkilenen sürümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
craftcms cms ≥ 5.0.0, < 5.11.2 5.11.2
≥ 4.0.0, < 4.18.9 4.18.9

Kaynaklar6 kaynak

Kayıt geçmişi

  1. Yayımlandı

İlgili açıklar

Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.