Yazılım

CVE-2026-111497 Brotli Açığı: Node.js, Python ve Ubuntu Etkileniyor, Yama Rehberi

CVE-2026-111497, Google'ın Brotli sıkıştırma kütüphanesindeki kritik bir bellek taşması açığı.

Semih Ateşçi4 dakikalık okuma
PHP2Shell kritik PHP güvenlik açığı kapak görseli

CVE-2026-111497, Google'ın Brotli sıkıştırma kütüphanesindeki kritik bir bellek taşması açığı. Brotli 1.0.3 ile 1.2.0 arasındaki tüm sürümleri etkiliyor; özel hazırlanmış bir Brotli verisi, kimlik doğrulaması olmadan belleği bozabiliyor, bellek içeriğini sızdırabiliyor, süreci çökertebiliyor ve teoride kod çalıştırabiliyor. CVSS 4.0 puanı 9,2 (kritik). Açık önce "Node2Shell", sonra Python, .NET ve Java'yı da kapsayınca "HTTP2Shell" adını aldı. Node.js 21 Ekim'de, Ubuntu ve diğer dağıtımlar izleyen günlerde yama yayımladı; yani çözüm var, ama Brotli'yi kendi içine gömen her yazılımın ayrıca güncellenmesi gerekiyor.

CVE-2026-111497 nedir ve neden bu kadar yaygın?

Brotli, Google'ın geliştirdiği kayıpsız bir sıkıştırma algoritması ve web'de HTML, CSS ve JavaScript'i küçültmek için yaygın kullanılıyor. Açık, referans C kodundaki decoder'da (c/dec/decode.c) bir sınır dışı yazma hatası: Decoder, geçersiz bir blok geçişini reddetmesi gerekirken daha fazla bayt kabul etmeye devam ediyor ve gelen baytlar küçük bir çalışma tamponunu aşarak komşu bellek alanını bozuyor.

Hatanın kaynak kodda 27 Şubat'ta düzeltildiği, ancak bunun güvenlik açığı olarak etiketlenmediği ve hiçbir Brotli sürümüne 21 Ekim'e kadar girmediği belirtiliyor. Bu yüzden Brotli'yi projesine gömen (vendored) her yazılım kendi güncellemesini yayımlamak zorunda; Phoenix Security'nin ifadesiyle, kendi kopyasını taşıyan her proje şimdi geç yama yayımlıyor. Açığı OpenAI'ın Codex Security ekibi bildirdi.

Saldırı hangi yönlerden geliyor?

Açık iki yönde istismar edilebiliyor:

  • Sunucuya doğru: Saldırgan, istek gövdesini Brotli'den açan bir sunucuya Content-Encoding: br başlıklı veri gönderir. Express 5 ve body-parser 2.x bunu varsayılan olarak yapıyor; düz bir Node.js http sunucusu yapmıyor.
  • İstemciye doğru: Saldırganın kontrolündeki bir sunucu, Brotli yanıtını otomatik açan bir istemciyi hedefler. Node.js ve Bun'un fetch()'i, Python'da requests, urllib3, aiohttp, httpx, Scrapy ve otomatik açma açık olan libcurl bu gruba giriyor.

Dosya girdileri de yol açabilir: Parquet, JPEG XL, WOFF2, PDF, arşivler ve firmware imajları. Yani bir uygulama kodunda tek satır Brotli çağırmasa bile, kullandığı bir kütüphane üzerinden etkilenebilir.

Gerçek risk ne kadar? Abartıları ayıklayalım

Sosyal medyada açık "anahtar teslim uzaktan kod çalıştırma" diye dolaşıyor. Kaynaklara göre tablo daha ayrıntılı:

  • İstismar: CISA'nın SSVC değerlendirmesi (23 Ekim) "istismar yok, otomatikleştirilebilir değil, teknik etki toplam" diyor. Açık, 24 Ekim itibarıyla CISA'nın bilinen istismar edilen açıklar (KEV) listesinde değildi.
  • PoC: Herkese açık kanıt kodu yalnızca bilerek zayıflatılmış bir derlemede kod çalıştırıyor; standart derlemelerde çöküyor. Red Hat, kod çalıştırmak için güvenilir bir açık PoC olmadığını belirtiyor.
  • Ama gerçek: Imperva'nın kırmızı takımı, standart bir Node.js 24.22.0 Linux arm64 derlemesinde saldırgan kodunu çalıştırdı; bunu hem fetch() yanıtı hem de Express istek gövdesi olarak gösterdi. Birkaç deneme gerektirdi ve yayımlanmadı.
  • Güvenli kalanlar: Apache'nin standart mod_brotli modülü veri açmıyor, yalnızca sıkıştırıyor. Go (andybalholm/brotli) ve Rust (brotli-decompressor) portları aynı mantık hatasını taşısa da kontrollü biçimde hata verip çöküyor. .NET Framework etkilenmiyor.

Özetle: Gerçek ve ciddi bir açık, ama her sunucu otomatik olarak hedef değil. Risk, uygulamanızın saldırgan kontrolündeki Brotli verisini açıp açmadığına bağlı.

Düzeltilmiş sürümler

YazılımDüzeltilmiş sürüm
Brotli (libbrotli)1.2.1; eski hatlar için 1.1.1 ve 1.0.10
Node.js22.23.4, 24.22.1, 26.12.1 (18, 20 ve 25 için resmî düzeltme yok)
Python (Brotli / brotlicffi)Brotli 1.2.1, brotlicffi 1.2.1.0 ve üstü
.NET8.0.33, 9.0.22, 10.0.14 (self-contained uygulamalar yeniden derlenmeli)
Java brotli4j1.24.0
Bun1.4.4 ve üstü
Envoy1.40.0, 1.39.3, 1.38.6, 1.37.8
Istio1.29.9, 1.30.6, 1.31.2

