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: < 1% Very Low
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, CWE‑789, and CWE‑1285. 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. The EPSS score of 0.00034 (<1%) indicates a very low but non‑zero probability of exploitation, 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 12, 2026 at 01:51 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 12, 2026 at 01:51 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

Fri, 12 Jun 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-1285
References
Metrics threat_severity

None

threat_severity

Moderate


Thu, 11 Jun 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 11 Jun 2026 10:45:00 +0000

Type Values Removed Values Added
First Time appeared Jelmer
Jelmer dulwich
Vendors & Products Jelmer
Jelmer dulwich

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'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-06-11T16:14:16.785Z

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

Link: CVE-2026-47734

cve-icon Vulnrichment

Updated: 2026-06-11T14:40:15.611Z

cve-icon NVD

Status : Deferred

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

Modified: 2026-06-11T15:21:07.370

Link: CVE-2026-47734

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-06-10T22:11:02Z

Links: CVE-2026-47734 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-06-12T02:00:12Z

Weaknesses
  • CWE-1285

    Improper Validation of Specified Index, Position, or Offset in Input

  • CWE-400

    Uncontrolled Resource Consumption

  • CWE-789

    Memory Allocation with Excessive Size Value