Ne Aramıştınız?

SSRF Tehditlerini Anlamak ve Önlemek: Sunucu Güvenliği Rehberi

Server Side Request Forgery (SSRF) web uygulamalarının derinliklerinde yer alan güvenlik tehlikelerinden biridir.

İçerik Başlıkları
SSRF

SSRF saldırısında saldırgan sızdığı sistemin sunucunun kendisi istek yapmış gibi, dış dünya ile etkileşime girmesini manipüle eder. Tek bir yanlış yapılandırma, bütün bir sistemdeki güvenlik duvarlarını etkisiz hale getirebilir ve kötü niyetli kişilere açık kapı bırakır.

2019 yılında yaşanan ve finans sektörünü sarsan Capital One saldırısı, SSRF zafiyetinin ne kadar yıkıcı olabileceğini gözler önüne serdi. Bu olayda saldırgan AWS'deki yapılandırma hatasını kullanarak 100 milyondan fazla müşterinin tüm bilgilerine erişti. Sadece maddi kayıplarla sınırlı kalmayan metaveri sızıntısı, marka güvenilirliği ve müşteri sadakatini de derinden etkiledi.

SSRF saldırıları, yalnızca dış tehditler tarafından değil, iç ağlarda da beklenebilir. İç ağ kaynaklarına yapılan yetkisiz erişimler, kurumların altyapılarını ve işleyişlerini tehdit eder.

Server Side Request Forgery, diğer web saldırılarından ayrılan çok özel bir mekanizmaya sahiptir. Tipik olarak, web uygulamalarının güvenli olmayan şekilde dış sistemlere HTTP istekleri yapmasını tetikleyerek işler. Saldırganların sunucular üzerinden dolaylı olarak hassas iç ağ hizmetlerine veya internet üzerindeki diğer sistemlere erişim sağlamasına olanak tanır. XSS veya SQL Injection gibi diğer saldırı türlerinden farklıdır; çünkü SSRF, saldırganın doğrudan sunucu üzerinde bir komut çalıştırmasına veya veritabanı sorgusu yapmasına gerek kalmadan etki alanını genişletir.

SSRF saldırıları, sunucuların yanıltıcı bir şekilde dış kaynaklardan veri alma yetkisini kötüye kullanır. Erişilmez olarak da kabul edilen tüm sistemlere, API'lere veya hizmetlere sızma fırsatı verir. Diğer yandan, XSS saldırıları genellikle kullanıcının tarayıcısında çalışır ve bu kullanıcının erişim izinleriyle sınırlıdır. SQL Injection doğrudan veritabanlarına yönelikken, SSRF geniş bir yelpazedeki sistemlere zarar verebilir ve bu nedenle potansiyel olarak daha büyük bir etki yaratabilir.

SSRF'nin diğer web saldırılarından farkı işleyiş biçimidir. Saldırının kullanıcının kendi sunucularında yer alan meşru işlevleri kötüye kullanarak ilerlemesi, onu CSRF gibi ağ üzerinden gelen diğer siber saldırılardan ayrılır. SSRF zafiyetlerinin en yaygın ortaya çıktığı senaryolardan biri, uygulamaların kullanıcı girdilerini yeterince doğrulamadan URL'ler üzerinden harici sistemlere erişim sağlamasıdır.

Örneğin, bir web uygulaması, kullanıcıdan aldığı URL'ye HTTP isteği göndermek için yapılandırılmış olabilir. Saldırgan, meşru bir URL yerine, örneğin, iç ağdaki hassas bir servise ait URL'i girebilir. Sunucu, bu zararlı URL'e istek gönderdiğinde, saldırgan sistem içindeki hassas bilgilere erişebilir veya iç sistemlere zarar verebilir.

SSRF Saldırı Türleri ve Teknikleri

SSRF saldırıları, birbirinden farklı yöntemlerle gerçekleştirilebilir ve her biri, uygulamanın güvenlik açıklarını farklı şekillerde sömürür. En basit formda SSRF saldırıları, kullanıcı girdisi olarak alınan bir URL'yi filtreleme olmaksızın sunucunun yüklemesine izin verir. Saldırgan, bu işlevi kullanarak sunucunun yasaklı olan iç ağ hizmetlerine veya AWS EC2 gibi metaveri hizmetine erişim sağlamak için kötü amaçlı URL'ler gönderebilir.

