{"api_version":"1","generated_at":"2026-10-01T07:10:01+00:00","cve":"CVE-2026-98112","urls":{"html":"https://cve.report/CVE-2026-98112","api":"https://cve.report/api/cve/CVE-2026-98112.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-98112","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-98112"},"summary":{"title":"ksmbd: fix listener task lifetime on netdev events","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix listener task lifetime on netdev events\n\nThe listener thread exits when its listening socket is shutdown. The\nnetdevice notifier shuts down the socket before calling kthread_stop(), so\nthe task_struct can be freed before kthread_stop() gets its reference.\n\nCreate the listener in a stopped state and hold an extra task_struct\nreference until kthread_stop_put() completes. Also stop and release\nlisteners before freeing their interface records during TCP teardown.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-09-25 11:17:42","updated_at":"2026-09-30 14:10:59"},"problem_types":[],"metrics":[{"version":"3.1","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","score":"7.8","severity":"HIGH","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH","attackVector":"LOCAL","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"7.8","severity":"HIGH","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","data":{"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"}}],"references":[{"url":"https://git.kernel.org/stable/c/a506290f59e1c6ce9ac0a13158640bb8fee93471","name":"https://git.kernel.org/stable/c/a506290f59e1c6ce9ac0a13158640bb8fee93471","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/40581f10c1e56238b157af5f260b8f9518a0cbc1","name":"https://git.kernel.org/stable/c/40581f10c1e56238b157af5f260b8f9518a0cbc1","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-98112","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98112","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3316a8fc840d82fad5efcf76ad0ea3f76fdca209 40581f10c1e56238b157af5f260b8f9518a0cbc1 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3316a8fc840d82fad5efcf76ad0ea3f76fdca209 a506290f59e1c6ce9ac0a13158640bb8fee93471 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.19","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.19 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.7 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc2 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"98112","cve":"CVE-2026-98112","epss":"0.001200000","percentile":"0.016440000","score_date":"2026-09-27","updated_at":"2026-09-28 00:02:23"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["fs/smb/server/transport_tcp.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"40581f10c1e56238b157af5f260b8f9518a0cbc1","status":"affected","version":"3316a8fc840d82fad5efcf76ad0ea3f76fdca209","versionType":"git"},{"lessThan":"a506290f59e1c6ce9ac0a13158640bb8fee93471","status":"affected","version":"3316a8fc840d82fad5efcf76ad0ea3f76fdca209","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["fs/smb/server/transport_tcp.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"6.19"},{"lessThan":"6.19","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.7","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3-rc2","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.7","versionStartIncluding":"6.19","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc2","versionStartIncluding":"6.19","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix listener task lifetime on netdev events\n\nThe listener thread exits when its listening socket is shutdown. The\nnetdevice notifier shuts down the socket before calling kthread_stop(), so\nthe task_struct can be freed before kthread_stop() gets its reference.\n\nCreate the listener in a stopped state and hold an extra task_struct\nreference until kthread_stop_put() completes. Also stop and release\nlisteners before freeing their interface records during TCP teardown."}],"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 bug is kthread_stop() on an already-exited listener, reached from ksmbd_netdev_event(NETDEV_DOWN). That event comes from local rtnetlink link up/down. No SMB message carries attacker data to this path, so it is not remote.\nAC:L - The attacker starts the race: kernel_sock_shutdown() makes the listener exit before kthread_stop() takes its reference. The attacker can repeat it at will by toggling a same-named link. Each NETDEV_UP makes create_socket() start a new listener, so the narrow window can be retried as many times as needed.\nPR:L - ksmbd_netdev_event() matches iface names without checking the network namespace. An unprivileged user in `unshare -Urn` can down their own `lo`, or a veth named like a host interface, with only CAP_NET_ADMIN inside the user namespace, and so run the teardown of the host listener.\nUI:N - Nothing is needed from an admin or victim beyond ksmbd already running. The attacker sends the netlink link up/down requests themselves inside their own network namespace.\nS:U - This is memory corruption inside the kernel that leads to local privilege escalation or a crash within the same kernel authority. It does not cross a hypervisor or other separate security boundary.\nC:H - After the listener task_struct is freed and reallocated, kthread_stop() reads to_kthread(k) and kthread->result through a dangling pointer. The attacker can control the reclaimed object, which enables kernel memory disclosure.\nI:H - kthread_stop() writes to freed memory: it increments the refcount, does set_bit() on kthread->flags, then calls wake_up_process() and put_task_struct() on the stale task. This corrupts whatever object has reclaimed the memory and can be groomed into a write or an extra free.\nA:H - Using the freed task_struct/kthread in kthread_stop() under rtnl can cause an oops, a refcount underflow or a hang. Each trigger also tears down ksmbd's real host listener on port 445, so the server stops accepting connections."}]}],"providerMetadata":{"dateUpdated":"2026-09-25T14:42:06.515Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/40581f10c1e56238b157af5f260b8f9518a0cbc1"},{"url":"https://git.kernel.org/stable/c/a506290f59e1c6ce9ac0a13158640bb8fee93471"}],"title":"ksmbd: fix listener task lifetime on netdev events","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-98112","datePublished":"2026-09-25T10:35:59.319Z","dateReserved":"2026-09-25T10:25:14.316Z","dateUpdated":"2026-09-25T14:42:06.515Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-25 11:17:42","lastModifiedDate":"2026-09-30 14:10:59","problem_types":[],"metrics":{"cvssMetricV31":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH","attackVector":"LOCAL","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"},"exploitabilityScore":1.8,"impactScore":5.9}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"98112","Ordinal":"1","Title":"ksmbd: fix listener task lifetime on netdev events","CVE":"CVE-2026-98112","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"98112","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix listener task lifetime on netdev events\n\nThe listener thread exits when its listening socket is shutdown. The\nnetdevice notifier shuts down the socket before calling kthread_stop(), so\nthe task_struct can be freed before kthread_stop() gets its reference.\n\nCreate the listener in a stopped state and hold an extra task_struct\nreference until kthread_stop_put() completes. Also stop and release\nlisteners before freeing their interface records during TCP teardown.","Type":"Description","Title":"ksmbd: fix listener task lifetime on netdev events"}]}}}