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

CVE-2026-87849

Apache bRPC Discovery isimlendirme servisinde nesne olmayan alanlar sınır dışı okumaya yol açıyor

Apache Software Foundation Apache bRPC

Orta 4,3 CVSS 3.1
Yayımlandı
Güncellendi
26 Eki 2026
Açık yaşı
7 gün
Kaydı açan
apache

ÖzetTürkçe

Apache bRPC'nin 1.18.0 sürümünden önceki sürümlerinde bulunan Discovery isimlendirme servisi yanıt ayrıştırıcısı, JSON değerlerinin nesne olduğunu doğrulamadan RapidJSON'un yalnızca nesneler için tanımlanmış FindMember erişimcilerini çağırır. Hatalı biçimlendirilmiş bir Discovery yanıtında data/service alanları veya instances listesi nesne olmayan girdiler (ör. çıplak bir tamsayı) içerdiğinde, istemcide RapidJSON nesne erişim ön koşulu tetiklenir; bellek sınır dışı okunur ve bRPC istemcisinin çökmesine neden olabilir. Kök neden, src/brpc/policy/discovery_naming_service.cpp dosyasındaki DiscoveryNamingService::GetServers ve DiscoveryNames::ListDiscoveryNodes fonksiyonlarının nesne olmayan değerler üzerinde üye fonksiyonlarla JSON değerlerine erişmesidir. RapidJSON bu işlemleri yalnızca nesne türleri için tanımlar; nesne olmayan bir değer üzerinde çağrılmaları sınıf değişmezini ihlal eder ve tanımsız davranışa (sınır dışı okuma) yol açar, çoğunlukla işlemin çökmesiyle sonuçlanır. Etkilenen senaryo, yapılandırılmış (veya ele geçirilmiş) bir Discovery arka ucunun, data/service/instance girdileri JSON nesnesi olmayan hatalı bir /discovery/nodes veya /discovery/fetchs yanıtı döndürmesidir; bu durumda sunucu listesini yenileyen her bRPC istemcisi çökebilir. Çözüm olarak bRPC'yi 1.18.0 veya daha yeni bir sürüme yükseltin. Düzeltme, Discovery yanıtındaki data, hizmet başına data ve instance girdilerinin JSON nesnesi olduğunu doğrular; nesne olmayan düğüm/instance girdilerini atlar ve nesne olmayan data/service değerlerini reddeder. CVSS 3.1 vektörü: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L, puan 4.3 (ORTA).

Kaynaktaki açıklama (İngilizce)

The Discovery naming-service reply parser in Apache bRPC (versions < 1.18.0) calls RapidJSON object-only accessors (FindMember) on JSON values without first validating that those values are objects. A malformed Discovery response whose data/service members or instances list contain non-object entries (e.g. a bare integer) triggers the RapidJSON object-access precondition on the client, reading memory out of bounds and potentially crashing the bRPC client.

Root Cause:
In src/brpc/policy/discovery_naming_service.cpp, DiscoveryNamingService::GetServers() and DiscoveryNames::ListDiscoveryNodes() access JSON values with member functions on non-object values. RapidJSON only defines these operations for object types; invoking them on a non-object violates the class invariant and results in undefined behavior (out-of-bounds read), commonly crashing the process.

Affected Scenarios:
An operator-configured (or compromised) Discovery backend returns a malformed /discovery/nodes or /discovery/fetchs response whose data/service/instance entries are not JSON objects, crashing any bRPC client that refreshes its server list.

How to Fix:
1. Upgrade bRPC to version 1.18.0 or later, which fixes this issue.
2. Apply this patch: https://github.com/apache/brpc/pull/3533

The fix validates that the Discovery response data, per-service data, and instance entries are JSON objects (and skips non-object node/instance entries and rejects non-object data/service values) before calling member accessors.

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
Apache Software Foundation Apache bRPC < 1.18.0 1.18.0

Kaynaklar4 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.