CVE-2022-48830 (GCVE-0-2022-48830)
Vulnerability from cvelistv5
Published
2024-07-16 11:44
Modified
2026-08-05 08:52
Summary
In the Linux kernel, the following vulnerability has been resolved: can: isotp: fix potential CAN frame reception race in isotp_rcv() When receiving a CAN frame the current code logic does not consider concurrently receiving processes which do not show up in real world usage. Ziyang Xuan writes: The following syz problem is one of the scenarios. so->rx.len is changed by isotp_rcv_ff() during isotp_rcv_cf(), so->rx.len equals 0 before alloc_skb() and equals 4096 after alloc_skb(). That will trigger skb_over_panic() in skb_put(). ======================================================= CPU: 1 PID: 19 Comm: ksoftirqd/1 Not tainted 5.16.0-rc8-syzkaller #0 RIP: 0010:skb_panic+0x16c/0x16e net/core/skbuff.c:113 Call Trace: <TASK> skb_over_panic net/core/skbuff.c:118 [inline] skb_put.cold+0x24/0x24 net/core/skbuff.c:1990 isotp_rcv_cf net/can/isotp.c:570 [inline] isotp_rcv+0xa38/0x1e30 net/can/isotp.c:668 deliver net/can/af_can.c:574 [inline] can_rcv_filter+0x445/0x8d0 net/can/af_can.c:635 can_receive+0x31d/0x580 net/can/af_can.c:665 can_rcv+0x120/0x1c0 net/can/af_can.c:696 __netif_receive_skb_one_core+0x114/0x180 net/core/dev.c:5465 __netif_receive_skb+0x24/0x1b0 net/core/dev.c:5579 Therefore we make sure the state changes and data structures stay consistent at CAN frame reception time by adding a spin_lock in isotp_rcv(). This fixes the issue reported by syzkaller but does not affect real world operation.
Impacted products
Vendor Product Version
Linux Linux Version: e057dd3fc20ffb3d7f150af46542a51b59b90127
Version: e057dd3fc20ffb3d7f150af46542a51b59b90127
Version: e057dd3fc20ffb3d7f150af46542a51b59b90127
Version: e057dd3fc20ffb3d7f150af46542a51b59b90127
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-03T15:25:01.526Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/7b53d2204ce79b27a878074a77d64f40ec21dbca"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/f90cc68f9f4b5d8585ad5d0a206a9d37ac299ef3"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/5b068f33bc8acfcfd5ea7992a2dafb30d89bad30"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/7c759040c1dd03954f650f147ae7175476d51314"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2022-48830",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T16:57:30.557476Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-11T17:34:11.140Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/can/isotp.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "7b53d2204ce79b27a878074a77d64f40ec21dbca",
              "status": "affected",
              "version": "e057dd3fc20ffb3d7f150af46542a51b59b90127",
              "versionType": "git"
            },
            {
              "lessThan": "f90cc68f9f4b5d8585ad5d0a206a9d37ac299ef3",
              "status": "affected",
              "version": "e057dd3fc20ffb3d7f150af46542a51b59b90127",
              "versionType": "git"
            },
            {
              "lessThan": "5b068f33bc8acfcfd5ea7992a2dafb30d89bad30",
              "status": "affected",
              "version": "e057dd3fc20ffb3d7f150af46542a51b59b90127",
              "versionType": "git"
            },
            {
              "lessThan": "7c759040c1dd03954f650f147ae7175476d51314",
              "status": "affected",
              "version": "e057dd3fc20ffb3d7f150af46542a51b59b90127",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/can/isotp.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.10"
            },
            {
              "lessThan": "5.10",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.101",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.24",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.16.*",
              "status": "unaffected",
              "version": "5.16.10",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.17",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.101",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.24",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.16.10",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.17",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ncan: isotp: fix potential CAN frame reception race in isotp_rcv()\n\nWhen receiving a CAN frame the current code logic does not consider\nconcurrently receiving processes which do not show up in real world\nusage.\n\nZiyang Xuan writes:\n\nThe following syz problem is one of the scenarios. so-\u003erx.len is\nchanged by isotp_rcv_ff() during isotp_rcv_cf(), so-\u003erx.len equals\n0 before alloc_skb() and equals 4096 after alloc_skb(). That will\ntrigger skb_over_panic() in skb_put().\n\n=======================================================\nCPU: 1 PID: 19 Comm: ksoftirqd/1 Not tainted 5.16.0-rc8-syzkaller #0\nRIP: 0010:skb_panic+0x16c/0x16e net/core/skbuff.c:113\nCall Trace:\n \u003cTASK\u003e\n skb_over_panic net/core/skbuff.c:118 [inline]\n skb_put.cold+0x24/0x24 net/core/skbuff.c:1990\n isotp_rcv_cf net/can/isotp.c:570 [inline]\n isotp_rcv+0xa38/0x1e30 net/can/isotp.c:668\n deliver net/can/af_can.c:574 [inline]\n can_rcv_filter+0x445/0x8d0 net/can/af_can.c:635\n can_receive+0x31d/0x580 net/can/af_can.c:665\n can_rcv+0x120/0x1c0 net/can/af_can.c:696\n __netif_receive_skb_one_core+0x114/0x180 net/core/dev.c:5465\n __netif_receive_skb+0x24/0x1b0 net/core/dev.c:5579\n\nTherefore we make sure the state changes and data structures stay\nconsistent at CAN frame reception time by adding a spin_lock in\nisotp_rcv(). This fixes the issue reported by syzkaller but does not\naffect real world operation."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:A - The bug is in isotp_rcv() on the SocketCAN receive path (can_rcv \u2192 can_receive \u2192 can_rcv_filter \u2192 deliver), reached when CAN frames matching a bound ISOTP rx_id arrive on the bus\u2014an adjacent shared-segment network like automotive/industrial CAN, analogous to Bluetooth.\nAC:L - The attacker controls both sides of the race by injecting concurrent First Frame and Consecutive Frame traffic for the same CAN ID so SMP softirq contexts run isotp_rcv_ff() and isotp_rcv_cf() in parallel, as syzkaller demonstrated; no attacker-uncontrollable condition is required.\nPR:N - Classic CAN/ISO-TP reception has no authentication; once a victim ISOTP socket is bound (normal for UDS/diagnostics), an unauthenticated bus peer can trigger the path with no host credentials or capabilities.\nUI:N - Frames are processed automatically in softirq once an ISOTP socket is bound and the CAN interface is up; no victim mount, open, or other interactive action is required.\nS:U - Corruption is confined to in-kernel ISOTP/socket heap state within the same OS security authority; there is no VM escape, IOMMU bypass, or other cross-boundary impact.\nC:H - Concurrent isotp_rcv_ff() can inflate so-\u003erx.len past the fixed rx.buf[MAX_MSG_LENGTH+1] while isotp_rcv_cf() still writes, yielding a heap out-of-bounds access; under kernel OOB/memory-corruption guidance this supports high confidentiality impact.\nI:H - The same unlocked FF/CF race allows out-of-bounds writes into the embedded tpcon buffer and adjacent isotp_sock fields, a heap corruption primitive suitable for integrity/control-flow impact when scored conservatively.\nA:H - The documented race makes alloc_skb()/skb_put() use an inconsistent so-\u003erx.len and triggers skb_over_panic()/BUG in softirq, which is a full kernel availability failure that an adjacent peer can repeat at will."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T08:52:35.367Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/7b53d2204ce79b27a878074a77d64f40ec21dbca"
        },
        {
          "url": "https://git.kernel.org/stable/c/f90cc68f9f4b5d8585ad5d0a206a9d37ac299ef3"
        },
        {
          "url": "https://git.kernel.org/stable/c/5b068f33bc8acfcfd5ea7992a2dafb30d89bad30"
        },
        {
          "url": "https://git.kernel.org/stable/c/7c759040c1dd03954f650f147ae7175476d51314"
        }
      ],
      "title": "can: isotp: fix potential CAN frame reception race in isotp_rcv()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2022-48830",
    "datePublished": "2024-07-16T11:44:13.987Z",
    "dateReserved": "2024-07-16T11:38:08.904Z",
    "dateUpdated": "2026-08-05T08:52:35.367Z",
    "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/7b53d2204ce79b27a878074a77d64f40ec21dbca\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/f90cc68f9f4b5d8585ad5d0a206a9d37ac299ef3\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/5b068f33bc8acfcfd5ea7992a2dafb30d89bad30\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/7c759040c1dd03954f650f147ae7175476d51314\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-03T15:25:01.526Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2022-48830\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-09-10T16:57:30.557476Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-11T12:42:21.232Z\"}}], \"cna\": {\"title\": \"can: isotp: fix potential CAN frame reception race in isotp_rcv()\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 8.8, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:A - The bug is in isotp_rcv() on the SocketCAN receive path (can_rcv \\u2192 can_receive \\u2192 can_rcv_filter \\u2192 deliver), reached when CAN frames matching a bound ISOTP rx_id arrive on the bus\\u2014an adjacent shared-segment network like automotive/industrial CAN, analogous to Bluetooth.\\nAC:L - The attacker controls both sides of the race by injecting concurrent First Frame and Consecutive Frame traffic for the same CAN ID so SMP softirq contexts run isotp_rcv_ff() and isotp_rcv_cf() in parallel, as syzkaller demonstrated; no attacker-uncontrollable condition is required.\\nPR:N - Classic CAN/ISO-TP reception has no authentication; once a victim ISOTP socket is bound (normal for UDS/diagnostics), an unauthenticated bus peer can trigger the path with no host credentials or capabilities.\\nUI:N - Frames are processed automatically in softirq once an ISOTP socket is bound and the CAN interface is up; no victim mount, open, or other interactive action is required.\\nS:U - Corruption is confined to in-kernel ISOTP/socket heap state within the same OS security authority; there is no VM escape, IOMMU bypass, or other cross-boundary impact.\\nC:H - Concurrent isotp_rcv_ff() can inflate so-\u003erx.len past the fixed rx.buf[MAX_MSG_LENGTH+1] while isotp_rcv_cf() still writes, yielding a heap out-of-bounds access; under kernel OOB/memory-corruption guidance this supports high confidentiality impact.\\nI:H - The same unlocked FF/CF race allows out-of-bounds writes into the embedded tpcon buffer and adjacent isotp_sock fields, a heap corruption primitive suitable for integrity/control-flow impact when scored conservatively.\\nA:H - The documented race makes alloc_skb()/skb_put() use an inconsistent so-\u003erx.len and triggers skb_over_panic()/BUG in softirq, which is a full kernel availability failure that an adjacent peer can repeat at will.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"e057dd3fc20ffb3d7f150af46542a51b59b90127\", \"lessThan\": \"7b53d2204ce79b27a878074a77d64f40ec21dbca\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"e057dd3fc20ffb3d7f150af46542a51b59b90127\", \"lessThan\": \"f90cc68f9f4b5d8585ad5d0a206a9d37ac299ef3\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"e057dd3fc20ffb3d7f150af46542a51b59b90127\", \"lessThan\": \"5b068f33bc8acfcfd5ea7992a2dafb30d89bad30\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"e057dd3fc20ffb3d7f150af46542a51b59b90127\", \"lessThan\": \"7c759040c1dd03954f650f147ae7175476d51314\", \"versionType\": \"git\"}], \"programFiles\": [\"net/can/isotp.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"5.10\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"5.10\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"5.10.101\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.10.*\"}, {\"status\": \"unaffected\", \"version\": \"5.15.24\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.15.*\"}, {\"status\": \"unaffected\", \"version\": \"5.16.10\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.16.*\"}, {\"status\": \"unaffected\", \"version\": \"5.17\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"net/can/isotp.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/7b53d2204ce79b27a878074a77d64f40ec21dbca\"}, {\"url\": \"https://git.kernel.org/stable/c/f90cc68f9f4b5d8585ad5d0a206a9d37ac299ef3\"}, {\"url\": \"https://git.kernel.org/stable/c/5b068f33bc8acfcfd5ea7992a2dafb30d89bad30\"}, {\"url\": \"https://git.kernel.org/stable/c/7c759040c1dd03954f650f147ae7175476d51314\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\ncan: isotp: fix potential CAN frame reception race in isotp_rcv()\\n\\nWhen receiving a CAN frame the current code logic does not consider\\nconcurrently receiving processes which do not show up in real world\\nusage.\\n\\nZiyang Xuan writes:\\n\\nThe following syz problem is one of the scenarios. so-\u003erx.len is\\nchanged by isotp_rcv_ff() during isotp_rcv_cf(), so-\u003erx.len equals\\n0 before alloc_skb() and equals 4096 after alloc_skb(). That will\\ntrigger skb_over_panic() in skb_put().\\n\\n=======================================================\\nCPU: 1 PID: 19 Comm: ksoftirqd/1 Not tainted 5.16.0-rc8-syzkaller #0\\nRIP: 0010:skb_panic+0x16c/0x16e net/core/skbuff.c:113\\nCall Trace:\\n \u003cTASK\u003e\\n skb_over_panic net/core/skbuff.c:118 [inline]\\n skb_put.cold+0x24/0x24 net/core/skbuff.c:1990\\n isotp_rcv_cf net/can/isotp.c:570 [inline]\\n isotp_rcv+0xa38/0x1e30 net/can/isotp.c:668\\n deliver net/can/af_can.c:574 [inline]\\n can_rcv_filter+0x445/0x8d0 net/can/af_can.c:635\\n can_receive+0x31d/0x580 net/can/af_can.c:665\\n can_rcv+0x120/0x1c0 net/can/af_can.c:696\\n __netif_receive_skb_one_core+0x114/0x180 net/core/dev.c:5465\\n __netif_receive_skb+0x24/0x1b0 net/core/dev.c:5579\\n\\nTherefore we make sure the state changes and data structures stay\\nconsistent at CAN frame reception time by adding a spin_lock in\\nisotp_rcv(). This fixes the issue reported by syzkaller but does not\\naffect real world operation.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.10.101\", \"versionStartIncluding\": \"5.10\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.15.24\", \"versionStartIncluding\": \"5.10\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.16.10\", \"versionStartIncluding\": \"5.10\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.17\", \"versionStartIncluding\": \"5.10\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T08:52:35.367Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2022-48830\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T08:52:35.367Z\", \"dateReserved\": \"2024-07-16T11:38:08.904Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-07-16T11:44:13.987Z\", \"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…