CVE-2026-47734 (GCVE-0-2026-47734)

Vulnerability from cvelistv5 – Published: 2026-06-10 22:11 – Updated: 2026-06-11 16:14
VLAI
Title
Dulwich has unbounded memory allocation in receive-pack from crafted thin packs
Summary
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.
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator (v2.0.3)
CWE
  • CWE-400 - Uncontrolled Resource Consumption
  • CWE-789 - Memory Allocation with Excessive Size Value
Assigner
References
Impacted products
Vendor Product Version
jelmer dulwich Affected: >= 0.1.0, < 1.2.5
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-47734",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-06-11T14:08:10.796596Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-06-11T16:14:16.785Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "product": "dulwich",
          "vendor": "jelmer",
          "versions": [
            {
              "status": "affected",
              "version": "\u003e= 0.1.0, \u003c 1.2.5"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "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\u0027s 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\u0027s 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."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "attackComplexity": "LOW",
            "attackVector": "NETWORK",
            "availabilityImpact": "HIGH",
            "baseScore": 5.7,
            "baseSeverity": "MEDIUM",
            "confidentialityImpact": "NONE",
            "integrityImpact": "NONE",
            "privilegesRequired": "LOW",
            "scope": "UNCHANGED",
            "userInteraction": "REQUIRED",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:H",
            "version": "3.1"
          }
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-400",
              "description": "CWE-400: Uncontrolled Resource Consumption",
              "lang": "en",
              "type": "CWE"
            }
          ]
        },
        {
          "descriptions": [
            {
              "cweId": "CWE-789",
              "description": "CWE-789: Memory Allocation with Excessive Size Value",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-06-10T22:11:02.704Z",
        "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
        "shortName": "GitHub_M"
      },
      "references": [
        {
          "name": "https://github.com/jelmer/dulwich/security/advisories/GHSA-xrvj-v92f-53gj",
          "tags": [
            "x_refsource_CONFIRM"
          ],
          "url": "https://github.com/jelmer/dulwich/security/advisories/GHSA-xrvj-v92f-53gj"
        },
        {
          "name": "https://github.com/jelmer/dulwich/releases/tag/dulwich-1.2.5",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/jelmer/dulwich/releases/tag/dulwich-1.2.5"
        }
      ],
      "source": {
        "advisory": "GHSA-xrvj-v92f-53gj",
        "discovery": "UNKNOWN"
      },
      "title": "Dulwich has unbounded memory allocation in receive-pack from crafted thin packs"
    }
  },
  "cveMetadata": {
    "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
    "assignerShortName": "GitHub_M",
    "cveId": "CVE-2026-47734",
    "datePublished": "2026-06-10T22:11:02.704Z",
    "dateReserved": "2026-05-19T22:16:39.503Z",
    "dateUpdated": "2026-06-11T16:14:16.785Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-47734",
      "date": "2026-07-23",
      "epss": "0.00188",
      "percentile": "0.08644"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-47734\",\"sourceIdentifier\":\"security-advisories@github.com\",\"published\":\"2026-06-10T23:16:48.807\",\"lastModified\":\"2026-07-23T09:10:00.113\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"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\u0027s 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\u0027s 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.\"},{\"lang\":\"es\",\"value\":\"Dulwich es una implementaci\u00f3n pura de Python de los formatos de archivo y protocolos de Git. A partir de la versi\u00f3n 0.1.0 y antes de la versi\u00f3n 1.2.5, un cliente con acceso de push podr\u00eda enviar un paquete delgado (\u0027thin pack\u0027) peque\u00f1o y manipulado (~174 bytes) cuyo encabezado delta declara un \u0027dest_size\u0027 enorme. Cuando Dulwich lo inger\u00eda a trav\u00e9s de \u0027add_thin_pack\u0027 / \u0027apply_delta\u0027, asignar\u00eda cientos de MB de memoria bas\u00e1ndose en ese tama\u00f1o controlado por el atacante, sin relaci\u00f3n con los bytes reales recibidos. Los operadores que ejecutan un servidor Git basado en Dulwich que expone \u0027git-receive-pack\u0027 (es decir, acepta \u0027pushes\u0027) - por ejemplo, a trav\u00e9s de la funcionalidad \u0027dulwich.server\u0027, el \u0027smart server\u0027 HTTP, o cualquier cosa construida sobre \u0027ReceivePackHandler\u0027 - se ven afectados. El problema est\u00e1 parcheado en la versi\u00f3n 1.2.5. \u0027add_thin_pack\u0027 ahora acepta una palabra clave \u0027max_input_size\u0027 (bytes; 0/None = ilimitado, coincidiendo con la sem\u00e1ntica de Git), y \u0027ReceivePackHandler\u0027 lee \u0027receive.maxInputSize\u0027 de la configuraci\u00f3n del repositorio y lo pasa. Las lecturas de la red (\u0027wire reads\u0027) se cuentan y se lanza una excepci\u00f3n \u0027PackInputTooLarge\u0027 una vez que se excede el l\u00edmite - equivalente a \u0027git index-pack --max-input-size\u0027. Los usuarios deben actualizar a Dulwich 1.2.5 o posterior y establecer \u0027receive.maxInputSize\u0027 en la configuraci\u00f3n del repositorio de su servidor a un l\u00edmite razonable para su entorno. En versiones sin parchear, \u0027receive.maxInputSize\u0027 no tiene efecto, por lo que no puede usarse como una soluci\u00f3n alternativa. Hasta la actualizaci\u00f3n, los operadores deben restringir el acceso a \u0027dulwich-receive-pack\u0027 (\u0027push\u0027) solo a clientes confiables y autenticados, o deshabilitarlo por completo en servidores que solo necesitan servir \u0027fetches\u0027 y/o ejecutar el servidor bajo un l\u00edmite de memoria a nivel de sistema operativo (por ejemplo, \u0027ulimit\u0027, \u0027cgroups/MemoryMax\u0027, o un l\u00edmite de memoria de contenedor) para que un \u0027push\u0027 malicioso sea terminado en lugar de derribar el host.\"}],\"affected\":[{\"source\":\"security-advisories@github.com\",\"affectedData\":[{\"vendor\":\"jelmer\",\"product\":\"dulwich\",\"versions\":[{\"version\":\"\u003e= 0.1.0, \u003c 1.2.5\",\"status\":\"affected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:H\",\"baseScore\":5.7,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"REQUIRED\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":2.1,\"impactScore\":3.6}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2026-06-11T14:08:10.796596Z\",\"id\":\"CVE-2026-47734\",\"options\":[{\"exploitation\":\"none\"},{\"automatable\":\"no\"},{\"technicalImpact\":\"partial\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.3\"}}]},\"weaknesses\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-400\"},{\"lang\":\"en\",\"value\":\"CWE-789\"}]}],\"references\":[{\"url\":\"https://github.com/jelmer/dulwich/releases/tag/dulwich-1.2.5\",\"source\":\"security-advisories@github.com\"},{\"url\":\"https://github.com/jelmer/dulwich/security/advisories/GHSA-xrvj-v92f-53gj\",\"source\":\"security-advisories@github.com\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-04T11:14:09+00:00",
      "cve": "CVE-2026-47734",
      "id": "CVE-2026-47734",
      "initial_release_date": "2026-06-10T22:11:02.704000+00:00",
      "product_status:known_affected": "24",
      "product_status:under_investigation": "1",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "dulwich: Dulwich: Denial of Service via crafted Git thin pack",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-47734.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-07-15T05:06:39Z",
      "cve": "CVE-2026-47734",
      "id": "CVE-2026-47734",
      "initial_release_date": "2026-06-12T02:25:25Z",
      "product_status:first_fixed": "10",
      "product_status:known_affected": "21",
      "product_status:recommended": "6",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-47734",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-47734.json",
      "version": "4"
    },
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-47734\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-06-11T14:08:10.796596Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-06-11T14:40:15.611Z\"}}], \"cna\": {\"title\": \"Dulwich has unbounded memory allocation in receive-pack from crafted thin packs\", \"source\": {\"advisory\": \"GHSA-xrvj-v92f-53gj\", \"discovery\": \"UNKNOWN\"}, \"metrics\": [{\"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 5.7, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:H\", \"integrityImpact\": \"NONE\", \"userInteraction\": \"REQUIRED\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"LOW\", \"confidentialityImpact\": \"NONE\"}}], \"affected\": [{\"vendor\": \"jelmer\", \"product\": \"dulwich\", \"versions\": [{\"status\": \"affected\", \"version\": \"\u003e= 0.1.0, \u003c 1.2.5\"}]}], \"references\": [{\"url\": \"https://github.com/jelmer/dulwich/security/advisories/GHSA-xrvj-v92f-53gj\", \"name\": \"https://github.com/jelmer/dulwich/security/advisories/GHSA-xrvj-v92f-53gj\", \"tags\": [\"x_refsource_CONFIRM\"]}, {\"url\": \"https://github.com/jelmer/dulwich/releases/tag/dulwich-1.2.5\", \"name\": \"https://github.com/jelmer/dulwich/releases/tag/dulwich-1.2.5\", \"tags\": [\"x_refsource_MISC\"]}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"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\u0027s 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\u0027s 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.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-400\", \"description\": \"CWE-400: Uncontrolled Resource Consumption\"}]}, {\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-789\", \"description\": \"CWE-789: Memory Allocation with Excessive Size Value\"}]}], \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2026-06-10T22:11:02.704Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-47734\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-06-11T16:14:16.785Z\", \"dateReserved\": \"2026-05-19T22:16:39.503Z\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"datePublished\": \"2026-06-10T22:11:02.704Z\", \"assignerShortName\": \"GitHub_M\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…