CVE-2024-27403 (GCVE-0-2024-27403)
Vulnerability from cvelistv5
Published
2024-05-17 11:40
Modified
2026-08-05 11:29
Summary
In the Linux kernel, the following vulnerability has been resolved: netfilter: nft_flow_offload: reset dst in route object after setting up flow dst is transferred to the flow object, route object does not own it anymore. Reset dst in route object, otherwise if flow_offload_add() fails, error path releases dst twice, leading to a refcount underflow.
Impacted products
Vendor Product Version
Linux Linux Version: a3c90f7a2323b331ae816d5b0633e68148e25d04
Version: a3c90f7a2323b331ae816d5b0633e68148e25d04
Version: a3c90f7a2323b331ae816d5b0633e68148e25d04
Version: a3c90f7a2323b331ae816d5b0633e68148e25d04
Version: a3c90f7a2323b331ae816d5b0633e68148e25d04
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-27403",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-05-17T17:17:07.998820Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-06-04T17:46:43.380Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-02T00:34:52.105Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/4c167af9f6b5ae4a5dbc243d5983c295ccc2e43c"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/012df10717da02367aaf92c65f9c89db206c15f4"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/558b00a30e05753a62ecc7e05e939ca8f0241148"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/670548c8db44d76e40e1dfc06812bca36a61e9ae"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/9e0f0430389be7696396c62f037be4bf72cf93e3"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "include/net/netfilter/nf_flow_table.h",
            "net/netfilter/nf_flow_table_core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "4c167af9f6b5ae4a5dbc243d5983c295ccc2e43c",
              "status": "affected",
              "version": "a3c90f7a2323b331ae816d5b0633e68148e25d04",
              "versionType": "git"
            },
            {
              "lessThan": "012df10717da02367aaf92c65f9c89db206c15f4",
              "status": "affected",
              "version": "a3c90f7a2323b331ae816d5b0633e68148e25d04",
              "versionType": "git"
            },
            {
              "lessThan": "558b00a30e05753a62ecc7e05e939ca8f0241148",
              "status": "affected",
              "version": "a3c90f7a2323b331ae816d5b0633e68148e25d04",
              "versionType": "git"
            },
            {
              "lessThan": "670548c8db44d76e40e1dfc06812bca36a61e9ae",
              "status": "affected",
              "version": "a3c90f7a2323b331ae816d5b0633e68148e25d04",
              "versionType": "git"
            },
            {
              "lessThan": "9e0f0430389be7696396c62f037be4bf72cf93e3",
              "status": "affected",
              "version": "a3c90f7a2323b331ae816d5b0633e68148e25d04",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "include/net/netfilter/nf_flow_table.h",
            "net/netfilter/nf_flow_table_core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.16"
            },
            {
              "lessThan": "4.16",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.150",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.80",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.19",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.7.*",
              "status": "unaffected",
              "version": "6.7.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.8",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.150",
                  "versionStartIncluding": "4.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.80",
                  "versionStartIncluding": "4.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.19",
                  "versionStartIncluding": "4.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.7.7",
                  "versionStartIncluding": "4.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.8",
                  "versionStartIncluding": "4.16",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: nft_flow_offload: reset dst in route object after setting up flow\n\ndst is transferred to the flow object, route object does not own it\nanymore.  Reset dst in route object, otherwise if flow_offload_add()\nfails, error path releases dst twice, leading to a refcount underflow."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerability lives in the nftables flow_offload expression, which requires local nftables/netlink configuration (flowtable + FORWARD-chain rule + conntrack zone rules) to set up and to force the failing insert. Per kernel scoring convention netfilter/nftables is treated as Local, even though the final trigger is a forwarded packet.\nAC:L - The attacker deterministically forces `flow_offload_add()` to return -EEXIST because the flow_offload_tuple hash key excludes the conntrack zone, so two zone-separated conntracks with the same 5-tuple and ingress ifindex always collide. No race and no uncontrolled memory-layout condition is involved.\nPR:L - Configuring the flowtable and rules only needs CAP_NET_ADMIN evaluated via `netlink_net_capable()`, which an unprivileged user obtains with `unshare -Urn`; forwarded traffic can then be generated entirely inside that namespace with veth pairs.\nUI:N - The attacker sets up the namespace, nftables ruleset and traffic themselves; no victim action of any kind is needed.\nS:U - The corruption is confined to kernel memory managed by the same kernel security authority; no VM, IOMMU or sandbox boundary is crossed.\nC:H - The dst refcount underflow frees a `struct dst_entry` that remains referenced by skbs and the route cache, giving a use-after-free on a heap object the attacker can reclaim and read back, enabling disclosure of arbitrary kernel memory.\nI:H - The freed dst is reclaimable via heap spray and contains `ops`, `input()` and `output()` function pointers dereferenced on every forwarded packet, yielding an arbitrary-write/control-flow-hijack primitive.\nA:H - The premature free of a live routing cache entry causes immediate use-after-free on the packet forwarding path, reliably producing an oops or panic, and can be repeated at will."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:29:35.677Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/4c167af9f6b5ae4a5dbc243d5983c295ccc2e43c"
        },
        {
          "url": "https://git.kernel.org/stable/c/012df10717da02367aaf92c65f9c89db206c15f4"
        },
        {
          "url": "https://git.kernel.org/stable/c/558b00a30e05753a62ecc7e05e939ca8f0241148"
        },
        {
          "url": "https://git.kernel.org/stable/c/670548c8db44d76e40e1dfc06812bca36a61e9ae"
        },
        {
          "url": "https://git.kernel.org/stable/c/9e0f0430389be7696396c62f037be4bf72cf93e3"
        }
      ],
      "title": "netfilter: nft_flow_offload: reset dst in route object after setting up flow",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-27403",
    "datePublished": "2024-05-17T11:40:17.992Z",
    "dateReserved": "2024-02-25T13:47:42.681Z",
    "dateUpdated": "2026-08-05T11:29:35.677Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/4c167af9f6b5ae4a5dbc243d5983c295ccc2e43c\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/012df10717da02367aaf92c65f9c89db206c15f4\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/558b00a30e05753a62ecc7e05e939ca8f0241148\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/670548c8db44d76e40e1dfc06812bca36a61e9ae\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/9e0f0430389be7696396c62f037be4bf72cf93e3\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T00:34:52.105Z\"}}, {\"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-27403\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-05-17T17:17:07.998820Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-05-23T19:01:24.691Z\"}, \"title\": \"CISA ADP Vulnrichment\"}], \"cna\": {\"title\": \"netfilter: nft_flow_offload: reset dst in route object after setting up flow\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 7.8, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerability lives in the nftables flow_offload expression, which requires local nftables/netlink configuration (flowtable + FORWARD-chain rule + conntrack zone rules) to set up and to force the failing insert. Per kernel scoring convention netfilter/nftables is treated as Local, even though the final trigger is a forwarded packet.\\nAC:L - The attacker deterministically forces `flow_offload_add()` to return -EEXIST because the flow_offload_tuple hash key excludes the conntrack zone, so two zone-separated conntracks with the same 5-tuple and ingress ifindex always collide. No race and no uncontrolled memory-layout condition is involved.\\nPR:L - Configuring the flowtable and rules only needs CAP_NET_ADMIN evaluated via `netlink_net_capable()`, which an unprivileged user obtains with `unshare -Urn`; forwarded traffic can then be generated entirely inside that namespace with veth pairs.\\nUI:N - The attacker sets up the namespace, nftables ruleset and traffic themselves; no victim action of any kind is needed.\\nS:U - The corruption is confined to kernel memory managed by the same kernel security authority; no VM, IOMMU or sandbox boundary is crossed.\\nC:H - The dst refcount underflow frees a `struct dst_entry` that remains referenced by skbs and the route cache, giving a use-after-free on a heap object the attacker can reclaim and read back, enabling disclosure of arbitrary kernel memory.\\nI:H - The freed dst is reclaimable via heap spray and contains `ops`, `input()` and `output()` function pointers dereferenced on every forwarded packet, yielding an arbitrary-write/control-flow-hijack primitive.\\nA:H - The premature free of a live routing cache entry causes immediate use-after-free on the packet forwarding path, reliably producing an oops or panic, and can be repeated at will.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"a3c90f7a2323b331ae816d5b0633e68148e25d04\", \"lessThan\": \"4c167af9f6b5ae4a5dbc243d5983c295ccc2e43c\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a3c90f7a2323b331ae816d5b0633e68148e25d04\", \"lessThan\": \"012df10717da02367aaf92c65f9c89db206c15f4\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a3c90f7a2323b331ae816d5b0633e68148e25d04\", \"lessThan\": \"558b00a30e05753a62ecc7e05e939ca8f0241148\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a3c90f7a2323b331ae816d5b0633e68148e25d04\", \"lessThan\": \"670548c8db44d76e40e1dfc06812bca36a61e9ae\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a3c90f7a2323b331ae816d5b0633e68148e25d04\", \"lessThan\": \"9e0f0430389be7696396c62f037be4bf72cf93e3\", \"versionType\": \"git\"}], \"programFiles\": [\"include/net/netfilter/nf_flow_table.h\", \"net/netfilter/nf_flow_table_core.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"4.16\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"4.16\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"5.15.150\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.15.*\"}, {\"status\": \"unaffected\", \"version\": \"6.1.80\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.1.*\"}, {\"status\": \"unaffected\", \"version\": \"6.6.19\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.7.7\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.7.*\"}, {\"status\": \"unaffected\", \"version\": \"6.8\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"include/net/netfilter/nf_flow_table.h\", \"net/netfilter/nf_flow_table_core.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/4c167af9f6b5ae4a5dbc243d5983c295ccc2e43c\"}, {\"url\": \"https://git.kernel.org/stable/c/012df10717da02367aaf92c65f9c89db206c15f4\"}, {\"url\": \"https://git.kernel.org/stable/c/558b00a30e05753a62ecc7e05e939ca8f0241148\"}, {\"url\": \"https://git.kernel.org/stable/c/670548c8db44d76e40e1dfc06812bca36a61e9ae\"}, {\"url\": \"https://git.kernel.org/stable/c/9e0f0430389be7696396c62f037be4bf72cf93e3\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnetfilter: nft_flow_offload: reset dst in route object after setting up flow\\n\\ndst is transferred to the flow object, route object does not own it\\nanymore.  Reset dst in route object, otherwise if flow_offload_add()\\nfails, error path releases dst twice, leading to a refcount underflow.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.15.150\", \"versionStartIncluding\": \"4.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.1.80\", \"versionStartIncluding\": \"4.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.19\", \"versionStartIncluding\": \"4.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.7.7\", \"versionStartIncluding\": \"4.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.8\", \"versionStartIncluding\": \"4.16\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T11:29:35.677Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-27403\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:29:35.677Z\", \"dateReserved\": \"2024-02-25T13:47:42.681Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-05-17T11:40:17.992Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…