CVE-2026-23274 Overview
A vulnerability has been identified in the Linux kernel's netfilter xt_IDLETIMER module that can lead to uninitialized memory access and potential system panic. The issue arises when IDLETIMER revision 0 rules attempt to reuse existing timers created by revision 1 with XT_IDLETIMER_ALARM semantics. Since revision 0 always calls mod_timer() on timer->timer, but this field is never initialized when the timer was originally created as an ALARM type, the operation triggers debugobjects warnings and can cause a kernel panic when panic_on_warn=1 is enabled.
Critical Impact
Local attackers with the ability to configure iptables rules could trigger kernel panic conditions by creating conflicting timer label configurations between IDLETIMER revisions, potentially causing denial of service on affected Linux systems.
Affected Products
- Linux kernel with netfilter xt_IDLETIMER module enabled
- Systems using iptables IDLETIMER target extension
- Linux distributions with default netfilter configurations
Discovery Timeline
- 2026-03-20 - CVE CVE-2026-23274 published to NVD
- 2026-03-25 - Last updated in NVD database
Technical Details for CVE-2026-23274
Vulnerability Analysis
The vulnerability exists in the Linux kernel's netfilter subsystem, specifically within the xt_IDLETIMER extension module. This module provides functionality for creating timers that can be used to track idle connections and trigger actions based on timeout events.
The IDLETIMER extension supports two revisions with different timer implementations. Revision 1 introduces support for ALARM timers via the XT_IDLETIMER_ALARM flag, which uses the kernel's alarm timer infrastructure. Revision 0, the original implementation, uses standard timer_list structures with mod_timer() for timer management.
The fundamental issue is that both revisions share timer objects by label lookup. When a timer is created using revision 1 with the ALARM flag, the timer->timer field (a timer_list structure) is never initialized because the alarm timer semantics use a different mechanism. However, if a subsequent revision 0 rule references the same label, it assumes the timer uses standard semantics and unconditionally calls mod_timer() on the uninitialized timer_list structure.
This triggers the kernel's debug object infrastructure warnings for operations on uninitialized objects. More critically, on systems configured with panic_on_warn=1, this condition immediately causes a kernel panic, resulting in a complete system denial of service.
Root Cause
The root cause is improper validation of timer type compatibility when reusing timer objects across IDLETIMER revisions. The revision 0 code path does not check whether an existing timer with a matching label was created as an ALARM type by revision 1. This missing validation allows mod_timer() to be called on an uninitialized timer_list structure, violating kernel object lifecycle invariants.
Attack Vector
An attacker with local access and sufficient privileges to configure iptables rules (typically root or CAP_NET_ADMIN capability) could exploit this vulnerability by:
- Creating an IDLETIMER rule using revision 1 with the XT_IDLETIMER_ALARM flag and a specific label
- Subsequently creating a revision 0 IDLETIMER rule with the same label
- The kernel will attempt to reuse the timer object and call mod_timer() on uninitialized memory
The vulnerability requires local access with iptables configuration privileges. On systems with panic_on_warn=1 enabled, this sequence will cause an immediate kernel panic.
The fix implemented in the kernel patches adds validation logic to reject revision 0 rule insertion when an existing timer with the same label is of the ALARM type, preventing the type mismatch condition.
Detection Methods for CVE-2026-23274
Indicators of Compromise
- Kernel warning messages containing ODEBUG or debugobjects references related to timer_list structures
- System crashes or kernel panics with stack traces involving xt_IDLETIMER or mod_timer functions
- Unexpected iptables rule creation patterns mixing IDLETIMER revisions with identical labels
Detection Strategies
- Monitor kernel logs (dmesg, /var/log/kern.log) for debugobjects warnings mentioning uninitialized timers
- Review iptables configurations for IDLETIMER rules using both -j IDLETIMER with and without --alarm flag sharing the same --label value
- Implement audit rules to track iptables rule modifications: auditctl -w /sbin/iptables -p x -k netfilter_changes
Monitoring Recommendations
- Enable comprehensive kernel logging to capture debugobjects warnings before they escalate to panics
- Monitor system stability metrics for unexpected reboots that may indicate kernel panic conditions
- Deploy endpoint detection solutions capable of correlating iptables configuration changes with system stability events
How to Mitigate CVE-2026-23274
Immediate Actions Required
- Apply the kernel patches from the stable branches as soon as available for your distribution
- Audit existing iptables configurations for IDLETIMER rules that may trigger this condition
- Consider temporarily disabling panic_on_warn if system availability is critical and patching is delayed
- Restrict access to iptables configuration to trusted administrators only
Patch Information
The Linux kernel maintainers have released patches across multiple stable branches. The fix adds validation logic to reject revision 0 rule insertion when an existing timer with the same label is of ALARM type.
Relevant commits are available in the kernel git repository:
- Kernel Git Commit 28c7cfaf
- Kernel Git Commit 329f0b9b
- Kernel Git Commit 54080355
- Kernel Git Commit 5e7ece24
- Kernel Git Commit f228b9ae
- Kernel Git Commit f5ef97c1
Workarounds
- Ensure IDLETIMER rules with the same label consistently use either revision 0 or revision 1 semantics, never mixing them
- Remove or rename conflicting IDLETIMER labels to prevent timer object reuse across revisions
- If the xt_IDLETIMER module is not required, consider blacklisting it: echo "blacklist xt_IDLETIMER" >> /etc/modprobe.d/blacklist.conf
- Disable panic_on_warn to prevent kernel panics (note: this reduces security hardening): sysctl -w kernel.panic_on_warn=0
# Configuration example - Audit existing IDLETIMER rules
# Check for potentially conflicting IDLETIMER configurations
iptables-save | grep -i idletimer
# Ensure consistent revision usage per label
# Remove conflicting rules if found
# iptables -D <chain> <rule-specification>
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

