CVE-2026-23428 (GCVE-0-2026-23428)
Vulnerability from cvelistv5
Published
2026-04-03 15:15
Modified
2026-08-05 12:21
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: ksmbd: fix use-after-free of share_conf in compound request smb2_get_ksmbd_tcon() reuses work->tcon in compound requests without validating tcon->t_state. ksmbd_tree_conn_lookup() checks t_state == TREE_CONNECTED on the initial lookup path, but the compound reuse path bypasses this check entirely. If a prior command in the compound (SMB2_TREE_DISCONNECT) sets t_state to TREE_DISCONNECTED and frees share_conf via ksmbd_share_config_put(), subsequent commands dereference the freed share_conf through work->tcon->share_conf. KASAN report: [ 4.144653] ================================================================== [ 4.145059] BUG: KASAN: slab-use-after-free in smb2_write+0xc74/0xe70 [ 4.145415] Read of size 4 at addr ffff88810430c194 by task kworker/1:1/44 [ 4.145772] [ 4.145867] CPU: 1 UID: 0 PID: 44 Comm: kworker/1:1 Not tainted 7.0.0-rc3+ #60 PREEMPTLAZY [ 4.145871] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [ 4.145875] Workqueue: ksmbd-io handle_ksmbd_work [ 4.145888] Call Trace: [ 4.145892] <TASK> [ 4.145894] dump_stack_lvl+0x64/0x80 [ 4.145910] print_report+0xce/0x660 [ 4.145919] ? __pfx__raw_spin_lock_irqsave+0x10/0x10 [ 4.145928] ? smb2_write+0xc74/0xe70 [ 4.145931] kasan_report+0xce/0x100 [ 4.145934] ? smb2_write+0xc74/0xe70 [ 4.145937] smb2_write+0xc74/0xe70 [ 4.145939] ? __pfx_smb2_write+0x10/0x10 [ 4.145942] ? _raw_spin_unlock+0xe/0x30 [ 4.145945] ? ksmbd_smb2_check_message+0xeb2/0x24c0 [ 4.145948] ? smb2_tree_disconnect+0x31c/0x480 [ 4.145951] handle_ksmbd_work+0x40f/0x1080 [ 4.145953] process_one_work+0x5fa/0xef0 [ 4.145962] ? assign_work+0x122/0x3e0 [ 4.145964] worker_thread+0x54b/0xf70 [ 4.145967] ? __pfx_worker_thread+0x10/0x10 [ 4.145970] kthread+0x346/0x470 [ 4.145976] ? recalc_sigpending+0x19b/0x230 [ 4.145980] ? __pfx_kthread+0x10/0x10 [ 4.145984] ret_from_fork+0x4fb/0x6c0 [ 4.145992] ? __pfx_ret_from_fork+0x10/0x10 [ 4.145995] ? __switch_to+0x36c/0xbe0 [ 4.145999] ? __pfx_kthread+0x10/0x10 [ 4.146003] ret_from_fork_asm+0x1a/0x30 [ 4.146013] </TASK> [ 4.146014] [ 4.149858] Allocated by task 44: [ 4.149953] kasan_save_stack+0x33/0x60 [ 4.150061] kasan_save_track+0x14/0x30 [ 4.150169] __kasan_kmalloc+0x8f/0xa0 [ 4.150274] ksmbd_share_config_get+0x1dd/0xdd0 [ 4.150401] ksmbd_tree_conn_connect+0x7e/0x600 [ 4.150529] smb2_tree_connect+0x2e6/0x1000 [ 4.150645] handle_ksmbd_work+0x40f/0x1080 [ 4.150761] process_one_work+0x5fa/0xef0 [ 4.150873] worker_thread+0x54b/0xf70 [ 4.150978] kthread+0x346/0x470 [ 4.151071] ret_from_fork+0x4fb/0x6c0 [ 4.151176] ret_from_fork_asm+0x1a/0x30 [ 4.151286] [ 4.151332] Freed by task 44: [ 4.151418] kasan_save_stack+0x33/0x60 [ 4.151526] kasan_save_track+0x14/0x30 [ 4.151634] kasan_save_free_info+0x3b/0x60 [ 4.151751] __kasan_slab_free+0x43/0x70 [ 4.151861] kfree+0x1ca/0x430 [ 4.151952] __ksmbd_tree_conn_disconnect+0xc8/0x190 [ 4.152088] smb2_tree_disconnect+0x1cd/0x480 [ 4.152211] handle_ksmbd_work+0x40f/0x1080 [ 4.152326] process_one_work+0x5fa/0xef0 [ 4.152438] worker_thread+0x54b/0xf70 [ 4.152545] kthread+0x346/0x470 [ 4.152638] ret_from_fork+0x4fb/0x6c0 [ 4.152743] ret_from_fork_asm+0x1a/0x30 [ 4.152853] [ 4.152900] The buggy address belongs to the object at ffff88810430c180 [ 4.152900] which belongs to the cache kmalloc-96 of size 96 [ 4.153226] The buggy address is located 20 bytes inside of [ 4.153226] freed 96-byte region [ffff88810430c180, ffff88810430c1e0) [ 4.153549] [ 4.153596] The buggy address belongs to the physical page: [ 4.153750] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff88810430ce80 pfn:0x10430c [ 4.154000] flags: 0x ---truncated---
Impacted products
Vendor Product Version
Linux Linux Version: eb947403518ea3d93f6d89264bb1f5416bb0c7d0
Version: 854156d12caa9d36de1cf5f084591c7686cc8a9d
Version: 5005bcb4219156f1bf7587b185080ec1da08518e
Version: 5005bcb4219156f1bf7587b185080ec1da08518e
Version: 5005bcb4219156f1bf7587b185080ec1da08518e
Version: 5005bcb4219156f1bf7587b185080ec1da08518e
Version: 5005bcb4219156f1bf7587b185080ec1da08518e
Version: d1066c1b3663401cd23c0d6e60cdae750ce00c0f
Version: 5.15.121   
Version: 6.1.36   
Version: 6.3.10   
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/smb/server/smb2pdu.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "d08417981155883068b7260d9500ca306a03edac",
              "status": "affected",
              "version": "eb947403518ea3d93f6d89264bb1f5416bb0c7d0",
              "versionType": "git"
            },
            {
              "lessThan": "eae0dc86f71e6f3294c0cd7ffc05039258d243af",
              "status": "affected",
              "version": "854156d12caa9d36de1cf5f084591c7686cc8a9d",
              "versionType": "git"
            },
            {
              "lessThan": "806f13752652216db0c309392b4db3e64eeed4f2",
              "status": "affected",
              "version": "5005bcb4219156f1bf7587b185080ec1da08518e",
              "versionType": "git"
            },
            {
              "lessThan": "c742b46a153d3ff95ff0825ab1950c87b9e14470",
              "status": "affected",
              "version": "5005bcb4219156f1bf7587b185080ec1da08518e",
              "versionType": "git"
            },
            {
              "lessThan": "7f7468fd2a7554cea91b7d430335a3dbf01dcc09",
              "status": "affected",
              "version": "5005bcb4219156f1bf7587b185080ec1da08518e",
              "versionType": "git"
            },
            {
              "lessThan": "a5929c2020ce54e1dcbd1078c0f30b8aaf73c105",
              "status": "affected",
              "version": "5005bcb4219156f1bf7587b185080ec1da08518e",
              "versionType": "git"
            },
            {
              "lessThan": "c33615f995aee80657b9fdfbc4ee7f49c2bd733d",
              "status": "affected",
              "version": "5005bcb4219156f1bf7587b185080ec1da08518e",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "d1066c1b3663401cd23c0d6e60cdae750ce00c0f",
              "versionType": "git"
            },
            {
              "lessThan": "5.15.203",
              "status": "affected",
              "version": "5.15.121",
              "versionType": "semver"
            },
            {
              "lessThan": "6.1.167",
              "status": "affected",
              "version": "6.1.36",
              "versionType": "semver"
            },
            {
              "lessThan": "6.4",
              "status": "affected",
              "version": "6.3.10",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/smb/server/smb2pdu.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.4"
            },
            {
              "lessThan": "6.4",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.203",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.167",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.130",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.78",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.20",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.19.*",
              "status": "unaffected",
              "version": "6.19.10",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.0",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.203",
                  "versionStartIncluding": "5.15.121",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.167",
                  "versionStartIncluding": "6.1.36",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.130",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.78",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.20",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19.10",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "6.3.10",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix use-after-free of share_conf in compound request\n\nsmb2_get_ksmbd_tcon() reuses work-\u003etcon in compound requests without\nvalidating tcon-\u003et_state. ksmbd_tree_conn_lookup() checks t_state ==\nTREE_CONNECTED on the initial lookup path, but the compound reuse path\nbypasses this check entirely.\n\nIf a prior command in the compound (SMB2_TREE_DISCONNECT) sets t_state\nto TREE_DISCONNECTED and frees share_conf via ksmbd_share_config_put(),\nsubsequent commands dereference the freed share_conf through\nwork-\u003etcon-\u003eshare_conf.\n\nKASAN report:\n\n[    4.144653] ==================================================================\n[    4.145059] BUG: KASAN: slab-use-after-free in smb2_write+0xc74/0xe70\n[    4.145415] Read of size 4 at addr ffff88810430c194 by task kworker/1:1/44\n[    4.145772]\n[    4.145867] CPU: 1 UID: 0 PID: 44 Comm: kworker/1:1 Not tainted 7.0.0-rc3+ #60 PREEMPTLAZY\n[    4.145871] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014\n[    4.145875] Workqueue: ksmbd-io handle_ksmbd_work\n[    4.145888] Call Trace:\n[    4.145892]  \u003cTASK\u003e\n[    4.145894]  dump_stack_lvl+0x64/0x80\n[    4.145910]  print_report+0xce/0x660\n[    4.145919]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10\n[    4.145928]  ? smb2_write+0xc74/0xe70\n[    4.145931]  kasan_report+0xce/0x100\n[    4.145934]  ? smb2_write+0xc74/0xe70\n[    4.145937]  smb2_write+0xc74/0xe70\n[    4.145939]  ? __pfx_smb2_write+0x10/0x10\n[    4.145942]  ? _raw_spin_unlock+0xe/0x30\n[    4.145945]  ? ksmbd_smb2_check_message+0xeb2/0x24c0\n[    4.145948]  ? smb2_tree_disconnect+0x31c/0x480\n[    4.145951]  handle_ksmbd_work+0x40f/0x1080\n[    4.145953]  process_one_work+0x5fa/0xef0\n[    4.145962]  ? assign_work+0x122/0x3e0\n[    4.145964]  worker_thread+0x54b/0xf70\n[    4.145967]  ? __pfx_worker_thread+0x10/0x10\n[    4.145970]  kthread+0x346/0x470\n[    4.145976]  ? recalc_sigpending+0x19b/0x230\n[    4.145980]  ? __pfx_kthread+0x10/0x10\n[    4.145984]  ret_from_fork+0x4fb/0x6c0\n[    4.145992]  ? __pfx_ret_from_fork+0x10/0x10\n[    4.145995]  ? __switch_to+0x36c/0xbe0\n[    4.145999]  ? __pfx_kthread+0x10/0x10\n[    4.146003]  ret_from_fork_asm+0x1a/0x30\n[    4.146013]  \u003c/TASK\u003e\n[    4.146014]\n[    4.149858] Allocated by task 44:\n[    4.149953]  kasan_save_stack+0x33/0x60\n[    4.150061]  kasan_save_track+0x14/0x30\n[    4.150169]  __kasan_kmalloc+0x8f/0xa0\n[    4.150274]  ksmbd_share_config_get+0x1dd/0xdd0\n[    4.150401]  ksmbd_tree_conn_connect+0x7e/0x600\n[    4.150529]  smb2_tree_connect+0x2e6/0x1000\n[    4.150645]  handle_ksmbd_work+0x40f/0x1080\n[    4.150761]  process_one_work+0x5fa/0xef0\n[    4.150873]  worker_thread+0x54b/0xf70\n[    4.150978]  kthread+0x346/0x470\n[    4.151071]  ret_from_fork+0x4fb/0x6c0\n[    4.151176]  ret_from_fork_asm+0x1a/0x30\n[    4.151286]\n[    4.151332] Freed by task 44:\n[    4.151418]  kasan_save_stack+0x33/0x60\n[    4.151526]  kasan_save_track+0x14/0x30\n[    4.151634]  kasan_save_free_info+0x3b/0x60\n[    4.151751]  __kasan_slab_free+0x43/0x70\n[    4.151861]  kfree+0x1ca/0x430\n[    4.151952]  __ksmbd_tree_conn_disconnect+0xc8/0x190\n[    4.152088]  smb2_tree_disconnect+0x1cd/0x480\n[    4.152211]  handle_ksmbd_work+0x40f/0x1080\n[    4.152326]  process_one_work+0x5fa/0xef0\n[    4.152438]  worker_thread+0x54b/0xf70\n[    4.152545]  kthread+0x346/0x470\n[    4.152638]  ret_from_fork+0x4fb/0x6c0\n[    4.152743]  ret_from_fork_asm+0x1a/0x30\n[    4.152853]\n[    4.152900] The buggy address belongs to the object at ffff88810430c180\n[    4.152900]  which belongs to the cache kmalloc-96 of size 96\n[    4.153226] The buggy address is located 20 bytes inside of\n[    4.153226]  freed 96-byte region [ffff88810430c180, ffff88810430c1e0)\n[    4.153549]\n[    4.153596] The buggy address belongs to the physical page:\n[    4.153750] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff88810430ce80 pfn:0x10430c\n[    4.154000] flags: 0x\n---truncated---"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 9.8,
            "baseSeverity": "CRITICAL",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - ksmbd is the in-kernel SMB server reachable by remote SMB clients over TCP, typically port 445, and the vulnerable path is driven by SMB2 compound requests. No local access or physical proximity is required.\nAC:L - The attacker controls the SMB2 compound command sequence, including TREE_DISCONNECT followed by a command that reuses work-\u003etcon. This is not a race requiring conditions outside attacker control.\nPR:N - Although the path needs a valid SMB session and tree, ksmbd supports guest/anonymous share deployments, and the highest reasonable exposed SMB deployment can provide that without pre-existing privileges. No local, administrative, or kernel privilege is required.\nUI:N - After the SMB server is exposed, exploitation only requires the attacker to send crafted SMB2 requests. No victim user action is needed.\nS:U - The vulnerability corrupts kernel SMB server state and impacts the same kernel security authority. It does not cross a VM, hypervisor, IOMMU, or sandbox boundary.\nC:H - This is a kernel use-after-free of share_conf, a heap object later dereferenced by SMB handlers. A reclaimed freed object can provide memory disclosure primitives, so confidentiality impact is high.\nI:H - Kernel use-after-free is memory corruption and can plausibly be shaped through heap reuse into write/control-flow corruption. Integrity impact is therefore high.\nA:H - The fix commit includes a KASAN slab-use-after-free report in smb2_write from this path. A remote attacker can crash or destabilize the kernel SMB server host."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:21:41.241Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/d08417981155883068b7260d9500ca306a03edac"
        },
        {
          "url": "https://git.kernel.org/stable/c/eae0dc86f71e6f3294c0cd7ffc05039258d243af"
        },
        {
          "url": "https://git.kernel.org/stable/c/806f13752652216db0c309392b4db3e64eeed4f2"
        },
        {
          "url": "https://git.kernel.org/stable/c/c742b46a153d3ff95ff0825ab1950c87b9e14470"
        },
        {
          "url": "https://git.kernel.org/stable/c/7f7468fd2a7554cea91b7d430335a3dbf01dcc09"
        },
        {
          "url": "https://git.kernel.org/stable/c/a5929c2020ce54e1dcbd1078c0f30b8aaf73c105"
        },
        {
          "url": "https://git.kernel.org/stable/c/c33615f995aee80657b9fdfbc4ee7f49c2bd733d"
        }
      ],
      "title": "ksmbd: fix use-after-free of share_conf in compound request",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-23428",
    "datePublished": "2026-04-03T15:15:14.981Z",
    "dateReserved": "2026-01-13T15:37:46.016Z",
    "dateUpdated": "2026-08-05T12:21:41.241Z",
    "state": "PUBLISHED"
  },
  "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…