CVE-2023-44487, HTTP/2 protokolünün DOS(denial of service) problemine sebebiyet veren ve NIST tarafında 7.5 HIGH derecede skorlanan bir zafiyettir. Bu zafiyet, bir saldırganın bir web sitesi ya da uygulama ile arasındaki stream’ler için çok sayıda reset isteği yollayarak sistemin kaynaklarını tüketmesine ve sistemin hizmet veremez duruma gelmesine sebebiyet vermektedir. Bu zafiyet Ağustos-Ekim 2023 tarihleri arasında gerçek sistemlerde kullanılması da bu zafiyetin ne kadar kritik olduğunu bizlere göstermektedir.
Bu saldırıyı daha iyi anlamak için HTTP 1.1’i ve HTTP 2.0’ı daha yakından tanımamızda fayda var.
HTTP/1.1
HTTP/1.1 protokolü, 1997’de tanıtılan HTTP’nin ilk sürümünün isim değiştirmiş halidir. HTTP/1.1, connection-based bir yapıdadır. Bu mimaride requestler ve responselar sıralı olarak gönderilir. Her request için bir connection başlatılması gerekir. Bu da requestlerin yüksek sayılara ulaşabileceği bağlantılarda performans sorunlarına yol açabilmektedir.
Resim Kaynağı:https://wpturbo.com.br/http-1-1-versus-http-2/
HTTP/2
HTTP/2 ise stream-based bir yapı kullanır ve multiplexing dediğimiz özelliği de beraberinde getirmiştir. Çok sayıda request ve response’ların aynı connection üzerinden iletebilen bir mimaridir. Bu da birden fazla request’in ya da response’un aynı connection üzerin iletilmesini sağlar ve bunlara da stream denir. Bu da performans metriklerinde önemli iyileşmeleri beraberinde getirir.
Aşağıdaki resim HTTP/1.1 ve HTTP/2 arasındaki farklı açıklamaktadır. HTTP/1.1’de üç farklı içerik için üç farklı TCP connection’u kurulmuşken HTTP/2’de tek bir connection üzerinde birçok request gönderilebilir durumdadır.
Artık HTTP/2’nin sebep olduğu bu zafiyeti daha yakından inceleyebiliriz.
HTTP/2 request iptali, çok büyük sayıdaki stream’leri çok hızlı bir şekilde resetlemek adına kötüye kullanılabilmektedir. HTTP/2 server, bu çok sayıdaki iptal isteklerinin üstesinden gelebilecek kaynaklara sahipse bu sorun olmayacaktır ve server, client tarafından gelen bu request iptallerini sağlıklı bir şekilde işleyebilecektir ancak yeterli kaynaklara sahip değil ise bu server’in hizmet veremez bir hale gelmesini sağlayacaktır.
HTTP/2 protokolü, bir RST_STREAM frame göndererek önceki stream’i iptal etmeyi sağlar ve client bunu tek taraflı olarak gerçekleştirebilir. Client’in çok kısa bir süre içerisinde request’ler göndermesi ve ardından RST_STREAM frame’lerini göndermesi sonucunda ise konumuz olan Rapid Reset atağı gerçekleşmiş olur.
Resim Kaynağı: https://cloud.google.com/blog/products/identity-security/how-it-works-the-novel-http2-rapid-reset-ddos-attack
Stream iptalleri, server’in onayına ihtiyaç duymadığından dolayı bu protokol botnetlerin de işe karışmasıyla istismar edilebilmektedir.
HTTP/2 sunucusunun iptal edilen request’ler için yeni data stream yapıları tahsis etmek, sorguyu parse etmek, header decompresyonu yapmak ve URL’yi bir kaynağa eşlemek gibi bazı yapması gereken işler ortaya çıkar. Stream’in iptal edilmesinin sunucuya yol açtığı maliyet bu iken client’e hiçbir maliyeti olmaz. Bu da bu sunucu ile client arasında istismar edilebilir bir maliyet asimetrisi oluşturur.
Peki Bu zafiyetten Etkilenmemek İçin Neler Yapılabilir?
-> Security yamalarımızı vakit kaybetmeden uygulayabiliriz. Kullanılan ürünlerin vendorlarının sağladığı bu yamaları ürünlerimize uygulayarak bu zafiyeti ortadan kaldırabilir ya da etkilerini azaltabiliriz.
-> HTTP/2 proxy ya da load-balancer Kullanılabilir. Böylece sunucular üzerindeki yük dağılımı düzenlenebilir.
-> DDOS Protection Ürünlerini kullanabiliriz. Böylelikle bir DOS atağı olan bu gibi atakları bu koruma katmanında durdurabiliriz.
-> WAF kullanabiliriz. Böylece anormal web trafiklerini tanıma ve içerik analizi gibi özellikleri olan bu ürün, web uygulamalarını bu saldırılardan korumada katkı sağlayabilir.
Faydalanılan Kaynaklar:
-> https://cloud.google.com/blog/products/identity-security/how-it-works-the-novel-http2-rapid-reset-ddos-attack
-> https://blog.cloudflare.com/technical-breakdown-http2-rapid-reset-ddos-attack/
-> https://blog.qualys.com/vulnerabilities-threat-research/2023/10/10/cve-2023-44487-http-2-rapid-reset-attack
Leave a Reply