{"schema":"threatline.record/2","record":{"id":"CVE-2026-87849","aliases":[],"summary":"Apache bRPC: Out-of-bounds read via non-object fields in Discovery naming-service reply parsing","details":"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.\n\nRoot Cause:\nIn 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.\n\nAffected Scenarios: \nAn 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.\n\nHow to Fix:\n1. Upgrade bRPC to version 1.18.0 or later, which fixes this issue.\n2. Apply this patch: https://github.com/apache/brpc/pull/3533\n\nThe 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.","categories":["Frameworks"],"product":"Apache bRPC","vendor":"Apache Software Foundation","ecosystem":null,"affected_ranges":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-87849","source_modified_at":"2026-10-21T12:18:29.706Z","fetched_at":"2026-10-23T18:45:31.882637Z","product":"Apache bRPC","vendor":"Apache Software Foundation","versions":[{"status":"affected","version":"0","lessThan":"1.18.0","versionType":"semver"}],"defaultStatus":"unaffected"}],"fixed_versions":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-87849","source_modified_at":"2026-10-21T12:18:29.706Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"Apache bRPC","ecosystem":null},"version":"1.18.0","basis":"first unaffected version stated in the CVE record"}],"cvss":null,"severity":null,"kev":{"listed":false},"epss":{"probability":0.00159,"percentile":0.04712,"score_date":"2026-10-23"},"published_at":"2026-10-21T12:18:29.706Z","modified_at":"2026-10-21T12:18:29.706Z","provenance":[{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-87849","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-10-21T12:18:29.706Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-87849","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["CVE List","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/apache/brpc/pull/3533"},{"source":"CVE List","url":"https://lists.apache.org/thread/2pf15ojj0vr7rtx95677kgtl1mx3gdgb","tags":["vendor-advisory"]}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"product","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-10-21T12:18:29.706Z","content_hash":"d08a7602dbb6d67251d3cdc669ab0cb2549ed6e11205ee51d3977b11232f3326"}}