Kör SSRF ya da İngilizce adıyla Unauthenticated Blind SSRF saldırıları, saldırganın sunucudan dönen yanıtı göremediği durumlarda gerçekleşir. Genellikle arka plan işlemlerinde kullanılır ve saldırgan, zararlı etkinliklerinin sonuçlarını dolaylı yollarla tespit etmek zorundadır. Örneğin, sunucunun iç ağdaki diğer makinelerle etkileşim kurmasını sağlayabilir ve bu etkileşimler sonucunda oluşan değişiklikleri gözlemleyerek ne yaptığını görebilir.

Zincirleme SSRF tekniği, birden fazla zafiyetin birleştirildiği daha kompleks bir saldırı türüdür. Açık yönlendirmeler veya hatalı yapılandırmalar gibi zafiyetleri, SSRF ile birleştirerek sunucu üzerinde daha geniş çaplı kontrollere erişim sağlar. Özellikle kurumsal şirketlere ait büyük ve karmaşık sistemlerde daha etkilidir.

Saldırganlar, SSRF zafiyetlerini kullanarak hassas verilere erişip sızdırabilirler. Örneğin saldırgan, yapılandırma dosyaları, veritabanı yedekleri veya yönetim araçları gibi korunan kaynaklardan veri çekebilir. Saldırılar, genellikle hedef içeriğini ele geçirmek amacıyla gerçekleştirilir ve saldırganın erişim kazandığı bilgileri kullanarak daha ileri saldırılar düzenlemesine olanak tanır.

SSRF saldırıları ayrıca, iç ağdaki diğer servislerde port taraması için kullanılabilir. Saldırgan, sunucuya farklı portlara istekler göndererek hangi hizmetlerin çalıştığını ve potansiyel zafiyetlerin nerede olduğunu belirleyebilir.

SSRF Saldırılarının Potansiyel Etkileri

SSRF saldırılarının potansiyel etkileri, genellikle zafiyetin bulunduğu sistemin yapılandırmasına ve koruma düzeyine bağlı olarak değişiklik gösterir. Bu nedenle güvenlik önlemlerinin sürekli olarak gözden geçirilmesi ve güncellenmesi, bu tür saldırıların önlenmesinde kritik bir rol oynar. Olası sonuçlar şu şekilde sıralanabilir:

  • SSRF saldırıları, saldırganlara karşı korunan iç ağlara sızmanın ilk basamağı olarak kullanılır. Erişim saldırganın sistem içindeki diğer makineleri keşfetmesine izin verir, böylelikle iç ağdaki diğer güvenlik zafiyetlerini sömürmesine olanak tanır. Özellikle iç ağlara girdikten sonra koruma oranı azaldığı için erişimler ciddi güvenlik ihlallerine yol açabilir.
  • SSRF saldırıları aracılığıyla, saldırganlar çeşitli hassas bilgilere erişebilirler. API anahtarları, uygulama kimlik bilgileri, özel ağ yapılandırma detayları ve hatta kullanıcıların kişisel verileri bu bilgiler arasında sıralanır.
  • Bazı durumlarda SSRF saldırıları hedeflenen sunucular üzerinde aşırı yük oluşturarak hizmet dışı bırakma (DoS) saldırılarına neden olur. Saldırgan, sunucunun kaynaklarını tüketmek için sürekli istekler gönderir veya iç ağdaki işlem talebi yüksek kritik hizmetleri hedef alır.
  • SSRF, saldırganların sunucunun kimliğini kullanarak yanıltıcı işlemler yapmasına izin verebilir. Örneğin, saldırgan, sunucunun güvenilir sistem olarak kabul edildiği durumlarla kötüye kullanarak, zararlı veri gönderimi yapabilir.
  • Eğer saldırgan SSRF zafiyetini başka sistemlerdeki zafiyetlerle birleştirebilirse, zararlı yazılım yayılarak sistemler arası enfeksiyonlar meydana gelir.

SSRF Saldırılarından Korunma Yöntemleri

Kullanıcı girdilerini doğrulamak, SSRF saldırılarını önlemede temel bir adımdır. URL'ler veya IP adresleri gibi dış kaynaklara yapılan tüm isteklerde kullanıcı girdilerinin güvenli bir şekilde işlenmesi gerekir.

Sunucu Taraflı Önlemler

