Netflix ve Google'dan araştırmacılar
Sorunlar, ikili yapıların kullanımı, bağlantılar içindeki veri akışlarını sınırlayan bir sistem, bir akış önceliklendirme mekanizması ve HTTP/2 bağlantısında çalışan ICMP benzeri kontrol mesajlarının varlığı ile ilişkili olarak HTTP/2 protokolünde ortaya çıkan komplikasyonlardan kaynaklandı. düzeyi (örneğin ping, sıfırlama ve akış ayarları). Birçok uygulama, kontrol mesajlarının akışını uygun şekilde sınırlamadı, istekleri işlerken öncelik sırasını verimli bir şekilde yönetmedi veya akış kontrol algoritmalarının optimal olmayan uygulamalarını kullandı.
Tanımlanan saldırı yöntemlerinin çoğu, sunucuya belirli isteklerin gönderilmesine dayalıdır ve bu da çok sayıda yanıtın üretilmesine yol açar. İstemcinin soketten veri okumaması ve bağlantıyı kapatmaması durumunda sunucu tarafındaki yanıt arabelleğe alma kuyruğu sürekli olarak dolar. Bu davranış, ağ bağlantılarını işlemek için kuyruk yönetimi sistemi üzerinde bir yük oluşturur ve uygulama özelliklerine bağlı olarak mevcut belleğin veya CPU kaynaklarının tükenmesine yol açar.
Tanımlanan güvenlik açıkları:
- CVE-2019-9511 (Veri Dribble) - bir saldırgan, kayan pencere boyutunu ve iş parçacığı önceliğini değiştirerek, sunucuyu verileri 1 baytlık bloklar halinde sıraya koymaya zorlayarak, birden fazla iş parçacığına büyük miktarda veri talep eder;
- CVE-2019-9512 (Ping Flood) - bir saldırgan, HTTP/2 bağlantısı üzerinden ping mesajlarını sürekli olarak zehirleyerek, gönderilen yanıtların dahili sırasının diğer tarafta taşmasına neden olur;
- CVE-2019-9513 (Kaynak Döngüsü) - bir saldırgan birden fazla istek iş parçacığı oluşturur ve iş parçacıklarının önceliğini sürekli olarak değiştirerek öncelik ağacının karışmasına neden olur;
- CVE-2019-9514 (Floodu Sıfırla) - bir saldırgan birden fazla iş parçacığı oluşturur
ve her iş parçacığı üzerinden geçersiz bir istek göndererek sunucunun RST_STREAM çerçeveleri göndermesine neden olur, ancak bunların yanıt kuyruğunu doldurmasını kabul etmez; - CVE-2019-9515 (Ayar Taşması) - saldırgan, sunucunun her isteğin alındığını onaylaması gereken yanıt olarak boş "AYARLAR" çerçevelerinden oluşan bir akış gönderir;
- CVE-2019-9516 (0-Uzunluk Başlık Sızıntısı) – bir saldırgan, boş ad ve boş değere sahip bir başlık akışı gönderir ve sunucu, her başlığı depolamak için bellekte bir arabellek ayırır ve oturum bitene kadar onu serbest bırakmaz ;
- CVE-2019-9517 (Dahili Veri Arabelleğe Alma) - saldırgan açılır
Sunucunun kısıtlama olmaksızın veri göndermesi için HTTP/2 kayan penceresi, ancak TCP penceresini kapalı tutarak verilerin gerçekten sokete yazılmasını engeller. Daha sonra saldırgan, büyük yanıt gerektiren istekler gönderir; - CVE-2019-9518 (Empty Frames Flood) - Bir saldırgan, DATA, HEADERS, CONTINUATION veya PUSH_PROMISE türünde bir çerçeve akışı gönderir, ancak boş yük ile ve akış sonlandırma işareti olmadan. Sunucu, saldırganın tükettiği bant genişliğiyle orantısız bir şekilde her kareyi işlemek için zaman harcar.
Kaynak: opennet.ru