{
  "affected": [
    {
      "ranges": [
        {
          "events": [
            {
              "introduced": "25aa2ad37c2162be1c0bc4fe6397f7e4c13f00f8"
            },
            {
              "fixed": "8c760ba4e36c750379d13569f23f5a6e185333f5"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        },
        {
          "events": [
            {
              "introduced": "d60be2da67d172aecf866302c91ea11533eca4d9"
            },
            {
              "fixed": "b9b6573421de51829f7ec1cce76d85f5f6fbbd7f"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        },
        {
          "events": [
            {
              "introduced": "628bd3e49cba1c066228e23d71a852c23e26da73"
            },
            {
              "fixed": "42c574c1504aa089a0a142e4c13859327570473d"
            },
            {
              "fixed": "1444ff890b4653add12f734ffeffc173d42862dd"
            },
            {
              "fixed": "8b68a45f9722f2babe9e7bad00aa74638addf081"
            },
            {
              "fixed": "f41c5d151078c5348271ffaf8e7410d96f2d82f8"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        },
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "last_affected": "bc9f791d2593f17e39f87c6e2b3a36549a3705b1"
            },
            {
              "last_affected": "3c7ec098e3b588434a8b07ea9b5b36f04cef1f50"
            },
            {
              "last_affected": "a136b7942ad2a50de708f76ea299ccb45ac7a7f9"
            },
            {
              "last_affected": "dc7cdf8cbcbf8b13de1df93f356ec04cdeef5c41"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        }
      ]
    }
  ],
  "database_specific": {
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/23xxx/CVE-2026-23111.json"
  },
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()\n\nnft_map_catchall_activate() has an inverted element activity check\ncompared to its non-catchall counterpart nft_mapelem_activate() and\ncompared to what is logically required.\n\nnft_map_catchall_activate() is called from the abort path to re-activate\ncatchall map elements that were deactivated during a failed transaction.\nIt should skip elements that are already active (they don't need\nre-activation) and process elements that are inactive (they need to be\nrestored). Instead, the current code does the opposite: it skips inactive\nelements and processes active ones.\n\nCompare the non-catchall activate callback, which is correct:\n\n  nft_mapelem_activate():\n    if (nft_set_elem_active(ext, iter-\u003egenmask))\n        return 0;   /* skip active, process inactive */\n\nWith the buggy catchall version:\n\n  nft_map_catchall_activate():\n    if (!nft_set_elem_active(ext, genmask))\n        continue;   /* skip inactive, process active */\n\nThe consequence is that when a DELSET operation is aborted,\nnft_setelem_data_activate() is never called for the catchall element.\nFor NFT_GOTO verdict elements, this means nft_data_hold() is never\ncalled to restore the chain-\u003euse reference count. Each abort cycle\npermanently decrements chain-\u003euse. Once chain-\u003euse reaches zero,\nDELCHAIN succeeds and frees the chain while catchall verdict elements\nstill reference it, resulting in a use-after-free.\n\nThis is exploitable for local privilege escalation from an unprivileged\nuser via user namespaces + nftables on distributions that enable\nCONFIG_USER_NS and CONFIG_NF_TABLES.\n\nFix by removing the negation so the check matches nft_mapelem_activate():\nskip active elements, process inactive ones.",
  "id": "CVE-2026-23111",
  "modified": "2026-04-01T23:09:42.080948108Z",
  "published": "2026-02-13T13:29:55.895Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/1444ff890b4653add12f734ffeffc173d42862dd"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/42c574c1504aa089a0a142e4c13859327570473d"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/8b68a45f9722f2babe9e7bad00aa74638addf081"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/8c760ba4e36c750379d13569f23f5a6e185333f5"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/b9b6573421de51829f7ec1cce76d85f5f6fbbd7f"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/f41c5d151078c5348271ffaf8e7410d96f2d82f8"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/23xxx/CVE-2026-23111.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-23111"
    },
    {
      "type": "PACKAGE",
      "url": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
    }
  ],
  "schema_version": "1.7.3",
  "summary": "netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()"
}