Sunucu taraflı alınabilecek önlemlerin ilki ağ izolasyonu sağlayan sunucu taraflı kodlama uygulamasıdır. Güvenlik duvarı kurallarını, iç ağdaki kritik hizmetlere sadece belirli sunucuların erişimine izin verecek şekilde yapılandırabilirsiniz. Veritabanı sunucularının, yalnızca uygulama sunucularından gelen trafiği kabul etmeleri sağlamak dışarıdan gelebilecek zararlı yazılımı engeller. Örneğin, TCP port 5432 üzerinden PostgreSQL için trafiği sınırlayabilirsiniz.

Sunucuların dışa yönelik trafiğini sınırlamak adına egress filtreleme uygulanabilir. Bu yöntem sunucuların yalnızca önceden tanımlanmış dış hizmetlere erişimine olanak tanır. Ayrıca tüm dış ağ isteklerinin bir proxy sunucusu üzerinden yönlendirilerek kontrol edilmesi mümkündür. Proxy, yalnızca belirli URL'ler için istekleri kabul edecek şekilde yapılandırılmalıdır. İç ağdaki DNS çözünürlüğünü yönetmek için DNS proxy sunucuları kullanın. İç ağ kaynaklarına olan tüm erişimleri kontrollü ve güvenli bir şekilde yönetmenizi sağlar.

Uygulama Geliştirme Aşamasında Alınacak Önlemler

Kullanıcıdan alınan URL'ler için bir beyaz liste yaklaşımı kullanabilirsiniz. Beyaz liste, yalnızca uygulama tarafından erişilmesine izin verilen URL şemalarını ve alan adlarını içermelidir. Kişi girdilerini filtrelemek için güçlü regüler ifadeler tercih edilebilir. Örneğin, https?://(www\.)?trusteddomain\.com(/.*)? gibi bir regüler ifade ile yalnızca trusteddomain.com üzerinden HTTP ve HTTPS protokolleri ile başlayan URL'lere izin verebilirsiniz.

Uygulamanızın kodunu düzenli olarak statik kod analizi araçlarıyla tarayarak sisteminizi güvenli tutabilirsiniz. Bu araçlar, kötü yapılandırılmış URL manipülasyonu ve zayıf girdi doğrulama gibi potansiyel güvenlik açıklarını tespit etme yeteneğine sahiptir.

Güvenlik açıklarını belirlemek için, gerçek dünya saldırı senaryolarını simüle eden dinamik tarama araçları ve otomatik penetrasyon testlerinden faydalanabilirsiniz. Ayrıca mikroservisler ve API'ler arasındaki erişimi sınırlamak için API Gateway kullanabilirsiniz. Gateway gelen ve giden her isteği kontrol ederek yalnızca yetkili isteklerin servislere ulaşmasına izin vererek güvenliği artırır.

SSRF Saldırıları Nasıl Tespit Edilir ve Engellenir?

Ağ akışındaki anomalilerin farkına varmak SSRF saldırılarını tespit etmenin yollarından en basitidir. Sunucudan yapılan tüm HTTP isteklerinin başlıklarını analiz ederek, içeriklerindeki referanslar kontrol edilmelidir. Eğer bir istek, normal dışı bir URL veya IP adresi içeriyorsa, bu SSRF saldırısının bir işareti olabilir.

Ağ trafiğini izlemek için SIEM (Security Information and Event Management) sistemlerini kullanabilirsiniz. Sistemler otomatik olarak, ağdaki anormal aktiviteleri gerçek zamanlı olarak saptayarak alarmlar üretebilir. Özellikle sunucuların alışılmadık hedeflere veya iç ağda norm dışı yerlere HTTP istekleri göndermesi, SSRF işareti olabilir. Zafiyet analizleri yaparak saldırı gerçekleşmesi muhtemel açıkları tespit edebilirsiniz.

EDR (Endpoint Detection and Response) çözümleri, endpoint cihazlarda gerçekleşen şüpheli aktiviteleri tespit eder ve bu bilgileri merkezi bir güvenlik takımına raporlar. Güvenlik duvarı ve router kuralları kullanılarak, sunucuların hangi hedeflere HTTP istekleri yapabileceği sıkı bir şekilde kısıtlanabilir. Kontroller, özellikle yönetim ağları ve hassas veri depolama alanları için kritiktir. Ağ segmentasyonu, sunucuların birbirleriyle ve dış dünya ile olan iletişimini düzenlemek için kullanılır. Bu sayede bir SSRF saldırısı gerçekleşse bile, saldırının etki alanı sınırlı tutulabilir.

