LearnCTEM.com, Best CTEM Learning Platform
CVE Intelligence Hub

CVE-2026-122299: Dulwich Security Vulnerability

CVE-2026-122299 explained: high Security Vulnerability in Dulwich. CVSS 8.6. Affected versions, detection, fixes and CTEM priority.

Last updated: Nov 4, 2026

CVSS
8.6 HIGH
EPSS
n/a
CISA KEV
Not listed
CWE
CWE-115

Sources: National Vulnerability Database, CVE.org, CISA KEV, FIRST EPSS

CVE-2026-122299 Overview

Dulwich before 1.2.20 contains a commit object parsing vulnerability where the read path in _parse_commit resolves a duplicate tree header to the last occurrence instead of the first, diverging from core git's resolution behavior, while Poetry 2.5.1 ships this version and uses dulwich by default for git dependency installation. Attackers can craft a commit object with two tree headers so that reviewers and CI using git see a benign tree while Poetry's dulwich-based checkout resolves to a different attacker-controlled tree containing malicious build scripts such as setup.py, resulting in unreviewed code execution on the install or build host.

Critical Impact

Remote, unauthenticated attackers who persuade a user to act can exploit this Security Vulnerability in Dulwich. The CVSS base score is 8.6 (High).

Affected Products

  • Dulwich: see the vendor advisory for the exact affected versions

Discovery Timeline

  • 2026-11-04: CVE-2026-122299 published to the National Vulnerability Database by disclosure@vulncheck.com
  • 2026-11-04: last updated in the NVD database

Technical Details for CVE-2026-122299

Vulnerability Analysis

CVE-2026-122299 is a Security Vulnerability weakness (CWE-115, CWE-1250) in Dulwich. Based on its CVSS vector, the flaw can be reached over the network, needs no login, and relies on a user taking an action.

With a CVSS base score of 8.6, apply the vendor fix and confirm exposure on internet facing and business critical assets first.

Root Cause

The vendor description states: Dulwich before 1.2.20 contains a commit object parsing vulnerability where the read path in _parse_commit resolves a duplicate tree header to the last occurrence instead of the first, diverging from core git's resolution behavior, while Poetry 2.5.1 ships this version and uses dulwich by default for git dependency installation. Attackers can craft a commit object with two tree headers so that reviewers and CI using git see a benign tree while Poetry's dulwich-based checkout resolves to a different attacker-controlled tree containing malicious build scripts such as setup.py, resulting in unreviewed code execution on the install or build host.

Attack Vector

Based on the CVSS vector, the flaw can be reached over the network, needs no login, and relies on a user taking an action. Attack complexity is low complexity.

No exploitation in the wild is confirmed by CISA at the time of the last update. Check the references below for any vendor or researcher proof of concept.

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/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

Detection Methods for CVE-2026-122299

Detection Strategies

  • Inventory every instance of Dulwich and compare the running version with the affected range above.
  • Check external attack surface scans for internet facing instances of the component.
  • Run an authenticated vulnerability scan once your scanner ships a check for this CVE.

Monitoring Recommendations

  • Forward Dulwich application, access and audit logs to your SIEM for retrospective hunting.
  • Alert on new processes, configuration changes or outbound connections from the affected service.
  • Track the vendor advisory and the CISA KEV catalog for changes in exploitation status.

How to Mitigate CVE-2026-122299

Immediate Actions Required

  • Apply the fixed version of Dulwich named in the vendor advisory.
  • Prioritize internet facing and business critical instances first.
  • Rescan after the change to confirm the exposure is closed.

Patch Information

Use the fixed version listed in the vendor advisory for Dulwich.

Workarounds

  • If patching must wait, restrict network access to the affected service and place it behind authentication or a web application firewall rule.

CWE References

Technical References

This entry is built directly from NVD, CISA KEV and EPSS data. Verify fixed versions in the vendor advisory before you deploy.

Frequently asked questions

CVE-2026-122299 is a high severity Security Vulnerability in Dulwich with a CVSS score of 8.6. Apply the vendor fix and confirm exposure on internet facing and business critical assets first.

Related CVEs

CRITICAL9.4
CVE-2026-17351
Pgadmin 4

The fix for CVE-2026-12045 in pgAdmin 4 9.16 required the LLM-supplied query passed to the AI Assistant's execute_sql_query tool to parse, via sqlparse, as exactly one non-transaction-control statement before running it inside a BEGIN TRANSACTION READ ONLY wrapper. sqlparse's string-literal lexing can disagree with PostgreSQL's own parser: under standard_conforming_strings = on (PostgreSQL's default since 9.1), a backslash immediately before a quote is an ordinary character to PostgreSQL, but sqlparse treats it as escaping the quote. A payload such as SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --' therefore parses as a single SELECT to sqlparse's validator, while PostgreSQL executes it as four statements: the smuggled COMMIT ends the wrapping read-only transaction, and the trailing ROLLBACK becomes a no-op. This reintroduces the same write/RCE bypass CVE-2026-12045 was meant to close, reachable via the same indirect prompt-injection delivery (an attacker plants the payload in any object the AI Assistant may read; the LLM emits it as a tool call). An initial candidate fix ran the query with psycopg's execute(..., prepare=True), intending to force PostgreSQL's own Parse step (extended query protocol) to reject multi-statement text regardless of sqlparse's classification. This candidate fix does not work as submitted: psycopg3's PrepareManager silently ignores the prepare argument whenever the connection's prepare_threshold is None, which is pgAdmin's default for every server connection (the per-server "Prepare threshold" field is blank unless an administrator explicitly sets it) -- psycopg3 falls back to the simple query protocol, the same multi-statement-capable path the bypass exploits, so the candidate fix closes nothing on any real-world default configuration. The corrected fix sets conn.prepare_threshold = 0 directly on the dedicated, single-use read-only connection the AI Assistant tool opens, structurally forcing the extended query protocol independent of any server-level configuration. Verified against a live PostgreSQL 18 instance: the payload executes successfully under the prepare_threshold=None (default) behavior, and is rejected with "cannot insert multiple commands into a prepared statement" once prepare_threshold=0 is set on that connection. This issue affects pgAdmin 4: from 9.13 before 9.17.

Jul 31, 2026
Your next credential

Earn your free CTEM certification.

Learn to scope, prioritize, validate and mobilize fixes for CVEs like CVE-2026-122299 with a free CTEM certification.

Free to takePublicly verifiable

Beginner / Practitioner / Program Leader

Explore certifications