CVE-2026-33817
Index Out-of-Range in go.etcd.io/bbolt Causes Potential Crash
Publication date: 2026-04-06
Last updated on: 2026-04-08
Assigner: Go Project
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| etcd_io | bbolt | to 1.3|end_excluding=1.4 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-125 | The product reads data past the end, or before the beginning, of the intended buffer. |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
CVE-2026-33817 is a vulnerability in the Go module go.etcd.io/bbolt, specifically in the Bucket.Stats() function. The issue occurs because the function attempts to access the last element of a branch page without first checking if the branch page contains any elements. If the branch page has zero elements, this results in an index out-of-range error causing an out-of-bounds read and an unrecoverable panic.
This happens because Bucket.Stats() calls BranchPageElement(p.Count() - 1) without verifying that p.Count() is non-zero. Normally, branch pages are expected to have at least one element, but in cases such as database corruption or partial writes, a branch page might be empty, triggering this error.
Since Bucket.Stats() is a public API that does not return an error, callers cannot handle this failure gracefully, leading to a complete crash of any process invoking Stats() on a corrupted bucket.
What immediate steps should I take to mitigate this vulnerability?
The immediate mitigation step is to update the go.etcd.io/bbolt module to a version that includes the fix merged in late March 2026 (pull requests #1171, #1172, #1173). These fixes add a guard to check that the branch page count is non-zero before accessing elements, preventing the panic.
If updating is not immediately possible, avoid calling the Bucket.Stats() function on potentially corrupted or partially written databases that might contain branch pages with zero elements.
Also, monitor your applications for crashes related to this issue and consider implementing additional error handling or recovery mechanisms around database operations.
Finally, review downstream projects that depend on bbolt (such as etcd, Kubernetes components, and Consul) and ensure they are also updated to versions that include the fix.
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
The provided information does not specify any direct impact of CVE-2026-33817 on compliance with common standards and regulations such as GDPR or HIPAA.
How can this vulnerability impact me? :
This vulnerability can cause any application or service using the affected bbolt database module to crash unexpectedly when it calls the Bucket.Stats() function on a corrupted or partially written database containing an empty branch page.
Because the panic is unrecoverable and the API does not return an error, the process will terminate, potentially causing downtime or loss of availability for services depending on this database.
Downstream projects such as etcd, Kubernetes components, and Consul that rely on this module are also impacted, meaning that critical infrastructure or distributed systems could be affected by this crash.
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability manifests as an unrecoverable panic caused by an index out-of-range error when the Bucket.Stats() function in go.etcd.io/bbolt is called on a branch page with zero elements. Detection involves monitoring for crashes or panics in applications using the bbolt database, especially those invoking the Stats() method on buckets.
Since the issue arises from an out-of-bounds read leading to a panic, you can detect it by observing application logs or crash reports for panic stack traces referencing Bucket.Stats() or bucket.go around line 664.
There are no specific network commands to detect this vulnerability, but on the system level, you can check for processes that have crashed unexpectedly or are logging panics related to bbolt.
Additionally, you can audit your codebase or binaries to identify usage of vulnerable versions of the go.etcd.io/bbolt module prior to the fix merged in late March 2026.