CVE-2026-64006 (GCVE-0-2026-64006)

Vulnerability from cvelistv5 – Published: 2026-07-19 14:56 – Updated: 2026-07-19 14:56
VLAI
Title
netfilter: nf_tables: fix dst corruption in same register operation
Summary
In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_tables: fix dst corruption in same register operation For lshift and rshift, the shift operations are performed in a loop over 32-bit words. The loop calculates the shifted value and write it to dst, and then immediately reads from src to calculate the carry for the next iteration. Because src and dst could point to the same memory location, the carry is incorrectly calculated using the newly modified dst value instead of the original src value. Adding a temporary local variable to cache the original value before writing to dst and using it for the carry calculation solves the problem. In addition, partial overlap is rejected from control plane for all kind of operations including byteorder. This was tested with the following bytecode: table test_table ip flags 0 use 1 handle 1 ip test_table test_chain use 3 type filter hook input prio 0 policy accept packets 0 bytes 0 flags 1 ip test_table test_chain 2 [ immediate reg 1 0x44332211 0x88776655 ] [ bitwise reg 1 = ( reg 1 << 0x08000000 ) ] [ cmp eq reg 1 0x66443322 0x00887766 ] [ counter pkts 0 bytes 0 ] ip test_table test_chain 4 3 [ immediate reg 1 0x44332211 0x88776655 ] [ bitwise reg 1 = ( reg 1 << 0x08000000 ) ] [ cmp eq reg 1 0x55443322 0x00887766 ] [ counter pkts 21794 bytes 1917798 ]
Severity
No CVSS data available.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 567d746b55bc66d3800c9ae91d50f0c5deb2fd93 , < b80ef316e978de2ef81d5bee9c19800b4cf96fb8 (git)
Affected: 567d746b55bc66d3800c9ae91d50f0c5deb2fd93 , < 96bea2a7baac4a1137c188dc7610184487ab30a7 (git)
Affected: 567d746b55bc66d3800c9ae91d50f0c5deb2fd93 , < a391afe74398b70107f111aa731eab608624949d (git)
Affected: 567d746b55bc66d3800c9ae91d50f0c5deb2fd93 , < 18014147d3ee7831dce53fe65d7fc8d428b02552 (git)
Create a notification for this product.
Linux Linux Affected: 5.6
Unaffected: 0 , < 5.6 (semver)
Unaffected: 6.6.143 , ≤ 6.6.* (semver)
Unaffected: 6.18.35 , ≤ 6.18.* (semver)
Unaffected: 7.0.12 , ≤ 7.0.* (semver)
Unaffected: 7.1 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "include/net/netfilter/nf_tables.h",
            "net/netfilter/nft_bitwise.c",
            "net/netfilter/nft_byteorder.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b80ef316e978de2ef81d5bee9c19800b4cf96fb8",
              "status": "affected",
              "version": "567d746b55bc66d3800c9ae91d50f0c5deb2fd93",
              "versionType": "git"
            },
            {
              "lessThan": "96bea2a7baac4a1137c188dc7610184487ab30a7",
              "status": "affected",
              "version": "567d746b55bc66d3800c9ae91d50f0c5deb2fd93",
              "versionType": "git"
            },
            {
              "lessThan": "a391afe74398b70107f111aa731eab608624949d",
              "status": "affected",
              "version": "567d746b55bc66d3800c9ae91d50f0c5deb2fd93",
              "versionType": "git"
            },
            {
              "lessThan": "18014147d3ee7831dce53fe65d7fc8d428b02552",
              "status": "affected",
              "version": "567d746b55bc66d3800c9ae91d50f0c5deb2fd93",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "include/net/netfilter/nf_tables.h",
            "net/netfilter/nft_bitwise.c",
            "net/netfilter/nft_byteorder.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.6"
            },
            {
              "lessThan": "5.6",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.143",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.35",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.0.*",
              "status": "unaffected",
              "version": "7.0.12",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.143",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.35",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0.12",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: nf_tables: fix dst corruption in same register operation\n\nFor lshift and rshift, the shift operations are performed in a loop over\n32-bit words. The loop calculates the shifted value and write it to dst,\nand then immediately reads from src to calculate the carry for the next\niteration. Because src and dst could point to the same memory location,\nthe carry is incorrectly calculated using the newly modified dst value\ninstead of the original src value.\n\nAdding a temporary local variable to cache the original value before\nwriting to dst and using it for the carry calculation solves the\nproblem. In addition, partial overlap is rejected from control plane for\nall kind of operations including byteorder. This was tested with the\nfollowing bytecode:\n\ntable test_table ip flags 0 use 1 handle 1\nip test_table test_chain use 3 type filter hook input prio 0 policy accept packets 0 bytes 0 flags 1\nip test_table test_chain 2\n  [ immediate reg 1 0x44332211 0x88776655 ]\n  [ bitwise reg 1 = ( reg 1 \u003c\u003c 0x08000000 ) ]\n  [ cmp eq reg 1 0x66443322 0x00887766 ]\n  [ counter pkts 0 bytes 0 ]\nip test_table test_chain 4 3\n  [ immediate reg 1 0x44332211 0x88776655 ]\n  [ bitwise reg 1 = ( reg 1 \u003c\u003c 0x08000000 ) ]\n  [ cmp eq reg 1 0x55443322 0x00887766 ]\n  [ counter pkts 21794 bytes 1917798 ]"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-07-19T14:56:22.321Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b80ef316e978de2ef81d5bee9c19800b4cf96fb8"
        },
        {
          "url": "https://git.kernel.org/stable/c/96bea2a7baac4a1137c188dc7610184487ab30a7"
        },
        {
          "url": "https://git.kernel.org/stable/c/a391afe74398b70107f111aa731eab608624949d"
        },
        {
          "url": "https://git.kernel.org/stable/c/18014147d3ee7831dce53fe65d7fc8d428b02552"
        }
      ],
      "title": "netfilter: nf_tables: fix dst corruption in same register operation",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-64006",
    "datePublished": "2026-07-19T14:56:22.321Z",
    "dateReserved": "2026-07-19T07:54:57.026Z",
    "dateUpdated": "2026-07-19T14:56:22.321Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-64006",
      "date": "2026-07-21",
      "epss": "0.00171",
      "percentile": "0.06793"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-64006\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-07-19T16:17:40.297\",\"lastModified\":\"2026-07-19T16:17:40.297\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnetfilter: nf_tables: fix dst corruption in same register operation\\n\\nFor lshift and rshift, the shift operations are performed in a loop over\\n32-bit words. The loop calculates the shifted value and write it to dst,\\nand then immediately reads from src to calculate the carry for the next\\niteration. Because src and dst could point to the same memory location,\\nthe carry is incorrectly calculated using the newly modified dst value\\ninstead of the original src value.\\n\\nAdding a temporary local variable to cache the original value before\\nwriting to dst and using it for the carry calculation solves the\\nproblem. In addition, partial overlap is rejected from control plane for\\nall kind of operations including byteorder. This was tested with the\\nfollowing bytecode:\\n\\ntable test_table ip flags 0 use 1 handle 1\\nip test_table test_chain use 3 type filter hook input prio 0 policy accept packets 0 bytes 0 flags 1\\nip test_table test_chain 2\\n  [ immediate reg 1 0x44332211 0x88776655 ]\\n  [ bitwise reg 1 = ( reg 1 \u003c\u003c 0x08000000 ) ]\\n  [ cmp eq reg 1 0x66443322 0x00887766 ]\\n  [ counter pkts 0 bytes 0 ]\\nip test_table test_chain 4 3\\n  [ immediate reg 1 0x44332211 0x88776655 ]\\n  [ bitwise reg 1 = ( reg 1 \u003c\u003c 0x08000000 ) ]\\n  [ cmp eq reg 1 0x55443322 0x00887766 ]\\n  [ counter pkts 21794 bytes 1917798 ]\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"include/net/netfilter/nf_tables.h\",\"net/netfilter/nft_bitwise.c\",\"net/netfilter/nft_byteorder.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"567d746b55bc66d3800c9ae91d50f0c5deb2fd93\",\"lessThan\":\"b80ef316e978de2ef81d5bee9c19800b4cf96fb8\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"567d746b55bc66d3800c9ae91d50f0c5deb2fd93\",\"lessThan\":\"96bea2a7baac4a1137c188dc7610184487ab30a7\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"567d746b55bc66d3800c9ae91d50f0c5deb2fd93\",\"lessThan\":\"a391afe74398b70107f111aa731eab608624949d\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"567d746b55bc66d3800c9ae91d50f0c5deb2fd93\",\"lessThan\":\"18014147d3ee7831dce53fe65d7fc8d428b02552\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"include/net/netfilter/nf_tables.h\",\"net/netfilter/nft_bitwise.c\",\"net/netfilter/nft_byteorder.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5.6\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"5.6\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.143\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.35\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.0.12\",\"lessThanOrEqual\":\"7.0.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/18014147d3ee7831dce53fe65d7fc8d428b02552\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/96bea2a7baac4a1137c188dc7610184487ab30a7\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/a391afe74398b70107f111aa731eab608624949d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b80ef316e978de2ef81d5bee9c19800b4cf96fb8\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…