CVE-2025-35939 · Bilgilendirme

Craft CMS External Control of Assumed-Immutable Web Parameter Vulnerability

Craft CMS'deki zafiyet, kimlik doğrulaması olmayan kullanıcıların sunucuya zararlı değerler girmesine olanak tanıyor.

Üretici
Craft CMS
Ürün
Craft CMS
Seviye
Orta
Yayın Tarihi
02 Nisan 2026
Okuma
6 dk okuma

CVE-2025-35939: Craft CMS External Control of Assumed-Immutable Web Parameter Vulnerability

Zorluk Seviyesi: Orta | Kaynak: CISA KEV

Zafiyet Analizi ve Giriş

Craft CMS, içerik yönetim sistemleri arasında yaygın olarak kullanılan bir platformdur ve birçok web uygulamasında tercih edilmektedir. Ancak, CVE-2025-35939 adlı zafiyet, bu platformun güvenlik açıklarını gözler önüne sermektedir. Bu zafiyet, dışarıdan kontrol edilen ve duyarlılığı artıran web parametrelerinin varlığı ile ilgilidir. Özellikle, bu zafiyet, kimlik doğrulamadan geçmeyen kötü niyetli bir kullanıcının, sunucudaki bilinen bir yerel dosya konumuna rastgele değerler girmesine izin vermektedir. Bu değerler arasında PHP kodu gibi tehlikeli unsurlar da bulunabilir. Bu tür bir durum, uzaktan kod yürütme (RCE - Remote Code Execution) imkanını doğurabileceği için son derece tehlikelidir.

Zafiyetin kökeni, Craft CMS uygulamasının temel bileşenleri arasında yer alan ve dışarıdan kontrol edilen parametrelerin doğrulanmaması sorununa dayanıyor. Bu durumda, kullanıcıların girdiği verilerin yeterince titiz bir şekilde değerlendirilmemesi, onları saldırgan kullanıcılar için bir araç haline getirebilir. Bu durum, özellikle e-ticaret, medya ve eğitim gibi çeşitli sektörlerde ciddi güvenlik açıklarına yol açabilmektedir. Örneğin, e-ticaret sitelerinde, bu tür bir zafiyet, saldırganların mali bilgileri veya kullanıcı oturumlarını ele geçirmesine yol açabilir. Medya kuruluşları, içeriklerinin manipüle edilmesi riskiyle karşı karşıya kalabilirken, eğitim sektörü ise kullanıcı verileri ve içerikleri açısından büyük bir tehdit altındadır.

CVE-2024-58136 ile ilişkilendirilebilecek bu zafiyet, potansiyel olarak daha karmaşık saldırı senaryolarının kapısını aralamaktadır. Örneğin, bir saldırgan, önce bu zafiyeti kullanarak sunucuya zararlı kodlar ekleyebilir ve ardından CVE-2025-32432 ile bir araya getirerek daha geniş bir etki alanı yaratabilir. Bu tür saldırılar, kurumsal bilgi sistemlerini hedef alarak, verilerin bütünlüğünü tehlikeye atmaktadır.

Craft CMS üzerindeki bu zafiyet, özellikle kötü amaçlı yazılımların ve filtrelenmemiş verilerin sunucu üzerinde çalışmasına izin verir. Örneğin, bir saldırganın aşağıdaki gibi bir payload kullanarak sunucuya zararlı kod göndermesi mümkündür:

<?php
eval($_GET['cmd']);
?>

Erken tespit ve güncellemelerin yapılmaması durumunda, bu tür bir kodun çalışması, sunucu üzerinde tam kontrol sağlama yolunu açabilir. Bu nedenle, geliştiricilerin ve sistem yöneticilerinin, web uygulamalarını sürekli olarak güncellemeleri ve güvenlik açıklarını kapatmaları kritik öneme sahiptir.

Sonuç olarak, Craft CMS'deki bu güvenlik açığı, yalnızca teknik bir sorun değil, aynı zamanda kullanıcı verilerinin güvenliğinin tehlikeye girmesi anlamına gelir. Saldırganların bu tür zafiyetleri kullanarak girişimlerde bulunmalarını önlemek için, siber güvenlik önlemlerinin uygulanması ve sürekli izleme yapılması gerekmektedir. Geliştiricilerin, hesabın korunması ve tüm kullanıcıların bilgi güvenliğinin sağlanması adına bu tür riskleri minimize etme yolu üzerine düşünmeleri ve önlemler almaları son derece önemlidir.

