{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-98261","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2026-09-25T10:25:14.332Z","datePublished":"2026-10-06T08:45:25.361Z","dateUpdated":"2026-10-07T06:49:48.854Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-10-07T06:49:48.854Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ncifs: Fix server use-after-free in cifs_chan_skip_or_disable()\n\nWhen a secondary channel is no longer supported by the server,\ncifs_chan_skip_or_disable() drops the channel reference with\ncifs_put_tcp_session() and then continues to use the server pointer by\ncalling cifs_signal_cifsd_for_reconnect() on it and reading its\nprimary_server pointer. cifs_put_tcp_session() can drop the last\nreference of the channel and tear it down, so both the channel and the\nprimary server (whose reference is also dropped by\ncifs_put_tcp_session()) can be freed before they are signaled for\nreconnect.\n\nSignal the channel and the primary server and capture the primary\nserver pointer before dropping the channel reference with\ncifs_put_tcp_session()."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.1,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:N - The trigger is the SMB2 NEGOTIATE response a remote server sends while a secondary channel reconnects. If it omits SMB2_GLOBAL_CAP_MULTI_CHANNEL with chan_count>1, smb2_reconnect() calls smb3_update_ses_channels(disable_mchan=true) and then cifs_chan_skip_or_disable(). That function drops the channel's last reference and then uses the server.\nAC:H - cifs_put_tcp_session() only SIGKILLs the channel's cifsd thread. clean_demultiplex_info() sleeps at least 125 ms before kfree_sensitive(server), and the freed accesses (set_need_reco, server->primary_server) run a few instructions after the put. The reconnecting thread must be descheduled across that window, which the remote attacker cannot control. The attacker must also be the server or on-path.\nPR:N - The attacker acts as the SMB server or an on-path party and needs no account or privilege on the client. The capability check runs in smb2_reconnect() right after cifs_negotiate_protocol(), before cifs_setup_session() authenticates anything.\nUI:N - An on-path attacker can force a reconnect of an existing multichannel mount and forge the unsigned NEGOTIATE response, so the victim takes no action. Signing and the 3.1.1 preauth hash are checked only after the bug fires.\nS:U - The freed TCP_Server_Info and the code using it are both in the client kernel, so this is a kernel memory-safety issue within the same security authority.\nC:H - After the freed channel TCP_Server_Info is reused, cifs_chan_skip_or_disable() reads server->primary_server out of it and dereferences that pointer. An attacker who controls the reallocated object controls that pointer.\nI:H - cifs_signal_cifsd_for_reconnect() spin-locks and writes tcpStatus first in the freed channel and then through the primary_server pointer read from it. With the memory reallocated, that is a lock and write at an attacker-influenced address.\nA:H - Taking srv_lock and writing tcpStatus in a freed TCP_Server_Info, or following a stale primary_server pointer, can corrupt the slab or oops the client kernel."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/client/smb2pdu.c"],"versions":[{"version":"50e8363ecc85da49764781da90ebffe1a657b370","lessThan":"0338489960ddad6368bce55e8adbc176c523093d","status":"affected","versionType":"git"},{"version":"f591062bdbf4742b7f1622173017f19e927057b0","lessThan":"edd52eae5fcfb8433b6bb0e7cd98db438fe01227","status":"affected","versionType":"git"},{"version":"f591062bdbf4742b7f1622173017f19e927057b0","lessThan":"fcc0a935bb6e37ecbf7e4335061309f896f35780","status":"affected","versionType":"git"},{"version":"f591062bdbf4742b7f1622173017f19e927057b0","lessThan":"7a1b27780b113583a94256d58dabfe7c0d9286e7","status":"affected","versionType":"git"},{"version":"f591062bdbf4742b7f1622173017f19e927057b0","lessThan":"717e0a25036b6c92cecace30913b2d874a4c22b8","status":"affected","versionType":"git"},{"version":"d61ba1d71ea6039eca7ada870bf3f0c3c8fc12e4","status":"affected","versionType":"git"},{"version":"6.6.15","lessThan":"6.6.158","status":"affected","versionType":"semver"},{"version":"6.7.3","lessThan":"6.8","status":"affected","versionType":"semver"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/client/smb2pdu.c"],"versions":[{"version":"6.8","status":"affected"},{"version":"0","lessThan":"6.8","status":"unaffected","versionType":"semver"},{"version":"6.6.158","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.112","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.18.54","lessThanOrEqual":"6.18.*","status":"unaffected","versionType":"semver"},{"version":"7.2.8","lessThanOrEqual":"7.2.*","status":"unaffected","versionType":"semver"},{"version":"7.3-rc4","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6.15","versionEndExcluding":"6.6.158"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8","versionEndExcluding":"6.12.112"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8","versionEndExcluding":"6.18.54"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8","versionEndExcluding":"7.2.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8","versionEndExcluding":"7.3-rc4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7.3"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/0338489960ddad6368bce55e8adbc176c523093d"},{"url":"https://git.kernel.org/stable/c/edd52eae5fcfb8433b6bb0e7cd98db438fe01227"},{"url":"https://git.kernel.org/stable/c/fcc0a935bb6e37ecbf7e4335061309f896f35780"},{"url":"https://git.kernel.org/stable/c/7a1b27780b113583a94256d58dabfe7c0d9286e7"},{"url":"https://git.kernel.org/stable/c/717e0a25036b6c92cecace30913b2d874a4c22b8"}],"title":"cifs: Fix server use-after-free in cifs_chan_skip_or_disable()","x_generator":{"engine":"bippy-1.2.0"}}}}