Konuyu Okuyanlar:

Brotli Açığı CVE-2026-111497 Sadece Node.js Değil: Bun, Python ve Envoy Yama Rehberi

Brotli Açığı CVE-2026-111497 Sadece Node.js Değil: Bun, Python ve Envoy Yama Rehberi
[Resim: attachment.php?aid=418]

Selamlar,

Node2Shell olarak duyulan CVE-2026-111497 için çoğu kişi "Node.js'i güncelledim, bitti" diye düşündü. Oysa açık Node.js'in kendi kodunda değil, Google'ın Brotli sıkıştırma kütüphanesinin decoder kısmında. Bu kütüphaneyi kendi içinde taşıyan her yazılımın ayrıca güncellenmesi gerekiyor. The Hacker News, Bun, Python Brotli/brotlicffi paketleri ve Envoy'un da etkilendiğini duyurdu. Burada hangi sürüme geçmeniz gerektiğini ve sistemde etkilenen kopyaları nasıl bulacağınızı topluyorum.

Konuda anlatılacaklar
  1. Açık nedir, neden bu kadar yaygın?
  2. Brotli kütüphanesinin düzeltilmiş sürümleri
  3. Bun: fetch bile tetikleyebilir
  4. Python: requests/urllib3 ve brotlicffi
  5. Envoy ve Istio
  6. Sunucunuzda kontrol komutları

1. Açık nedir?
NVD kaydına göre sorun, Brotli decoder'ında (c/dec/decode.c) bir tampon taşması. Özel hazırlanmış bir Brotli akışı, kimlik doğrulaması olmayan uzak bir saldırganın decoder durum belleğini bozmasına, bellek içeriği sızdırmasına, servisi çökertmesine veya potansiyel olarak kod çalıştırmasına yol açabiliyor. Zayıflık türleri: CWE-787 (sınır dışı yazma) ve CWE-252 (dönüş değerinin kontrol edilmemesi). Upstream puanı CVSS 4.0: 9.2.

Önemli bağlam:
  • The Hacker News'e göre açık, OpenAI'nin kırmızı takım kampanyası sırasında bulundu.
  • Imperva, resmi bir Node.js derlemesinde kod çalıştırmayı gösterdi. Diğer yazılımlarda bu henüz gösterilmedi ve gerçek dünyada saldırı raporu yok.
  • Brotli HTTP'de Content-Encoding: br olarak her yerde kullanıldığı için, sıkıştırılmış veriyi açan istemci ve sunucular saldırı yüzeyinde.

2. Düzeltilmiş Brotli sürümleri
NVD: etkilenen aralık 1.0.3 ile 1.2.0 arası. Güncel düzeltilmiş sürümler:
Kod:
Brotli 1.0.x -> 1.0.10 Brotli 1.1.x -> 1.1.1 Brotli 1.2.x -> 1.2.1

3. Bun
Bun güvenlik bildirimi (GHSA-663w-cv8g-jj2p):
  • Etkilenen: 1.0.21 ile 1.4.4 öncesi. Düzeltilmiş: 1.4.4 (Brotli 1.2.1 ile geliyor).
  • Tetikleyen API'ler: fetch (varsayılan olarak Accept-Encoding içinde br gönderir ve yanıtı otomatik açar), node:zlib içindeki brotliDecompress türevleri ve brotli formatlı DecompressionStream.
  • Yani bağlandığınız kötü niyetli bir sunucu veya şifresiz bağlantıda araya giren biri decoder'a veri gönderebilir.
  • bun build --compile ile üretilmiş tek dosyalık yürütülebilirler, yeniden derlenene kadar etkilenmiş kalır.
Kod:
bun --version bun upgrade bun build --compile ./src/index.ts --outfile mytool
Geçici çözüm olarak Bun, istek bazında fetch(url, { decompress: false }) kullanımını ve güvenilmeyen veriyi brotli API'lerine vermemeyi öneriyor.

4. Python
PyPA danışma kaydı (PYSEC-2026-4323) iki paketi kapsıyor:
  • Brotli (Google'ın CPython bağlaması): 1.2.0 dahil tüm sürümler etkileniyor, düzeltme 1.2.1.
  • brotlicffi: düzeltme 1.2.1.0 (21 Ekim 2026).
Kritik nokta: Bu paketlerden biri kuruluysa urllib3/requests, brotli ekstrası ile httpx ve aiohttp gibi yaygın HTTP istemcileri Brotli yanıtlarını otomatik açıyor. Yani sizin kodunuz brotli'yi hiç import etmese bile saldırgan kontrolündeki bir sunucudan gelen yanıt decoder'a ulaşabilir.
Kod:
pip show brotli brotlicffi 2>/dev/null | grep -E "Name|Version" pip install -U "brotli>=1.2.1" "brotlicffi>=1.2.1.0" pip-audit | grep -i brotli

5. Envoy ve Istio
Envoy bildirimi (GHSA-3wvj-j6qm-62mr, Critical 9.2):
Kod:
Etkilenen : v1.39.2, v1.38.5, v1.37.7, v1.36.11 Düzeltilmiş: v1.40.0, v1.39.3, v1.38.6, v1.37.8, v1.36.12
Sadece Brotli decompressor yapılandırılmış Envoy dağıtımları etkileniyor. The Hacker News, Istio için de yama yayımlandığını aktarıyor; Istio kullanıyorsanız kendi bildirimine bakın.
Kod:
envoy --version grep -rn "envoy.compression.brotli.decompressor" /etc/envoy/ 2>/dev/null

6. Sunucunuzda etkilenen kopyaları bulmak
Brotli birçok yazılımın içine gömülü geldiği için tek bir komut her şeyi bulmaz:
Kod:
dpkg -l | grep -i brotli # Debian/Ubuntu rpm -qa | grep -i brotli # RHEL/Fedora sudo lsof 2>/dev/null | grep -i libbrotlidec | awk '{print $1}' | sort -u node -v ; bun --version 2>/dev/null
Gömülü kopyalar (statik derlenmiş araçlar, konteyner imajları) için SBOM tabanlı tarama gerekir. Trivy veya Grype ile imajlarınızı tarayıp "brotli" geçen bileşenleri ayıklayabilirsiniz.

Sonuç
Bu açık, tedarik zincirinde "tek kütüphane, yüzlerce kopya" sorununun tipik örneği. Node.js'i güncellemek yetmiyor; Bun, Python ortamları, Envoy/Istio ve gömülü kopyaları da tek tek kapatmak gerekiyor. Siz ortamınızda Brotli'yi nerelerde buldunuz?

Yasal uyarı
Bu yazı bilgilendirme ve savunma amaçlıdır. Anlatılan kontrolleri yalnızca kendi sistemlerinizde veya yazılı izinle yapın. İzinsiz erişim, tarama ve sömürü girişimleri TCK 243-245 kapsamında suçtur. TurkTeam white-hat bir topluluktur; çalıntı veri, hesap, combo/log paylaşımı ve hack hizmeti talepleri forum kurallarına aykırıdır.

Kaynaklar


Ek DosyalarEkran Görüntüleri
   
Cevapla



Hızlı Menü: