Description
Dulwich is a pure-Python implementation of the Git file formats and protocols. Starting in version 0.1.0 and prior to version 1.2.5, a client with push access could push a tiny crafted thin pack (~174 bytes) whose delta header declares a huge dest_size. When dulwich ingested it via add_thin_pack / apply_delta, it would allocate hundreds of MB of memory based on that attacker-controlled size, with no relationship to the actual bytes received. Operators running a Dulwich-based Git server that exposes git-receive-pack (i.e. accepts pushes) - for example via dulwich.server functionality, the HTTP smart server, or anything built on ReceivePackHandler - are impacted. The issue is patched in 1.2.5. add_thin_pack now accepts a max_input_size keyword (bytes; 0/None = unlimited, matching git's semantics), and ReceivePackHandler reads receive.maxInputSize from the repository config and passes it through. Wire reads are counted and a PackInputTooLarge exception is raised once the cap is exceeded - equivalent to git index-pack --max-input-size. Users should upgrade to Dulwich 1.2.5 or later and set receive.maxInputSize in their server's repository config to a sane bound for their environment. On unpatched versions, receive.maxInputSize has no effect, so it cannot be used as a workaround. Until upgrading, operators should restrict dulwich-receive-pack (push) access to trusted, authenticated clients only, or disable it entirely on servers that only need to serve fetches and/or run the server under an OS-level memory limit (e.g. ulimit, cgroups/MemoryMax, or a container memory limit) so a malicious push is killed rather than taking down the host.
Published: 2026-06-10
Score: 5.7 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Dulwich, a pure‑Python implementation of Git, had a flaw in its pack‑accepting logic that allowed a client with push privileges to send a specially crafted thin pack containing a delta header that declares an extremely large destination size. When the server processed this pack, it allocated memory proportional to that declared size, decoupled from the actual data received, leading to an unbounded memory allocation. This flaw was rated CWE‑400 (Insufficient Limitation of a Resource or Input) and CWE‑789 (Uncontrolled Memory Allocation). The consequence is a denial‑of‑service on any computer that runs a Dulwich‑based Git server and accepts pushes, as the host can run out of memory or be killed by a memory‑pressure mechanism.

Affected Systems

The vulnerability affects Dulwich deployments built from the Jelmer Dulwich project (vendor jelmer:dulwich). Any server that exposes the git‑receive‑pack service—whether via dulwich.server, an HTTP smart server, or any custom implementation using ReceivePackHandler—is at risk. The issue existed in all versions from the first release (0.1.0) through the pre‑release 1.2.4; it was resolved in Dulwich 1.2.5 and later.

Risk and Exploitability

The CVSS score for this issue is 5.7, indicating a moderate severity. No EPSS data is available and the vulnerability is not listed in CISA's KEV catalog, suggesting limited known exploitation. The attack vector is remote and requires that the adversary have push access to a Dulwich server. A malicious actor can craft a nearly 174‑byte thin pack with an inflated delta header and feed it to the server; the resulting memory allocation can exhaust system resources and cause the host or the Dulwich process to crash. Because receive.maxInputSize was only introduced in 1.2.5, unpatched installations have no built‑in mitigation and must rely on external controls such as access restrictions or OS‑level memory limits.

Generated by OpenCVE AI on June 10, 2026 at 23:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Dulwich to version 1.2.5 or newer.
  • Configure the repository’s receive.maxInputSize setting to a reasonable limit (e.g., 50 MB) to constrain incoming pack sizes.
  • Restrict or disable git‑receive‑pack push access to only trusted, authenticated clients, or, if the server only needs to serve fetches, disable it entirely, and apply OS‑level memory limits such as ulimit, cgroups, or container memory constraints.

Generated by OpenCVE AI on June 10, 2026 at 23:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-xrvj-v92f-53gj Dulwich has unbounded memory allocation in receive-pack from crafted thin packs
History

Wed, 10 Jun 2026 22:30:00 +0000

Type Values Removed Values Added
Description Dulwich is a pure-Python implementation of the Git file formats and protocols. Starting in version 0.1.0 and prior to version 1.2.5, a client with push access could push a tiny crafted thin pack (~174 bytes) whose delta header declares a huge dest_size. When dulwich ingested it via add_thin_pack / apply_delta, it would allocate hundreds of MB of memory based on that attacker-controlled size, with no relationship to the actual bytes received. Operators running a Dulwich-based Git server that exposes git-receive-pack (i.e. accepts pushes) - for example via dulwich.server functionality, the HTTP smart server, or anything built on ReceivePackHandler - are impacted. The issue is patched in 1.2.5. add_thin_pack now accepts a max_input_size keyword (bytes; 0/None = unlimited, matching git's semantics), and ReceivePackHandler reads receive.maxInputSize from the repository config and passes it through. Wire reads are counted and a PackInputTooLarge exception is raised once the cap is exceeded - equivalent to git index-pack --max-input-size. Users should upgrade to Dulwich 1.2.5 or later and set receive.maxInputSize in their server's repository config to a sane bound for their environment. On unpatched versions, receive.maxInputSize has no effect, so it cannot be used as a workaround. Until upgrading, operators should restrict dulwich-receive-pack (push) access to trusted, authenticated clients only, or disable it entirely on servers that only need to serve fetches and/or run the server under an OS-level memory limit (e.g. ulimit, cgroups/MemoryMax, or a container memory limit) so a malicious push is killed rather than taking down the host.
Title Dulwich has unbounded memory allocation in receive-pack from crafted thin packs
Weaknesses CWE-400
CWE-789
References
Metrics cvssV3_1

{'score': 5.7, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:H'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-06-10T22:11:02.704Z

Reserved: 2026-05-19T22:16:39.503Z

Link: CVE-2026-47734

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-06-10T23:16:48.807

Modified: 2026-06-10T23:16:48.807

Link: CVE-2026-47734

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-06-10T23:30:44Z

Weaknesses