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.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < abb8c32b88ea3f46beb68c34fe9a3ac8ed664e7eaffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 437e0a3854b3a44ec15afa9ab88ec215adf3a2fdaffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 910c33e4a8c046c3cc1fa5a465a4d41a1bb398f1affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 2b70f61f569bb29acb380e6f616a1bbdee15668faffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 2393f0bd7a467ad475598f3a5b9de27ca36e3037affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < aff589556ed772cb1c0c2d7b4d91ec45c0c39416affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < eeef3b81f449560653662df2dde6f6fe247c5365affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < ef6400ca25a13fd6dedbe8ef4a1d0979bbbfe88aaffected
Linux Linux
Default version status: affected
2.6.12affected0 to < 2.6.12unaffected5.10.261 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.97 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/abb8c32b88ea3f46beb68c34fe9a3ac8ed664e7e ↗
- https://git.kernel.org/stable/c/437e0a3854b3a44ec15afa9ab88ec215adf3a2fd ↗
- https://git.kernel.org/stable/c/910c33e4a8c046c3cc1fa5a465a4d41a1bb398f1 ↗
- https://git.kernel.org/stable/c/2b70f61f569bb29acb380e6f616a1bbdee15668f ↗
- https://git.kernel.org/stable/c/2393f0bd7a467ad475598f3a5b9de27ca36e3037 ↗
- https://git.kernel.org/stable/c/aff589556ed772cb1c0c2d7b4d91ec45c0c39416 ↗
- https://git.kernel.org/stable/c/eeef3b81f449560653662df2dde6f6fe247c5365 ↗
- https://git.kernel.org/stable/c/ef6400ca25a13fd6dedbe8ef4a1d0979bbbfe88a ↗