CVE-2025-21926 (GCVE-0-2025-21926)
Vulnerability from cvelistv5
Published
2025-04-01 15:40
Modified
2025-05-04 07:24
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: net: gso: fix ownership in __udp_gso_segment In __udp_gso_segment the skb destructor is removed before segmenting the skb but the socket reference is kept as-is. This is an issue if the original skb is later orphaned as we can hit the following bug: kernel BUG at ./include/linux/skbuff.h:3312! (skb_orphan) RIP: 0010:ip_rcv_core+0x8b2/0xca0 Call Trace: ip_rcv+0xab/0x6e0 __netif_receive_skb_one_core+0x168/0x1b0 process_backlog+0x384/0x1100 __napi_poll.constprop.0+0xa1/0x370 net_rx_action+0x925/0xe50 The above can happen following a sequence of events when using OpenVSwitch, when an OVS_ACTION_ATTR_USERSPACE action precedes an OVS_ACTION_ATTR_OUTPUT action: 1. OVS_ACTION_ATTR_USERSPACE is handled (in do_execute_actions): the skb goes through queue_gso_packets and then __udp_gso_segment, where its destructor is removed. 2. The segments' data are copied and sent to userspace. 3. OVS_ACTION_ATTR_OUTPUT is handled (in do_execute_actions) and the same original skb is sent to its path. 4. If it later hits skb_orphan, we hit the bug. Fix this by also removing the reference to the socket in __udp_gso_segment.
Impacted products
Vendor Product Version
Linux Linux Version: ad405857b174ed31a97982bb129c320d03321cf5
Version: ad405857b174ed31a97982bb129c320d03321cf5
Version: ad405857b174ed31a97982bb129c320d03321cf5
Version: ad405857b174ed31a97982bb129c320d03321cf5
Version: ad405857b174ed31a97982bb129c320d03321cf5
Version: ad405857b174ed31a97982bb129c320d03321cf5
Version: ad405857b174ed31a97982bb129c320d03321cf5
Version: ad405857b174ed31a97982bb129c320d03321cf5
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/ipv4/udp_offload.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "9f28205ddb76e86cac418332e952241d85fed0dc",
              "status": "affected",
              "version": "ad405857b174ed31a97982bb129c320d03321cf5",
              "versionType": "git"
            },
            {
              "lessThan": "a2d1cca955ed34873e524cc2e6e885450d262f05",
              "status": "affected",
              "version": "ad405857b174ed31a97982bb129c320d03321cf5",
              "versionType": "git"
            },
            {
              "lessThan": "455217ac9db0cf9349b3933664355e907bb1a569",
              "status": "affected",
              "version": "ad405857b174ed31a97982bb129c320d03321cf5",
              "versionType": "git"
            },
            {
              "lessThan": "e8db70537878e1bb3fd83e5abcc6feefc0587828",
              "status": "affected",
              "version": "ad405857b174ed31a97982bb129c320d03321cf5",
              "versionType": "git"
            },
            {
              "lessThan": "01a83237644d6822bc7df2c5564fc81b0df84358",
              "status": "affected",
              "version": "ad405857b174ed31a97982bb129c320d03321cf5",
              "versionType": "git"
            },
            {
              "lessThan": "084819b0d8b1bd433b90142371eb9450d657f8ca",
              "status": "affected",
              "version": "ad405857b174ed31a97982bb129c320d03321cf5",
              "versionType": "git"
            },
            {
              "lessThan": "c32da44cc9298eaa6109e3fc2c2b4e07cc4bf11b",
              "status": "affected",
              "version": "ad405857b174ed31a97982bb129c320d03321cf5",
              "versionType": "git"
            },
            {
              "lessThan": "ee01b2f2d7d0010787c2343463965bbc283a497f",
              "status": "affected",
              "version": "ad405857b174ed31a97982bb129c320d03321cf5",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/ipv4/udp_offload.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.18"
            },
            {
              "lessThan": "4.18",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.291",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.235",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.179",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.131",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.83",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.19",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.13.*",
              "status": "unaffected",
              "version": "6.13.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.14",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.4.291",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.235",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.179",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.131",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.83",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.19",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.13.7",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.14",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: gso: fix ownership in __udp_gso_segment\n\nIn __udp_gso_segment the skb destructor is removed before segmenting the\nskb but the socket reference is kept as-is. This is an issue if the\noriginal skb is later orphaned as we can hit the following bug:\n\n  kernel BUG at ./include/linux/skbuff.h:3312!  (skb_orphan)\n  RIP: 0010:ip_rcv_core+0x8b2/0xca0\n  Call Trace:\n   ip_rcv+0xab/0x6e0\n   __netif_receive_skb_one_core+0x168/0x1b0\n   process_backlog+0x384/0x1100\n   __napi_poll.constprop.0+0xa1/0x370\n   net_rx_action+0x925/0xe50\n\nThe above can happen following a sequence of events when using\nOpenVSwitch, when an OVS_ACTION_ATTR_USERSPACE action precedes an\nOVS_ACTION_ATTR_OUTPUT action:\n\n1. OVS_ACTION_ATTR_USERSPACE is handled (in do_execute_actions): the skb\n   goes through queue_gso_packets and then __udp_gso_segment, where its\n   destructor is removed.\n2. The segments\u0027 data are copied and sent to userspace.\n3. OVS_ACTION_ATTR_OUTPUT is handled (in do_execute_actions) and the\n   same original skb is sent to its path.\n4. If it later hits skb_orphan, we hit the bug.\n\nFix this by also removing the reference to the socket in\n__udp_gso_segment."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2025-05-04T07:24:43.335Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/9f28205ddb76e86cac418332e952241d85fed0dc"
        },
        {
          "url": "https://git.kernel.org/stable/c/a2d1cca955ed34873e524cc2e6e885450d262f05"
        },
        {
          "url": "https://git.kernel.org/stable/c/455217ac9db0cf9349b3933664355e907bb1a569"
        },
        {
          "url": "https://git.kernel.org/stable/c/e8db70537878e1bb3fd83e5abcc6feefc0587828"
        },
        {
          "url": "https://git.kernel.org/stable/c/01a83237644d6822bc7df2c5564fc81b0df84358"
        },
        {
          "url": "https://git.kernel.org/stable/c/084819b0d8b1bd433b90142371eb9450d657f8ca"
        },
        {
          "url": "https://git.kernel.org/stable/c/c32da44cc9298eaa6109e3fc2c2b4e07cc4bf11b"
        },
        {
          "url": "https://git.kernel.org/stable/c/ee01b2f2d7d0010787c2343463965bbc283a497f"
        }
      ],
      "title": "net: gso: fix ownership in __udp_gso_segment",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-21926",
    "datePublished": "2025-04-01T15:40:57.882Z",
    "dateReserved": "2024-12-29T08:45:45.788Z",
    "dateUpdated": "2025-05-04T07:24:43.335Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-21926\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-04-01T16:15:23.350\",\"lastModified\":\"2025-04-01T20:26:01.990\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnet: gso: fix ownership in __udp_gso_segment\\n\\nIn __udp_gso_segment the skb destructor is removed before segmenting the\\nskb but the socket reference is kept as-is. This is an issue if the\\noriginal skb is later orphaned as we can hit the following bug:\\n\\n  kernel BUG at ./include/linux/skbuff.h:3312!  (skb_orphan)\\n  RIP: 0010:ip_rcv_core+0x8b2/0xca0\\n  Call Trace:\\n   ip_rcv+0xab/0x6e0\\n   __netif_receive_skb_one_core+0x168/0x1b0\\n   process_backlog+0x384/0x1100\\n   __napi_poll.constprop.0+0xa1/0x370\\n   net_rx_action+0x925/0xe50\\n\\nThe above can happen following a sequence of events when using\\nOpenVSwitch, when an OVS_ACTION_ATTR_USERSPACE action precedes an\\nOVS_ACTION_ATTR_OUTPUT action:\\n\\n1. OVS_ACTION_ATTR_USERSPACE is handled (in do_execute_actions): the skb\\n   goes through queue_gso_packets and then __udp_gso_segment, where its\\n   destructor is removed.\\n2. The segments\u0027 data are copied and sent to userspace.\\n3. OVS_ACTION_ATTR_OUTPUT is handled (in do_execute_actions) and the\\n   same original skb is sent to its path.\\n4. If it later hits skb_orphan, we hit the bug.\\n\\nFix this by also removing the reference to the socket in\\n__udp_gso_segment.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net: gso: correcci\u00f3n de propiedad en __udp_gso_segment. En __udp_gso_segment, el destructor de skb se elimina antes de segmentar el skb, pero la referencia del socket se mantiene intacta. Esto supone un problema si el skb original queda hu\u00e9rfano posteriormente, ya que podemos encontrarnos con el siguiente error: \u00a1ERROR del kernel en ./include/linux/skbuff.h:3312! (skb_orphan) RIP: 0010:ip_rcv_core+0x8b2/0xca0 Rastreo de llamadas: ip_rcv+0xab/0x6e0 __netif_receive_skb_one_core+0x168/0x1b0 process_backlog+0x384/0x1100 __napi_poll.constprop.0+0xa1/0x370 net_rx_action+0x925/0xe50 Lo anterior puede suceder despu\u00e9s de una secuencia de eventos al usar OpenVSwitch, cuando una acci\u00f3n OVS_ACTION_ATTR_USERSPACE precede a una acci\u00f3n OVS_ACTION_ATTR_OUTPUT: 1. Se maneja OVS_ACTION_ATTR_USERSPACE (en do_execute_actions): el skb pasa por queue_gso_packets y luego __udp_gso_segment, donde se elimina su destructor. 2. Los datos de los segmentos se copian y se env\u00edan al espacio de usuario. 3. Se gestiona OVS_ACTION_ATTR_OUTPUT (en do_execute_actions) y se env\u00eda el mismo skb original a su ruta. 4. Si posteriormente se encuentra con skb_orphan, se detecta el error. Para solucionarlo, elimine tambi\u00e9n la referencia al socket en __udp_gso_segment.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/01a83237644d6822bc7df2c5564fc81b0df84358\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/084819b0d8b1bd433b90142371eb9450d657f8ca\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/455217ac9db0cf9349b3933664355e907bb1a569\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/9f28205ddb76e86cac418332e952241d85fed0dc\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/a2d1cca955ed34873e524cc2e6e885450d262f05\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/c32da44cc9298eaa6109e3fc2c2b4e07cc4bf11b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/e8db70537878e1bb3fd83e5abcc6feefc0587828\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ee01b2f2d7d0010787c2343463965bbc283a497f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


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.
  • 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…