SSRF saldırılarını engellemek ve verilerinizi güvenle saklamak için güçlü bir güvenlik duvarı uygulaması kullanmanız gerekir. Siz de şirketinizi siber saldırılara koruma adına Timus tarafından sunulan Firewall çözümünü kullanabilirsiniz. Berqnet Firewall hem server hem de ağ trafiği üzerinde oluşabilecek sızıntılara karşı koruma sağlar.

Kaynakça

  1. https://scholar.googleusercontent.com/scholar?q=cache:k8leHfz3ZLQJ:scholar.google.com/+ssrf+server+side+request&hl=tr&as_sdt=0,5
  2. https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html
  3. https://owasp.org/www-project-top-ten/
  4. https://www.capitalone.com/digital/facts2019/
  5. https://dl.acm.org/doi/10.1145/3546068

Sıkça Sorulan Sorular

SSRF saldırılarını tespit etmek için izlenmesi gereken HTTP durum kodları genellikle 200 OK, 400 Bad Request, 401 Unauthorized, 403 Forbidden, ve 404 Not Found olabilir. Durum kodları, sunucunun dış kaynaklardan isteklere verdiği yanıtları gösterir ve olası izinsiz erişim ya da hatalı istekler hakkında bilgi sağlar.

Blind SSRF (Server Side Request Forgery) zafiyetlerini tespit etmek için birkaç etkili yöntem bulunur. Bu zafiyet türünde saldırgan tarafından gönderilen zararlı isteklerin etkileri doğrudan gözlemlenemez, bu nedenle dolaylı teknikler kullanmanız gerekir. Sunucu isteklerine kasıtlı olarak zaman gecikmeleri ekleyerek yapılan isteklerin yanıt sürelerinin ölçebilirsiniz. Gecikmeli yanıt süreleri fark edilirse, bu durum bir Blind SSRF işaretçisi olabilir. İkinci olarak, dış servislerle etkileşim yöntemi kullanılır. DNS sunucusu kurularak, bu sunuculara yapılan istekler gözlemlenir. Eğer uygulama bu tür dış servislere beklenmedik istekler gönderiyorsa, bu durum Blind SSRF zafiyeti olduğuna dair bir gösterge olabilir.

SSRF için beyaz liste oluştururken, sadece uygulamanın erişmesi gereken ve güvenilir olduğu bilinen hedefler dahil edilmelidir. IP adresleri ve portlar özel olarak belirlenmeli, genellikle HTTP ve HTTPS için standart web portları olan 80 ve 443 dahil edilmelidir. İç servisler veya API'ler için özel IP adresleri ve portlar da beyaz listeye alınabilir.

Bulut ortamlarında SSRF saldırılarına karşı alınması gereken önlemler, bulut altyapılarının benzersiz özelliklerine uygun şekilde tasarlanmalıdır. Öncelikle bulut hizmet sağlayıcılarının sunuculara sağladığı metaveri API'lerine erişimi sınırlamak büyük önem taşır. Ayrıca bulut kaynaklarına erişimde rol tabanlı erişim kontrolü (RBAC) sistemlerinin kullanılması, yalnızca yetkili kullanıcıların ve sistemlerin kaynaklara erişmesine izin vererek güvenlik seviyesini artırır.

WAF kuralları, şüpheli veya zararlı olarak bilinen URL yapıları, metotlar ve protokoller üzerinde sıkı kontroller yapacak şekilde yapılandırılmalıdır. Örneğin, harici URL'lere yapılan çağrıları sınırlamak, URL parametrelerini sıkı bir şekilde doğrulamak ve sunucu içi kaynaklara yapılan çağrılara karşı filtreler uygulamak etkili olabilir.

SSRF saldırılarını simüle etmek ve test etmek için kullanılabilecek araçlar arasında Burp Suite, OWASP ZAP, ve Postman bulunur. Araçlar, güvenli olmayan URL'lerin ve isteklerin sunucuya gönderilmesini sağlayarak zafiyetlerin tespit edilmesine yardımcı olur.

SSRF zafiyetine karşı koruma sağlayan açık kaynak kodlu çözümler arasında ModSecurity (Apache için bir WAF), Nginx Referrer Policy (HTTP başlıklarını kullanarak) ve OpenWAF yer alır Ticari çözümler ise Cloudflare WAF, Imperva Cloud WAF, ve AWS WAF gibi ürünlerdir. Bu çözümler, genişletilmiş yapılandırma seçenekleri ve gelişmiş izleme özellikleri sunarak etkin bir koruma sağlar.

30 Temmuz 2024
Hızlı Teklif Alın