Teknik Sömürü (Exploitation) ve PoC

Craft CMS üzerindeki CVE-2025-35939 zafiyeti, saldırganların, sistemin temel yapı taşlarından birini hedef alarak, sunucuda zararlı PHP kodları çalıştırmasına imkan tanımaktadır. Bu zafiyet, web parametrelerinin harici kontrollerinin sağlanmaması nedeniyle oluşan bir güvenlik açığıdır. Özellikle, bu tür açıklar Remote Code Execution (RCE - Uzaktan Kod Çalıştırma) durumlarına yol açabilir. Bu bölümde, bu zafiyetin teknik sömürüsünü adım adım inceleyeceğiz.

İlk adım olarak, zafiyetin etkili olabilmesi için hedef sistem üzerinde dışarıdan veri alımına izin verecek bir web parametresinin olması gerekmektedir. Bu durum, genellikle uygulamanın HTTP istekleri yoluyla veri taşıdığı yerlerde karşımıza çıkar. Örneğin, bir kullanıcının yüklediği dosyaların otomatik olarak işlendiği bir senaryo düşünün. Eğer uygulama, yüklenen dosyanın ismini ya da içeriğini doğru bir şekilde doğrulamıyorsa, bir saldırgan şu adımları izleyerek bu açığı sömürebilir.

Öncelikle, zafiyetin bulunduğu URL’yi belirlememiz gerekmektedir. Örneğin, /upload veya /process gibi bir endpoint hedef alınabilir. HTTP POST isteği ile zararlı bir dosya yüklemek için aşağıdaki gibi bir payload kullanılabilir:

POST /upload HTTP/1.1
Host: hedefsite.com
Content-Type: application/x-www-form-urlencoded

filename=evil.php&filedata=<?php system($_GET['cmd']); ?>

Burada, filename parametresi, sunucunun zararlı dosyayı kabul edip etmediği hususunda önemli bir rol oynamaktadır. Eğer sistem dosyayı işleyip sunucuya kaydediyorsa, yukarıdaki gibi bir PHP dosyası evil.php adıyla kayıt edilecektir. Bu aşamada, yüklenen dosyanın uygun bir konuma (genellikle web sunucusunun kök dizinine) kaydedilmesi gerekmektedir.

Eğer yukarıdaki istek başarılı bir şekilde işlenirse, artık sunucuda evil.php adlı bir dosya mevcut olacaktır. Sıradaki adım, bu dosyayı çalıştırmak ve uzaktan kod çalıştırmak olacaktır. Bunun için, yeni bir HTTP GET isteği ile oluşturduğumuz zararlı dosyayı aşağıdaki gibi çağırabiliriz:

GET /uploads/evil.php?cmd=ls HTTP/1.1
Host: hedefsite.com

Yukarıdaki istek, direkt olarak sunucuda evil.php dosyasını çalıştıracak ve dosyanın içindeki system($_GET['cmd']); kod parçası sayesinde ls komutunu çalıştırarak sunucudaki dizin listesini döndürecektir.

Sunucudan gelen yanıt, başarılı bir şekilde zararlı komutun çalıştırıldığını gösteren bilgileri içerecektir. Eğer bu adımlar başarıyla tamamlanmışsa, saldırgan artık sunucuda komut çalıştırma imkanına sahip olacaktır ve bu durum siber suçlular için geniş bir erişim alanı yaratmaktadır.

Sonuç olarak, CVE-2025-35939 zafiyeti, Craft CMS üzerinde ciddi bir güvenlik açığına sebep olmaktadır. Bu tür açıklardan korunmanın en iyi yolu, kullanıcı girdilerini dikkatli bir şekilde doğrulamak ve sadece beklenen formatta verilerin kabul edilmesine izin vermektir. Geliştiricilerin, harici kontrol edilen parametreleri sıkı bir şekilde denetlemesi ve gerekli güvenlik yamalarını hızlıca uygulaması büyük önem taşımaktadır.

Forensics (Adli Bilişim) ve Log Analizi

Savunma ve Sıkılaştırma (Hardening)

