{"id":"CVE-2026-114095","kind":"vulnerability","aliases":["CVE-2026-114095"],"related":[],"title":"Dulwich: crafted packfile causes infinite recursion and CPU exhaustion","description":"Dulwich before 1.2.9 contains a denial of service vulnerability in Pack.resolve_object that allows attackers to cause infinite recursion via self-referential OFS_DELTA objects. Attackers can supply a malicious packfile with an OFS_DELTA delta_offset of 0 to exhaust CPU during clone, fetch, or cat-file operations.","summary":"Dulwich, a pure-Python Git implementation, recurses forever when a packfile contains an OFS_DELTA object pointing at offset 0. An attacker who serves a malicious repository can exhaust CPU during clone, fetch or cat-file.","severity":"high","cvss":7.1,"epss":0.00254,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["dulwich","git","package","python","self-hosted"],"not_affected_if":["trusted-repos-only"],"how_to_check":"- Run `pip show dulwich` and check whether the version is below `1.2.9`\n- Search lock files for `dulwich` pinned below `1.2.9`","fix":"- Upgrade the Python package `dulwich` to `1.2.9` or later","status":"open","published_at":"2026-10-21T01:17:34+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","triaged_at":"2026-10-25T03:32:00+00:00","updated_at":"2026-10-25T03:32:00+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T03:32:00Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade the Python package `dulwich` to `1.2.9` or later","reach":"network","title":"Dulwich: crafted packfile causes infinite recursion and CPU exhaustion","impact":"low","summary":"Dulwich, a pure-Python Git implementation, recurses forever when a packfile contains an OFS_DELTA object pointing at offset 0. An attacker who serves a malicious repository can exhaust CPU during clone, fetch or cat-file.","category":"package","nicknames":[],"who_cares":["python","dulwich","git","self-hosted"],"confidence":0.7,"needs_auth":"no","worst_case":"Denial of service: CPU exhausted by a crafted packfile during clone or fetch","analyst_note":"","how_to_check":"- Run `pip show dulwich` and check whether the version is below `1.2.9`\n- Search lock files for `dulwich` pinned below `1.2.9`","needs_analyst":false,"not_affected_if":["trusted-repos-only"],"who_is_affected":"Teams that run Dulwich to clone, fetch or read Git repositories from sources they do not fully control, such as user-supplied URLs or third-party remotes. Systems that only work with trusted local repositories are less exposed. unknown whether other Dulwich entry points are affected beyond clone, fetch and cat-file.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000589,"input_tokens":3385,"output_tokens":500,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-114095':12A,15A '-2026':11A,14A '0':43B,100C '1.2.9':63C 'allow':74C 'attack':45B,75C,87C 'cat':59B,109C 'cat-fil':58B,108C 'caus':4A,77C 'clone':55B,105C 'contain':35B,64C 'cpu':8A,53B,103C 'craft':2A 'cve':10A,13A 'delta':38B,85C,96C,97C 'denial':66C 'dulwich':1A,16B,23B,61C 'exhaust':9A,52B,102C 'fetch':56B,106C 'file':60B,110C 'forev':31B 'git':17B,28B 'host':22B 'implement':29B 'infinit':5A,78C 'malici':49B,91C 'object':39B,72C,86C 'of':37B,84C,95C 'offset':42B,98C 'oper':111C 'pack.resolve':71C 'packag':18B 'packfil':3A,34B,92C 'point':40B 'pure':26B 'pure-python':25B 'python':19B,27B 'recurs':6A,30B,79C 'referenti':83C 'repositori':50B 'self':21B,82C 'self-host':20B 'self-referenti':81C 'serv':47B 'servic':68C 'suppli':89C 'via':80C 'vulner':69C","nicknames":[],"mitigations":[],"who_affected":"Teams that run Dulwich to clone, fetch or read Git repositories from sources they do not fully control, such as user-supplied URLs or third-party remotes. Systems that only work with trusted local repositories are less exposed. unknown whether other Dulwich entry points are affected beyond clone, fetch and cat-file.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T01:17:34+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-114095","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-114095","severity":null,"published_at":"2026-10-21T01:17:34+00:00","modified_at":"2026-10-21T16:17:30+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","fetched_at":"2026-10-23T22:29:01+00:00","note":null},{"source":"epss","external_id":"CVE-2026-114095","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-114095","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T13:15:54+00:00","fetched_at":"2026-10-24T13:15:54+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}