Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • Yama var
  • Son 7 gün
  • CWE-400
  • CWE-407

CVE-2026-114138

Django REST framework'te Accept başlığı kaynaklı aşırı CPU tüketimi ve hizmet dışı kalma riski

encode django-rest-framework

Yüksek 7,5 CVSS 3.1
Yayımlandı
Güncellendi
28 Eki 2026
Açık yaşı
6 gün
Kaydı açan
GitHub_M

ÖzetTürkçe

Django REST framework, Web API'leri oluşturmak için kullanılan bir araç setidir. 3.18.2 sürümünden önce, rest_framework/negotiation.py dosyasındaki DefaultContentNegotiation.get_accept_list metodu, sınırsız sayıda ve toplam boyutta Accept belirteci kabul etmektedir. Aynı dosyadaki select_renderer metodu ise saldırgan kontrolündeki her belirteç, her renderer ve zorlanmış 406 yeniden müzakeresi için rest_framework/utils/mediatypes.py dosyasındaki _MediaType ayrıştırmasını tekrar tekrar çağırmaktadır. Kimlik doğrulaması yapmayan uzak bir istemci, çok sayıda farklı medya türü içeren ve çok sayıda noktalı virgül barındıran büyük tırnaklı parametre değerleri gönderebilir. Bu durum, Django'nun parametre ayrıştırıcısının ve DRF'nin tekrarlı ayrıştırma yapısının orantısız miktarda CPU tüketmesine neden olur. Erişilebilir herhangi bir uç noktaya yapılan istekler, senkron çalışanları uzun süre meşgul edebilir; eşzamanlı istekler ise istekler durana kadar hizmetin kullanılamaz hale gelmesine yol açabilir. Bu sorun 3.18.2 sürümünde giderilmiştir.

Kaynaktaki açıklama (İngilizce)

Django REST framework is a toolkit for building Web APIs. Prior to 3.18.2, DefaultContentNegotiation.get_accept_list in rest_framework/negotiation.py accepts an unbounded number and aggregate size of Accept tokens, while select_renderer in that file repeatedly invokes _MediaType parsing from rest_framework/utils/mediatypes.py for each attacker-controlled token, every renderer, and forced 406 renegotiation. A remote unauthenticated client can send many distinct media types containing large quoted parameter values with numerous semicolons, causing Django's parameter parser and DRF's repeated parsing structure to consume disproportionate CPU. Requests to any reachable endpoint can pin synchronous workers for prolonged periods, and concurrent requests can make the service unavailable until the requests stop. This issue is fixed in version 3.18.2.

Bu açığın açıklamasını Türkçeye çevirdik. Adım adım çözüm önerilerini kritik ve yeni açıklar için hazırlıyoruz; düzeltilmiş sürüm aşağıdaki tabloda, ayrıntılar üreticinin duyurusunda.

Etkilenen sürümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
encode django-rest-framework < 3.18.2 3.18.2

Kaynaklar5 kaynak

Kayıt geçmişi

  1. Yayımlandı

İlgili açıklar

Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.