{"answers":{"affected":"It affects 1 product.","exploited":"There is no known exploitation of CVE-2026-64142 in the wild and no public exploit code.","fix":"Apply the vendor's patch.","what":"CVE-2026-64142 is a critical use after free vulnerability in Linux kernel, published on 19 Jul 2026. An attacker can exploit it over the internet without logging in, with no action from the victim."},"fix_prompt":"Check this codebase for CVE-2026-64142 and fix it if it is affected.\n\nWhat it is: CVE-2026-64142 is a critical use after free vulnerability in Linux kernel, published on 19 Jul 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.\nExploitation: There is no known exploitation of CVE-2026-64142 in the wild and no public exploit code.\n\nAffected product: Linux kernel. No package-level version data is available, so check the vendor advisory linked from the reference page.\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-64142/ (Markdown: https://insights.sbomify.com/CVE-2026-64142/index.md)","id":"CVE-2026-64142","markdown":"https://insights.sbomify.com/CVE-2026-64142/index.md","name":"CVE-2026-64142","record":{"aliases":["BELL-CVE-2026-64142","DEBIAN-CVE-2026-64142","GHSA-jcg5-p7gf-vq99","UBUNTU-CVE-2026-64142"],"analysis":{"component_type":"kernel","fix_type":"patch","impacts":["code_execution","denial_of_service"],"network_reachable":"yes","non_default_config":false,"product_category":"Linux kernel SMB server","requires_auth":"none","summary":"Race conditions in the Linux kernel ksmbd durable scavenger allow use-after-free, potentially leading to code execution or denial of service.","user_interaction":"not_required","vuln_class":"use_after_free"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"Linux","cpe":[{"product":"linux_kernel","vendor":"linux"}],"cvss":{"score":9.8,"severity":"critical","source":"cna","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"},"cwes":[{"id":"CWE-416","name":"Use After Free"}],"description":"In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: close durable scavenger races against m_fp_list lookups\n\nksmbd_durable_scavenger() has two related races against any walker\nthat iterates f_ci-\u003em_fp_list, including ksmbd_lookup_fd_inode()\n(used by ksmbd_vfs_rename) and the share-mode checks in\nfs/smb/server/smb_common.c.\n\n(1) fp-\u003enode list-head reuse.  Durable-preserved handles can remain\nlinked on f_ci-\u003em_fp_list after session teardown so share-mode checks\nstill see them while the handle is reconnectable.  The scavenger\ncollected expired handles by adding fp-\u003enode to a local\nscavenger_list after removing them from the global durable idr.\nBecause fp-\u003enode is the same list_head used by m_fp_list,\nlist_add(\u0026fp-\u003enode, \u0026scavenger_list) overwrites the m_fp_list links\nand corrupts both lists.  CONFIG_DEBUG_LIST can report this on the\nshare-mode walk path.\n\n(2) Refcount race against m_fp_list walkers.  The scavenger qualifies\nan expired durable handle with atomic_read(\u0026fp-\u003erefcount) \u003e 1 and\nfp-\u003econn under global_ft.lock, removes fp from global_ft, then drops\nglobal_ft.lock before unlinking fp from m_fp_list and freeing it.\nDuring that gap fp is still linked on m_fp_list with f_state ==\nFP_INITED.  ksmbd_lookup_fd_inode() under m_lock read calls\nksmbd_fp_get() (atomic_inc_not_zero on refcount that is still 1) and\ntakes a live reference; the scavenger then unlinks and frees fp\nwhile the holder owns a reference, leading to UAF on the holder's\nsubsequent ksmbd_fd_put() and on any field reads performed by a\nconcurrent share-mode walker that iterates m_fp_list without taking\nksmbd_fp_get() (smb_check_perm_dleases-like paths).\n\nFix both:\n\n  * Stop reusing fp-\u003enode as a scavenger-private list node.  Remove\n    one expired handle from global_ft under global_ft.lock, take an\n    explicit transient reference, drop the lock, unlink fp-\u003enode\n    from m_fp_list under f_ci-\u003em_lock, then drop both the durable\n    lifetime and transient references with atomic_sub_and_test(2,\n    \u0026fp-\u003erefcount).  If the scavenger is the last putter the close\n    runs there; otherwise an in-flight holder that already raced\n    through the m_fp_list lookup owns the final close via its\n    ksmbd_fd_put() path.  The one-at-a-time disposal can rescan the\n    durable idr when multiple handles expire in the same pass, but\n    durable scavenging is a background expiration path and the final\n    full scan recomputes min_timeout before the next wait.\n\n  * Clear fp-\u003epersistent_id inside __ksmbd_remove_durable_fd() right\n    after idr_remove(), so a delayed final close from a holder that\n    snatched fp does not re-issue idr_remove() on a persistent id\n    that idr_alloc_cyclic() in ksmbd_open_durable_fd() may have\n    already handed out to a brand-new durable handle.\n\n  * Bypass the per-conn open_files_count decrement in\n    __put_fd_final() when fp is detached from any session table\n    (fp-\u003econn cleared by session_fd_check() at durable preserve --\n    paired with the volatile_id clear at unpublish, so checking\n    fp-\u003econn alone is sufficient).  The walker that owns the final\n    close runs from an unrelated work-\u003econn whose\n    stats.open_files_count never tracked this durable fp; without\n    this guard the holder would underflow that unrelated counter.\n\nThe two races are folded into one patch because patch (1) alone\ncleans up the corrupted list but leaves a deterministic UAF window\nfor m_fp_list walkers that the transient-reference and\npersistent_id discipline in (2) close; bisecting onto an\nintermediate state would land on a UAF that pre-patch chaos merely\nmade less reproducible.\n\nValidation:\n  * CONFIG_DEBUG_LIST coverage for the list_head reuse path.\n  * KASAN-enabled direct SMB2 durable-handle coverage that exercised\n    ksmbd_durable_scavenger() and non-NULL ksmbd_lookup_fd_inode()\n    returns while durable handles expired under concurrent rename\n    lookups, with no KASAN, UAF, list-corruption, ODEBUG, or WARNING\n    reports.\n---truncated---","ecosystems":[],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":true,"headline":"ksmbd: close durable scavenger races against m_fp_list lookups","id":"CVE-2026-64142","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":null,"product":"linux:linux_kernel","products":["linux:linux_kernel"],"type":"use_after_free","year":"2026"},"n_packages":0,"n_references":5,"next":{"headline":"platform/x86: uniwill-laptop: Do not enable the charging limit even when forced","id":"CVE-2026-64143"},"packages":[],"prev":{"headline":"ksmbd: fix null pointer dereference in compare_guid_key()","id":"CVE-2026-64141"},"products":["Linux"],"published":"2026-07-19","related":[{"cvss_score":8.8,"headline":"Linux Kernel Out-of-Bounds Write","id":"CVE-2026-53266","kev_date_added":"2026-09-18","published":"2026-06-25"},{"cvss_score":8.8,"headline":"Linux Kernel Improper Input Validation","id":"CVE-2013-6282","kev_date_added":"2022-09-15","published":"2013-11-19"},{"cvss_score":8.4,"headline":"Linux Kernel Heap-Based Buffer Overflow","id":"CVE-2022-0185","kev_date_added":"2024-08-21","published":"2022-02-11"},{"cvss_score":8.4,"headline":"Linux Kernel Privilege Escalation","id":"CVE-2013-2094","kev_date_added":"2022-09-15","published":"2013-05-14"},{"cvss_score":7.8,"headline":"Linux Kernel Unspecified","id":"CVE-2026-53362","kev_date_added":"2026-08-27","published":"2026-07-04"},{"cvss_score":7.8,"headline":"Linux Kernel Missing Initialization of a Variable","id":"CVE-2026-46300","kev_date_added":"2026-10-28","published":"2026-05-23"},{"cvss_score":7.8,"headline":"Linux Kernel Race Condition","id":"CVE-2025-39964","kev_date_added":"2026-09-18","published":"2025-10-13"}],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":null,"exploitation":null,"technical_impact":null},"state":"PUBLISHED","updated":"2026-08-05","vendors":["Linux"]},"summary":"Race conditions in the Linux kernel ksmbd durable scavenger allow use-after-free, potentially leading to code execution or denial of service.","url":"https://insights.sbomify.com/CVE-2026-64142/"}