ZeroHour

CVE-2026-80603

niche

Off-by-one out-of-bounds read in Linux kernel nf_conntrack_irc (IRC NAT helper)

CVSS 3.1
9.1 critical
EPSS
<1%p36
Published
()
Modified
AI analysis

The Linux kernel's netfilter nf_conntrack_irc module contains an off-by-one out-of-bounds read in parse_dcc(), which treats the buffer end pointer as inclusive while its caller passes an exclusive limit (ib_ptr + datalen), causing one byte beyond the packet data copied via skb_header_pointer() to be read. The bug is triggered when the IRC conntrack helper parses an IRC DCC command whose data contains no trailing newline, so the newline-search loop reads at the position one past the last valid byte; that byte is uninitialized or stale kernel memory. If the stray byte happens to be an ASCII digit, simple_strtoul consumes it and produces a wrong DCC IP address or port in the conntrack expectation, so an attacker sending IRC traffic through an affected host can corrupt NAT/conntrack handling of DCC transfers; the overread itself cannot fault because the buffer is allocated with one extra byte. Only Linux systems where the nf_conntrack_irc helper is loaded and processing IRC traffic are affected in practice, which typically means firewalls or NAT gateways with the IRC helper enabled. No public proof-of-concept is known, the flaw is not in CISA's KEV catalog, and EPSS estimates a 0.4% chance of exploitation in the next 30 days.

What to do: Apply your distribution's kernel update once it includes the nf_conntrack_irc fix (the upstream change switches the parse loop to strict less-than bounds). In the meantime, check whether the helper is in use (e.g., 'lsmod | grep nf_conntrack_irc' and inspect iptables/nftables rules for the IRC helper, plus the nf_conntrack_helper auto-assignment sysctl); if it is not needed, unload the module or disable IRC helper handling on unpatched kernels. No exploit code is required for remediation, and no workarounds beyond disabling the helper are documented.

Affected
Linux kernel (kernel.org) netfilter nf_conntrack_irc (IRC conntrack/NAT helper)
Estimated exposure
nichelikely on the order of only hundreds to low thousands of exposed systems worldwide (Linux firewalls/NAT gateways with the IRC conntrack helper loaded and… — Linux kernels are ubiquitous, but the flaw is only reachable where nf_conntrack_irc is actually loaded and used, which is a legacy configuration (explicit helper rules or auto helper assignment), and no public internet-scan data quantifies…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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.

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

In the news

No ingested article mentions this CVE yet.