HTTP/2 protokolünün çeşitli uygulamalarında 8 DoS güvenlik açığı tespit edildi

Netflix ve Google'dan araştırmacılar açıklığa kavuşmuş HTTP/2 protokolünün çeşitli uygulamalarında, belirli bir şekilde ağ istekleri akışı göndererek hizmet reddine neden olabilecek sekiz güvenlik açığı vardır. Sorun, HTTP/2 desteğine sahip çoğu HTTP sunucusunu bir dereceye kadar etkiliyor ve çalışanın belleğinin tükenmesine veya çok fazla CPU yükü oluşturmasına neden oluyor. Güvenlik açıklarını ortadan kaldıran güncellemeler halihazırda sunulmaktadır. nginx 1.16.1/1.17.3 и H2O 2.2.6ama şimdilik kullanım dışı Apache httpd için ve diğer ürünler.

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

Yorum ekle