Craft CMS üzerinde bulunan CVE-2025-35939 zafiyeti, dışsal olarak kontrol edilen ve değişmez varsayılanlara sahip web parametrelerinin güvenliğini hedef alan ciddi bir sorundur. Bu zafiyet, kimlik doğrulaması yapılmamış bir saldırganın, sunucuda bilinen yerel dosya konumlarına PHP kodu gibi keyfi değerler eklemesine neden olabilir. Güvenlik açığı, CVE-2024-58136 ile birleştirildiğinde daha tehlikeli bir duruma yol açabilir. Bunun sonucunda, bir uzaktan kod yürütme (RCE - Remote Code Execution) saldırısı gerçekleştirilmesi mümkün hale gelir.

Zafiyetin etkilerini en aza indirmek ve sistemin güvenliğini artırmak için çeşitli savunma stratejileri uygulanmalıdır. Öncelikle, zafiyetin kapatılmasıyla ilgili atılacak adımlara odaklanmak gerekmektedir.

Birinci öneri, uygulamanızın en güncel sürümünü kullanmaktır. Üreticiler genellikle güvenlik açıklarını düzeltmek için yazılımlarını güncellerler. Güncellemeleri düzenli olarak kontrol etmek ve kritik güvenlik yamalarını uygulamak, temel bir güvenlik pratiğidir. Ayrıca, uygulama genelinde kullanıcı girdisinin sıkı bir şekilde doğrulanması gerekmektedir. Bu, kullanıcıdan alınan verilerin beklenen formatta olup olmadığını kontrol etmeyi içerir. Örneğin, bir kullanıcıdan alınan parametrelerin yalnızca belirli bir dizi değeri kabul etmesini sağlamak için aşağıdaki gibi bir kod bloğu kullanılabilir:

if (!in_array($user_input, $allowed_values)) {
    throw new InvalidArgumentException('Geçersiz değer.');
}

İkinci olarak, Web Uygulama Güvenlik Duvarı (WAF - Web Application Firewall) kullanmak, güvenlik düzeyini artırmanın önemli bir yoludur. Bir WAF, saldırıların tespit edilmesi ve engellenmesi konusunda yardımcı olur. WAF kuralları, belirli saldırı türlerine karşı koruma sağlamak için yapılandırılabilir. Örneğin, belirli dosya türlerine yönelik istekleri filtrelemek amacıyla aşağıdaki kuralı uygulamak mümkündür:

SecRule FILES /.*\.(php|phtml)$/ "id:1001,phase:2,deny,status:403"

Bu kural, PHP dosya uzantısına sahip olan dosyaların yüklenmesini engelleyerek RCE saldırılarını azaltmaya yardımcı olabilir.

Üçüncü olarak, sürekli sıkılaştırma uygulamak (hardening), sistemin genel güvenliğini artırır. Bu, sunucuda gereksiz servislerin kapatılması, kullanıcıların yetkilerinin en aza indirilmesi ve yalnızca gerekli olan portların açık tutulması gibi adımları içerir. Ayrıca, dosya izinlerini sıkı bir şekilde yönetmek de önemlidir. Örneğin, web sunucusu kullanıcılarına yalnızca gerekli dosyalara erişim izni verilmeli ve diğer tüm dosyalar için erişim kısıtlanmalıdır:

chmod 644 /path/to/web/files/*
chmod 600 /path/to/sensitive/files/*

Son olarak, uygulama üzerinde düzenli güvenlik taramaları ve penetrasyon testleri gerçekleştirmek, olası zafiyetlerin belirlenmesine ve sistemin güvenliğinin artırılmasına yardımcı olur. Bu tür testler, yazılım geliştiricilere ve sisteme dair yöneticilere potansiyel tehditlerin ve zayıf noktaların belirlenmesine olanak tanır.

Unutulmamalıdır ki, güvenlik, sürekli bir süreçtir. Yeni zafiyetler sürekli olarak ortaya çıkmakta ve var olan sistemlerin güvenliğini tehdit etmektedir. Bu nedenle, yukarıda belirtilen önerilerin yanı sıra, güncel tehditleri takip etmek ve sistemizi sürekli olarak gözden geçirmek, güçlü bir güvenlik duruşu oluşturmanın temel taşlarıdır.