
Modern web uygulamalarında performans ve ölçeklenebilirlik için cache mekanizmaları (CDN, reverse proxy, application cache) yoğun şekilde kullanılmaktadır. Ancak yanlış yapılandırılmış cache politikaları, saldırganların cache içeriğini manipüle etmesine ve diğer kullanıcılara zararlı içerik sunmasına neden olabilir.
Bu saldırı türü Cache Poisoning olarak adlandırılır ve özellikle büyük ölçekli sistemlerde etkisi oldukça geniştir.
Cache sistemleri, belirli bir isteğe verilen yanıtı saklayarak aynı istekte tekrar üretim maliyetini ortadan kaldırır.
Cache key genellikle şu bileşenlerden oluşur:
Yanlış yapılandırılmış bir cache key, saldırganın cache içeriğini değiştirmesine olanak tanır.
Cache Poisoning, saldırganın cache’e zararlı veya manipüle edilmiş bir içerik yerleştirerek diğer kullanıcıların bu içeriği görmesini sağlamasıdır.
Örnek:
Eğer uygulama bu header’ı response üretirken kullanıyorsa, cache’e yanlış içerik kaydedilebilir.
Cache key oluşturulurken bazı parametreler göz ardı edilirse:
aynı cache kaydını kullanabilir.
Cache key’e dahil edilmeyen input’lar (header, cookie vs.) üzerinden saldırı yapılır.
CDN’ler bazen farklı header’ları normalize eder veya ignore eder. Bu durum saldırı yüzeyini artırır.
Tüm kullanıcıya özel verilerin cache key’e dahil edilmesi gerekir.
Cache poisoning pattern’leri için özel kurallar yazılmalı
Cache Poisoning, modern web uygulamalarında en az fark edilen ancak en etkili saldırı tekniklerinden biridir.
Doğru yapılandırılmış cache politikaları, header kontrolü ve güvenlik katmanları ile bu risk büyük ölçüde azaltılabilir.