KernelScan.io

CRITICAL Introduced in 2.6.12

netfilter ParseDcc OOB

CVE-2026-80603

CVSS 9.1 / 10.0 NVD

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

KernelScan AI6.4MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_irc: fix parse_dcc() off-by-one OOB read parse_dcc() treats data_end as an inclusive end pointer, but its only caller passes data_limit = ib_ptr + datalen, which points one past the last valid byte. The newline search loop iterates while tmp <= data_end, so when no newline is present, *tmp is read at tmp == data_end, one byte beyond the region filled by skb_header_pointer(). irc_buffer is kmalloc'd as MAX_SEARCH_SIZE + 1 bytes and datalen is capped at MAX_SEARCH_SIZE, so the stray read does not fault. The byte is uninitialized or stale; if it contains an ASCII digit, simple_strtoul will consume it and produce a wrong DCC IP or port in the conntrack expectation. The extra allocation byte is also a fragile guard: if the cap or allocation size changes, this becomes a real out-of-bounds read. Change the loop and its post-loop check to use strict less-than, consistent with the caller's exclusive-end convention. Update the function comment accordingly.

02

Engine v0.6.0

Risk summary

A remote attacker can send a crafted IRC packet to trigger a one-byte out-of-bounds read in the nf_conntrack_irc helper. The stray byte may influence parsed DCC connection parameters, potentially creating incorrect conntrack expectations.

Affectednet/netfilter/nf_conntrack_irc.c (netfilter)

Vulnerability analysis

The IRC conntrack helper's DCC parser treats its end-of-buffer pointer as inclusive, but the caller passes an exclusive (one-past-end) pointer. When a packet lacks a newline terminator, the search loop reads one byte beyond the data filled from the packet, hitting an uninitialized or stale byte in the helper's scratch buffer. If that byte is an ASCII digit, the subsequent numeric parse produces an incorrect DCC IP or port, leading to a wrong conntrack expectation. The fix changes the loop and post-loop check to strict less-than comparisons, matching the caller's exclusive-end convention. The vulnerable code path is reached when the kernel processes IRC traffic with the nf_conntrack_irc module loaded, which an attacker can trigger by sending a specially crafted IRC packet through the host.

03

BranchIntroducedFixed inPatch commit
5.102.6.125.10.261abb8c32b88ea
5.152.6.125.15.212437e0a3854b3
6.12.6.126.1.178910c33e4a8c0
6.122.6.126.12.972393f0bd7a46
6.182.6.126.18.40aff589556ed7
6.62.6.126.6.1452b70f61f569b
7.12.6.127.1.5eeef3b81f449
mainline2.6.127.2ef6400ca25a1
cip/4.192.6.124.19.325-cip136e62354ad65d4
cip/4.19-rt2.6.124.19.325-cip136-rt50e62354ad65d4
cip/4.42.6.124.4.302-cip115843160c4a887
cip/4.4-rt2.6.124.4.302-cip115-rt63843160c4a887
cip/5.102.6.125.10.263-cip76abb8c32b88ea
cip/5.10-rt2.6.125.10.268-cip77-rt34abb8c32b88ea
cip/6.12.6.126.1.182-cip59910c33e4a8c0
cip/6.1-rt2.6.126.1.182-cip59-rt31910c33e4a8c0
cip/6.122.6.126.12.101-cip292393f0bd7a46

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.101-cip29
cip/6.1Fixed in 6.1.182-cip59
cip/6.1-rtFixed in 6.1.182-cip59-rt31
cip/5.10Fixed in 5.10.263-cip76
cip/5.10-rtFixed in 5.10.268-cip77-rt34
cip/4.19Fixed in 4.19.325-cip136
cip/4.19-rtFixed in 4.19.325-cip136-rt50
cip/4.4Fixed in 4.4.302-cip115
cip/4.4-rtFixed in 4.4.302-cip115-rt63