# CVE-2026-109351: Gitoxide gix-pack uncontrolled memory allocation in pack header

Source: https://junglewise.ai/threats/cve-2026-109351-gitoxide-gix-pack-before-0-75-0-contains-an-uncontrolled-memory  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-10-12. Updated: 2026-10-16  
License: CC BY 4.0 with a link back

CVE-2026-109351 · Severity: medium · CVSS 6.5 · Published 2026-10-12

Gitoxide gix-pack is a Rust library for processing Git pack files during clone and fetch operations. A malicious Git remote can send a specially crafted pack header that causes the library to attempt allocating hundreds of gigabytes of memory, crashing the client's process. This is a pre-authentication denial of service affecting any application built on gix-pack that clones or fetches from untrusted repositories.

Vendors: [GitoxideLabs](https://junglewise.ai/threats/vendors/gitoxidelabs).

## Quick answers

**Is CVE-2026-109351 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-109351 being exploited in the wild.

**How severe is CVE-2026-109351?** Medium severity, with a CVSS score of 6.5, published 12 October 2026.

**Which products and versions are affected?** GitoxideLabs Gix-Pack <= 0.74.2.

**Is there a fix for CVE-2026-109351?** Yes: fixed in gix-pack >= 0.75.0. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-109351 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-109351?** Check whether you run GitoxideLabs Gix-Pack at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- Fixed in gix-pack >= 0.75.0

## Technical details

The vulnerability exists in Tree::with_capacity(), which sizes delta-resolution trees directly from the attacker-controlled 32-bit object count in the 12-byte pack header before validating it. The backing allocation uses Vec::reserve_exact() without bounds checking or try_reserve(), so a header claiming 0xFFFFFFFF objects forces two sequential multi-hundred-gigabyte reservations (each ~326 GB for TreeEntry vectors) that abort via handle_alloc_error on systems with default memory overcommit settings. The fix caps object count and switches to try_reserve_exact to propagate allocation failures as errors rather than panics.

## Affected products

- GitoxideLabs gix-pack <= 0.74.2

## Timeline

- 2026-09-25: disclosed
- 2026-10-12: advisory

## References

- [https://github.com/GitoxideLabs/gitoxide/security/advisories/GHSA-x862-c2wj-4mwr](https://github.com/GitoxideLabs/gitoxide/security/advisories/GHSA-x862-c2wj-4mwr)
- [https://www.vulncheck.com/advisories/gitoxide-gix-pack-before-0.75.0-denial-of-service-via-pack-header-object-count](https://www.vulncheck.com/advisories/gitoxide-gix-pack-before-0.75.0-denial-of-service-via-pack-header-object-count)

## Related threats

- [gitoxide gix-pack reachable assertion in pack header decoder](https://junglewise.ai/threats/cve-2026-109349-gitoxide-gix-pack-before-0-75-0-contains-a-reachable-assertion)
