Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify network-exposed buffa protobuf endpoint
-
DeliveryCraft 64 MiB payload with nested StartGroup unknown fields
-
ExploitSubmit unauthenticated protobuf request
-
ExecutionDecoder materializes ~22× amplified heap objects
-
PersistProcess exhausts available memory
-
ImpactService crash (denial of service)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires three conditions to be simultaneously satisfied. First, the target application must be compiled against a version of Buffa prior to 0.8.0. Second, the affected application code must have been generated with |
| Impact | The CVSS 4.0 score of 6.3 with VA:L (low vulnerable-system availability impact) appears to understate real-world severity given the 22× amplification ratio described - a single moderately sized request crashing a process constitutes a complete denial of service, which typically warrants VA:H. The AT:P attack requirement (attack prerequisites present) reflects the dependency on |
| Exploit ScenarioDerived | An attacker with network access to any service that accepts serialized protobuf input sends a crafted 64 MiB message containing deeply nested StartGroup unknown fields. The buffa decoder materializes each unknown record into a ~40-byte heap struct without bound, driving allocation to approximately 1.4 GiB; the OS OOM killer or process allocator terminates the service. The attack requires no authentication and no specific prior knowledge of the target schema - unknown fields are by definition not validated against any schema - making it applicable to any exposed protobuf endpoint backed by buffa-generated code under default settings. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 16, 2026
Uncontrolled heap amplification in Buffa's protobuf decoder allows an unauthenticated remote attacker to crash any network-facing Rust service that decodes untrusted protobuf input under the default code-generation settings, with no exploit code required beyond a well-formed serialized message. The amplification mechanism - roughly 22× for nested StartGroup unknown fields - means a 64 MiB payload can force approximately 1.4 GiB of heap allocation, exhausting process memory and terminating the service. No active exploitation is confirmed (not in CISA KEV), and no public proof-of-concept has been identified at time of analysis, but the attack is trivially constructible from the public advisory.
RemediationAI
The primary fix is to upgrade Buffa to version 0.8.0, available at https://github.com/anthropics/buffa/releases/tag/v0.8.0. This release introduces a per-decode unknown-field count limit (default: 1,000,000 fields, capping overhead at approximately 40 MB) enforced via a new DecodeContext that propagates through the entire decode call tree, and surfaces limit violations as DecodeError::UnknownFieldLimitExceeded. Regenerating protobuf code with the new codegen (required due to the breaking DecodeContext API change replacing bare depth: u32) is mandatory - applications using code generated by earlier releases will not benefit from the fix until regenerated. As a compensating control for services that cannot immediately upgrade, restricting the maximum accepted request body size at the network layer (reverse proxy or load balancer) reduces - but does not eliminate - amplification headroom, since the attack is bounded by input size; note this does not remove the fundamental unbounded allocation. Disabling preserve_unknown_fields via code-generation config eliminates the vulnerable path entirely but may break round-trip compatibility for applications that rely on preserving unknown fields. The tune-able limit is also configurable via DecodeOptions::with_unknown_field_limit for callers that need a tighter bound.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in cargo
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Buffa (CPE: cpe:2.3:a:anthropics:buffa:*:*:*:*:*:*:*:*) is a pure-Rust Protocol Buffers implementation with protobuf editions support, authored by Anthropic. The root cause is CWE-400 (Uncontrolled Resource Consumption): the decode_unknown_field function materializes each unknown wire field encountered during deserialization into a heap-allocated UnknownField struct (~40 bytes per record) without tracking or bounding the cumulative allocation against a budget. The existing with_max_message_size cap governed only the byte length of the serialized input, not the number of decoded field objects produced from it. Two wire types drove amplification: StartGroup unknown fields, where nesting allowed recursive materialization producing ~22× memory expansion (e.g., 2-byte varint unknown fields inflated to ~40-byte heap objects), and length-delimited unknown fields, which were bounded only by input size. The vulnerability affected any caller using code generated with the preserve_unknown_fields=true option, which is the default for all generated messages, making the attack surface coincident with any network-exposed buffa-based service that processes untrusted serialized data.
Know when Buffa gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Default preserve_unknown_fields=true makes any network-exposed buffa service unauthenticated and exploitable at low complexity; process crash via OOM is high availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Buffa is a pure-Rust Protocol Buffers implementation with first-class protobuf editions support. Prior to 0.8.0, the decode_unknown_field function in buffa's protobuf decoder allocated heap memory in proportion to untrusted input (unknown fields in the serialized protobuf) without enforcing an allocation budget, affecting any message decoded from untrusted input using code generated with preserve_unknown_fields=true (the default); a small, well-formed payload of nested unknown fields inside a StartGroup could trigger roughly 22x memory amplification (for example a 64 MiB input forcing about 1.4 GB of heap allocation), and length-delimited unknown fields could be sized arbitrarily, so an unauthenticated attacker could crash a process through memory exhaustion because the top-level message size cap did not account for in-decode amplification. This issue is fixed in version 0.8.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
EUVD-2026-44951
GHSA-f9qc-qg88-7pq5
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB