CVE-2020-11652: SaltStack Salt Path Traversal Vulnerability
Zorluk Seviyesi: Başlangıç | Kaynak: CISA KEV
Zafiyet Analizi ve Giriş
CVE-2020-11652, SaltStack’in Salt ürününde bulunan ve belirli bir yapılandırma eksikliğinden kaynaklanan bir path traversal (dizinde dolaşma) zafiyetidir. Salt, otomatize edilmiş sistem yönetimi ve yapılandırma yönetimi amacıyla yaygın olarak kullanılan açık kaynaklı bir araçtır. Zafiyetin temelinde, salt-master sürecinin ClearFuncs işlevinde meydana gelen bir hata yatmaktadır. Bu hata, özellikle kimlik doğrulaması yapılmış kullanıcıların belirli dizinlere yetkisiz erişim sağlamasına olanak tanır.
Zafiyetin etkileri oldukça geniş bir yelpazeye yayılmaktadır. SaltStack Salt’ı kullanan şirketler, sisteme yetkili kullanıcıların erişebileceği kritik bilgilerin ele geçirilmesine ve kötüye kullanılmasına maruz kalabilirler. Dolayısıyla, bu zafiyet, veri gizliliği ve sistem güvenliği tehlikeleri açısından önemli bir risk taşır. Dünyanın dört bir yanında bilgi teknolojileri sektörü, finansal hizmetler, sağlık, eğitim ve kamu sektörleri dahil olmak üzere birçok sektörde, bu zafiyetten etkilenen sistemlerin kullanıldığı gözlemlenmiştir.
Gerçek dünya senaryolarında, örneğin bir yönetim panelinin üzerinden yetkili bir kullanıcı tarafından salt-master sürecine erişim sağlandığında, bu kullanıcı kendi bilgisayarında yerel olarak bulundurduğu dizinlere erişim elde edebilir. Bu tür dizinler, hassas verilerin bulunduğu sistem dosyaları veya yapılandırma dosyalarına kadar uzanabilir. Bu durum, potansiyel olarak büyük veri ihlalleri ve sistemin genel bütünlüğü açısından ciddi tehditler oluşturabilir.
Zafiyetin güncellenen cihazlarda, otomatik güncellemeler ile kapatılmadığı takdirde, saldırganlar tarafından oldukça kolay bir şekilde kötüye kullanılabilir. Örneğin, bir siber saldırgan, kontrolsüz karakter dizilerini kullanarak izlendiği dizinlerden dışarıya veriler sızdırabilir. Ayrıca, zafiyetin potansiyel etkileri altında, saldırganlar kullanıcıların oturum bilgilerini çalabilir veya istemciden sunucuya veri iletimini manipüle edebilir, bu da Remote Code Execution (RCE - Uzaktan Kod Çalıştırma) gibi daha ciddi zafiyetlere kapı açabilir.
Zafiyetin temel kaynağı, SaltStack'in ClearFuncs işlevinin yeterince güvenli bir biçimde yapılandırılmamış olmasıdır. Tasarımda gözden kaçan bu zafiyet, doğru yapılandırmalarla minimize edilebilir. Örneğin, temin edilen dosya yollarının ve kullanıcı izinlerinin sıkı bir şekilde denetlenmesi, bu tür hataların önüne geçecektir. Sistem yöneticileri, ayrıca, oturum açma işlemlerini kuvvetli kimlik bilgileriyle gerçekleştirmeli ve kullanıcıların erişim seviyelerini asgari düzeyde tutarak böyle bir zafiyetin etkisini azaltmalıdır.
Sonuç olarak, CVE-2020-11652 ve benzeri zafiyetler, sistem güvenliği konusunda ne denli dikkatli olunması gerektiğini bir kez daha gözler önüne sermektedir. Herhangi bir sistem yöneticisi, kullanıcıların en iyi uygulamalara ve güvenlik standartlarına ilgili bilgi ziyaretini artırmalı ve sistemlerini düzenli olarak güncel tutarak bu tür zafiyetlerden korunmalıdır. Hedef, sadece var olan tehditlere karşı koruma sağlamak değil, aynı zamanda sistemlerimizin gelecekte karşılaşabileceği potansiyel tehlikeleri de önceden öngörerek proaktif önlemler almaktır.
Teknik Sömürü (Exploitation) ve PoC
SaltStack Salt, bir yapı yönetim sistemi olarak geniş bir kullanıcı kitlesi tarafından tercih edilmektedir. Ancak, CVE-2020-11652 zafiyeti, güvenlik açığı bulunmayan kullanıcılar için önemli bir risk oluşturmaktadır. Bu zafiyet, salt-master sürecindeki ClearFuncs işlevinde bir path traversal (yol geçişi) açığıdır ve bu durum, kimlik doğrulaması yapılmış kullanıcıların dizinlere erişim sağlamalarına olanak tanımaktadır. Kötü niyetli bir kullanıcı bu açığı leveraj ederek sistemin çeşitli bölümlerine erişim sağlayabilir ve bu durum güvenlik ihlallerine yol açabilir.
Sömürü sürecine başlamadan önce, zafiyetin etkisini anlamak önemlidir. Bu zafiyet sayesinde, bir saldırgan, salt-master servisi aracılığıyla sunucudaki dosya ve dizin yapılarına erişim sağlayabilir. Bu durum, hassas verilerin ele geçirilmesine veya kötüye kullanılmasına yol açabilecektir. Eğer saldırgan sistemdeki önemli yapılandırma dosyalarına ulaşırsa, bu noktada daha karmaşık zafiyet türleri, örneğin Remote Code Execution (RCE - Uzaktan Kod Çalıştırma) gibi zafiyetlerle birleşebilir.
Sömürü adımları, genellikle şu şekilde sıralanır:
Hedef Belirleme: İlk olarak, SaltStack Salt kullanan bir hedef sistem tespit edilir. Hedef sistemin IP adresi ve port numarası belirlenmelidir. Genellikle SaltStack, 4505 ve 4506 numaralı portları kullanır.
Kimlik Doğrulama: Zafiyetin etkili olabilmesi için, hedef sistemde kimlik doğrulaması yapılmış bir kullanıcı olunması gerekmektedir. Bu durumda, test amaçlı bir kullanıcı kimliği ve şifresi sağlamak önemlidir.
Path Traversal Saldırısı: Saldırgan, salt-master sürecine bir HTTP isteği gönderir. Bu istek, genellikle path traversal karakterleri kullanarak gönderilecektir. Örneğin:
POST /run HTTP/1.1
Host: <hedef_ip>:4506
Content-Type: application/json
Authorization: Bearer <token>
{
"fun": "cp.cache_file",
"arg": ["../../../etc/passwd"]
}
Yukarıdaki HTTP isteği, hedef sistemdeki /etc/passwd dosyasına erişim sağlamayı denemektedir. Bu dosya genellikle sistemdeki kullanıcı bilgilerini barındırır ve bu bilgilere ulaşmak, saldırgan için çok değerli olabilir.
- Erişim Sonuçlarının İncelenmesi: Eğer saldırı başarılı olursa, Sunucu yanıtının içeriği kontrol edilerek elde edilen bilgilerin varlığı doğrulanabilir. Başarılı bir istek sonucunda, sunucudan gelen yanıt aşağıdaki gibi bir içerik verebilir:
HTTP/1.1 200 OK
Content-Type: application/x-json
Content-Length: 1234
{
"return": [
{
"name": "passwd",
"data": "... [dosya içeriği burada] ..."
}
]
}
Bu yanıt, saldırganın hedef sistemdeki /etc/passwd dosyasına başarılı bir şekilde erişim sağladığını gösterir.
- Verilerin Kötüye Kullanılması: Elde edilen verilere dayanarak, saldırgan sistem üzerinde daha fazla hareket edebilir. Örneğin; şifreleri çözerek daha fazla bilgiye ulaşabilir ya da sistem üzerinde yetki yükseltme saldırıları gerçekleştirebilir.
Sonuç olarak, CVE-2020-11652 zafiyeti, SaltStack Salt kullanıcıları için önemli bir güvenlik riski taşımaktadır. Kullanıcıların bu tür zafiyetlere karşı dikkatli olmaları, güncellemeleri takip etmeleri ve güvenlik politikalarını gözden geçirmeleri önerilmektedir. Zafiyetin etkilerini en aza indirmek için, sistemlerde kimlik doğrulama mekanizmalarının güçlendirilmesi ve gereksiz izinlerin kısıtlanması önem arz etmektedir.
Forensics (Adli Bilişim) ve Log Analizi
SaltStack Salt, açık kaynaklı bir konfigürasyon yönetim aracıdır ve bir dizi önemli işlevsellik sunar. Ancak, CVE-2020-11652 zafiyeti, özellikle kötü niyetli kullanıcıların yetkisiz dizinlere erişimini sağlaması açısından önemli bir tehdit oluşturmakta. Bu zafiyetin etkilerini minimize etmek ve olası saldırıları tespit etmek için, hem güvenlik bilgileri ve olay yönetimi (SIEM) sistemleri hem de log analizi (log analysis) büyük önem taşımaktadır.
Eğer bir siber güvenlik uzmanıysanız, SaltStack Salt'ın bu zafiyetten etkilenip etkilenmediğini anlamak için çeşitli log dosyalarını detaylı bir şekilde incelemeniz gerekecektir. SaltMaster'ın log dosyalarında, özellikle access log ve error log gibi kritik kayıtlarda, saldırı izlerini bulmanız mümkündür. Saldırıya ilişkin belirli imzalar şunları içerebilir:
- Şüpheli Dizin Erişimleri: Kullanıcı isteklerinde, beklenmeyen dizin yolları veya
..(dot-dot) kullanımını arayın. Bu, bir path traversal (dizin geçişi) saldırısının belirtisi olabilir. Örneğin:
192.168.1.50 - - [10/Oct/2023:13:55:36 +0000] "GET /path/to/..%2F..%2Fetc%2Fpasswd HTTP/1.1" 200
Başka Kullanıcıların Bilgisine Erişme Denemeleri: Loglarda, yetkisiz kullanıcıların izin verilmemiş dizinlere girişimde bulunduğuna dair kayıtları tespit etmek önemlidir. Özellikle, normalde erişime kapalı olan dizinlerdeki aktiviteler dikkatle incelenmelidir.
Başarısız Yetkilendirme Denemeleri: Çok sayıda başarısız oturum açma girişimi, bir saldırganın sisteme girmeye çalıştığını gösterebilir. Bu tür log kayıtları şu şekilde görünebilir:
192.168.1.50 - - [10/Oct/2023:14:05:12 +0000] "POST /login HTTP/1.1" 401
Anormal Trafik Desenleri: Kullanıcıların sisteme girişte normalde gerçekleştirmediği türden isteklerin yapılması. Örneğin, bir kullanıcının genelde erişmediği dizinleri sorgulaması bu duruma işaret edebilir.
İzin İhlalleri: Eğer log analizinde, normal bir kullanıcının erişim izni olmaması gereken alanlarda sorgular görünüyorsa, bu durum kesinlikle incelenmelidir. Örneğin:
192.168.1.50 - - [10/Oct/2023:15:30:29 +0000] "GET /admin/configuration HTTP/1.1" 403
Sonuç olarak, SaltStack Salt üzerindeki CVE-2020-11652 zafiyeti, potansiyel olarak ciddi bir insecure direct object reference (IDOR - güvensiz doğrudan nesne referansı) durumu yaratabileceğinden, bu tür log incelemeleri ile olası saldırılar tespit edilmelidir. Siber güvenlik uzmanları, log dosyalarını analiz ederek ve yukarıda belirtilen imzalara (signature) dikkat ederek, sistemdeki şüpheli aktiviteleri belirleyebilir ve saldırılara karşı önlem alabilir. Hızla hareket etmek, bu tür zafiyetlerin etkisini azaltmak adına kritik öneme sahiptir.
Savunma ve Sıkılaştırma (Hardening)
SaltStack Salt, sistem yöneticilerine ve DevOps ekiplerine Robotic Process Automation (RPA) ve konfigürasyon yönetimi konularında büyük kolaylıklar sunan bir otomasyon platformudur. Ancak, CVE-2020-11652 adlı zafiyet, özellikle authenticated (kimlik doğrulaması yapılmış) kullanıcılar için ciddi bir tehlike oluşturmaktadır. Bu yazıda, bu zafiyetin sebeplerini, etkilerini ve güvenliği artırma yöntemlerini inceleyeceğiz.
CVE-2020-11652, SaltStack Salt'ın salt-master sürecindeki ClearFuncs fonksiyonunda bir path traversal (yol geçişi) zafiyetidir. Bu zafiyet, kimlik doğrulaması yapılmış kullanıcıların, yetkilendirilmedikleri dosya ve dizinlere erişim sağlamasına olanak tanır. Özellikle, bu durum bir siber saldırganın (örneğin, bir privileged user) sistemdeki kritik verilere erişmesine yol açabilir. Bu tür bir zafiyet, sisteme uzaktan kod yürütme (RCE - Remote Code Execution) veya veri sızıntısına (data leak) neden olabilir.
SaltStack Salt kullanıcılarının büyük çoğunluğu, güçlü şifreleme ve güvenlik kuralları uygulayarak bu tür zafiyetlerden olumsuz etkilenmektedir. Ancak, güvenlik açıkları sıklıkla istismar edilebileceği için, sisteminizi sürekli olarak sıkılaştırma (hardening) çalışmaları yapmak önemlidir.
Zafiyeti kapatmanın en etkili yollarından biri, SaltStack Salt’ın en son sürümüne güncellemektir. SaltStack, bu güncellemeler aracılığıyla zafiyetleri gidermek ve sistem güvenliğini artırmak için sürekli çalışmalar yapmaktadır. Güncellemeleri düzenli olarak kontrol etmek ve uygulamak, temel bir güvenlik önlemidir.
Ayrıca, alternatif firewall (WAF - Web Application Firewall) kuralları da kullanılabilir. WAF, web uygulamalarına yönelik çeşitli tehditleri engelleyerek, sisteminize gelen zararlı istekleri filtreden geçirebilir. Örneğin, aşağıdaki gibi bir kural seti uygulanabilir:
SecRule REQUEST_URI "@contains /path/to/protected/directory/" "id:123456,phase:1,deny,status:403"
SecRule REQUEST_HEADERS "User-Agent" "iPhone" "id:123457,phase:2,log,deny"
Bu kurallar, belirli dizinlere erişimi sınırlayarak istenmeyen kullanıcıların sisteminize ulaşmasını zorlaştırır. Dizin geçişi denemelerini loglamak (kayda almak) ve engellemek, potansiyel saldırıları önlemede kritik bir rol oynar.
Kalıcı sıkılaştırma önerileri arasında, sadece gerekli kullanıcıların SaltStack Salt altyapısına erişim iznine sahip olmasını sağlamak yer alır. Kullanıcı erişim kontrollerinin sıkı bir şekilde yönetilmesi, bu tür zafiyetlerin etkilerini azaltır. Ek olarak, tüm kullanıcıların çok faktörlü kimlik doğrulama (MFA - Multi-Factor Authentication) gibi güvenlik önlemleri ile sisteme giriş yapmaları teşvik edilmelidir. Bu, hesapların ele geçirilmesi riskini önemli ölçüde azaltır.
Sistem güncellemeleri, WAF kuralları ve kapsamlı erişim kontrolleri ile birlikte, SaltStack Salt kullanıcılarının CVE-2020-11652 ve benzeri zafiyetlerden etkilenme olasılığını azaltabilir. Herhangi bir güvenlik açıklığına karşı sürekli dikkatli olmak ve sıkılaştırma (hardening) işlemlerini uygulamak, siber güvenlik alanında üst düzey bir koruma sağlamak için zorunludur. Unutmayın, güvenlik bir hedef değil, sürekli çaba gerektiren bir süreçtir.