Qualys'in verilerine göre Node.js kurulumlarının yaklaşık onda dokuzu ya yamasız ya da artık yama almayan bir sürümde. Node.js düzeltmesi çalışma zamanının kendisinde olduğu için, uygulama bağımlılıklarını güncellemek yetmiyor.

Ubuntu ve diğer Linux dağıtımlarında durum

Ubuntu açığı "High" olarak derecelendirdi ve düzeltmeleri sürüm sürüm yayımladı:

Ubuntu sürümüDüzeltilmiş brotli paketi
26.101.2.0-4ubuntu0.1
26.04 LTS1.2.0-3ubuntu0.1
24.04 LTS1.1.0-2ubuntu0.1
22.04 LTS1.0.9-2ubuntu0.1
20.04 LTS1.0.7-6ubuntu0.1+esm1 (ESM, Ubuntu Pro gerekir)
18.04 LTS1.0.3-1ubuntu1.3+esm1 (ESM)

Ubuntu'nun nodejs paketi 22.04, 24.04 ve 26.04'te sistemin Brotli'sini kullandığı için ayrıca etkilenmiyor olarak işaretli; 20.04'teki nodejs ise kendi Brotli'sini taşıdığı için hâlâ "gerekli" durumda. Aikido'nun 27 Ekim tablosuna göre Debian 12/13, Alpine ve Amazon Linux 2023 için yama mevcut; Fedora 43-45, standart RHEL depoları ve SUSE'de henüz yama yok (Red Hat yalnızca Hardened Images ile sunuyor). Bu durum hızla değişiyor, kendi dağıtımınızın sayfasına bakın.

Adım adım ne yapmalı?

  1. Sürümü ve paketleri kontrol edin: lsb_release -a ve dpkg-query -W brotli libbrotli1 python3-brotli.
  2. Güvenlik güncellemelerini uygulayın: sudo apt update ve sudo apt install --only-upgrade libbrotli1 brotli python3-brotli.
  3. Servisleri yeniden başlatın: Çalışan süreçler eski kütüphaneyi bellekte tutar. needrestart hangi servislerin etkilendiğini gösterir.
  4. Node.js'i ayrıca kontrol edin: node -p "process.versions.node" sürümü yukarıdaki düzeltilmiş sürümlerden en az biri olmalı. Kaynaktan, NodeSource veya nvm ile kurulan Node kendi Brotli'sini taşır; apt upgrade bunu güncellemez.
  5. Python'u tarayın: pip list | grep -i brotli. Pillow, pyarrow ve pycurl gibi kendi decoder'ını gömen paketler ayrıca güncellenmeli.
  6. Container imajlarını yeniden derleyin: Sorun çekirdekte (kernel) değil; imajın içindeki Brotli ve çalışma zamanı sürümlerinde. Sunucunun güncellenmesi imajı güncellemez.

Hemen yama yapamıyorsanız

Phoenix Security'nin önerdiği geçici önlemler: Express 5 veya body-parser 2.x kullanıyorsanız Content-Encoding başlığında br bulunan istekleri ara katman ya da proxy düzeyinde reddedin. curl'de --compressed seçeneğini çıkarın. Python'da isteğe bağlıysa brotli ve brotlicffi paketlerini kaldırın. Ancak Node.js ve Bun'un fetch()'inin Brotli yanıtlarını otomatik açmasını kapatmanın standart bir yolu yok; bu yönde tek çözüm çalışma zamanını güncellemek.

Sonuç

CVE-2026-111497, tek bir yazılımın değil, bir bileşenin yayıldığı yerlerin sorunu. Aktif istismar bilinmiyor ve standart derlemelerde güvenilir bir açık PoC yok; ancak Imperva'nın gösterdiği gibi kod çalıştırma teknik olarak mümkün. En doğru yaklaşım: Ubuntu paketini güncellemek, Node.js sürümünü ayrıca doğrulamak ve servisleri yeniden başlatmak. Benzer şekilde son haftalarda gündemde olan sunucu açıkları için PHP2Shell yazımıza da göz atabilirsiniz.

PaylaşXFacebookLinkedInWhatsApp

Kaynaklar

Sıkça Sorulan Sorular

CVE-2026-111497 nedir?
Google'ın Brotli sıkıştırma kütüphanesinde, 1.0.3 ile 1.2.0 arası sürümleri etkileyen bir decoder bellek taşması açığı; CVSS 4.0 puanı 9,2.
Hangi Node.js sürümleri düzeltildi?
22.23.4, 24.22.1 ve 26.12.1. Node.js 18, 20 ve 25 için resmî düzeltme yok.
Ubuntu etkileniyor mu?
Evet, 26.10'dan 18.04'e kadar; düzeltmeler yayımlandı. 20.04 ve 18.04 için ESM (Ubuntu Pro) gerekiyor.
Açık aktif olarak istismar ediliyor mu?
Aktif istismar doğrulanmadı; CISA SSVC 'exploitation none' diyor ve açık 24 Ekim itibarıyla KEV listesinde değildi. Bağımsız araştırmacılar standart bir Node.js 24.22.0 derlemesinde kod çalıştırdı, ancak bu yayımlanmadı.
Yama sonrası yeniden başlatma gerekli mi?
Evet. Çalışan süreçler eski kütüphaneyi bellekte tutar; servisleri yeniden başlatın.

Semih Ateşçi

Genel Yayın Yönetmeni

Teknokutu'nun genel yayın yönetmeni ve sorumlu kişisi. Teknoloji, oyun, donanım ve mobil cihaz haberleri ile rehber içeriklerinin yayın sorumluluğunu taşıyor.

Yorumlar

Henüz yorum yok. İlk yorumu siz yazın.

Yorum yaz