← Back to CVE Explorer

CVE-2026-97598

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: ipv4: fib: bound automatic table ID allocation fib_empty_table() probes every table ID from 1 until it finds a free one. IPv4 tables are stored in a 256-bucket hash table, so a dense set of IDs makes each probe walk a growing hash chain while RTNL is held. Automatic table assignment ("ip rule ... table 0") is an IPv4-only legacy path. Bound the automatically allocated ID to 4096 so the RTNL hold stays bounded, without changing lookups of explicitly specified table IDs. This changes user-visible behavior. A table-0 rule previously received the lowest free ID in 1..RT_TABLE_MAX (0xFFFFFFFF). After this patch the search stops at 4096 and the rule add fails with ENOBUFS if that range is fully occupied. Explicit table IDs above 4096 remain usable. The automatic path is unused in practice: it is IPv4-only, not documented by ip-rule, uncovered by kernel selftests, and both NetworkManager and systemd refuse table 0.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-09-25 11:17:11.130000
Last modified
2026-10-19 10:17:29.457000
View original CVE JSON
{
  "id": "CVE-2026-97598",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-09-25T11:17:11.130",
  "lastModified": "2026-10-19T10:17:29.457",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nipv4: fib: bound automatic table ID allocation\n\nfib_empty_table() probes every table ID from 1 until it finds a\nfree one.  IPv4 tables are stored in a 256-bucket hash table, so a\ndense set of IDs makes each probe walk a growing hash chain while\nRTNL is held.\n\nAutomatic table assignment (\"ip rule ... table 0\") is an IPv4-only\nlegacy path.  Bound the automatically allocated ID to 4096 so the\nRTNL hold stays bounded, without changing lookups of explicitly\nspecified table IDs.\n\nThis changes user-visible behavior.  A table-0 rule previously\nreceived the lowest free ID in 1..RT_TABLE_MAX (0xFFFFFFFF).  After\nthis patch the search stops at 4096 and the rule add fails with\nENOBUFS if that range is fully occupied.  Explicit table IDs above\n4096 remain usable.\n\nThe automatic path is unused in practice: it is IPv4-only, not\ndocumented by ip-rule, uncovered by kernel selftests, and both\nNetworkManager and systemd refuse table 0."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "net/ipv4/fib_rules.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "b801f54917b7c6e8540f877ee562cd0725e62ebd",
              "lessThan": "999bc00588cb305ab25065e8a8ac31da7465301c",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b801f54917b7c6e8540f877ee562cd0725e62ebd",
              "lessThan": "f1f2da33eaab54b4d5cdea6d70befb2e2fb49cb6",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b801f54917b7c6e8540f877ee562cd0725e62ebd",
              "lessThan": "125890702ef4417cd0ffac2e448c0cd4fbf0ac45",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b801f54917b7c6e8540f877ee562cd0725e62ebd",
              "lessThan": "3080f9e653d8c057d5652db5ced8137f81b3fcbd",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b801f54917b7c6e8540f877ee562cd0725e62ebd",
              "lessThan": "bc8d01d856db106f284b19961af6112e10c3e3b4",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b801f54917b7c6e8540f877ee562cd0725e62ebd",
              "lessThan": "fe9a906d2bff2d2707bafd6353b5e032a42aeb35",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b801f54917b7c6e8540f877ee562cd0725e62ebd",
              "lessThan": "2c29c053a6627dc4f12fcfe6b4860bcd9e5d7503",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "b801f54917b7c6e8540f877ee562cd0725e62ebd",
              "lessThan": "efdfb1e27a3328085b79540dfe781d537b576ea1",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "net/ipv4/fib_rules.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "2.6.19",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "2.6.19",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.10.271",
              "lessThanOrEqual": "5.10.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.15.222",
              "lessThanOrEqual": "5.15.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.1.189",
              "lessThanOrEqual": "6.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.6.158",
              "lessThanOrEqual": "6.6.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.111",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.53",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.7",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/125890702ef4417cd0ffac2e448c0cd4fbf0ac45",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/2c29c053a6627dc4f12fcfe6b4860bcd9e5d7503",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/3080f9e653d8c057d5652db5ced8137f81b3fcbd",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/999bc00588cb305ab25065e8a8ac31da7465301c",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/bc8d01d856db106f284b19961af6112e10c3e3b4",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/efdfb1e27a3328085b79540dfe781d537b576ea1",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/f1f2da33eaab54b4d5cdea6d70befb2e2fb49cb6",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/fe9a906d2bff2d2707bafd6353b5e032a42aeb35",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}